|
|
@@ -160,3 +160,442 @@ stamp 时间戳:20180301211805
|
|
|
```
|
|
|
|
|
|
|
|
|
+### 杀虫灯c#语言接收数据案例
|
|
|
+
|
|
|
+### 杀虫灯java语言接收数据案例
|
|
|
+
|
|
|
+### 杀虫灯nodejs语言接收数据案例
|
|
|
+
|
|
|
+### 杀虫灯python语言接收数据案例
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+# 物联网杀虫灯通讯约定
|
|
|
+
|
|
|
+## 1. 物联网杀虫灯通讯约定
|
|
|
+
|
|
|
+### 1.1. 简要描述
|
|
|
+
|
|
|
+本文档主要用于阐述物联网杀虫灯与服务器端进行交互的通讯细节,其中包括物联网杀虫灯与服务器之间使用的通信协议和交互通讯协议两部分。
|
|
|
+
|
|
|
+### 1.2. 设备主题
|
|
|
+
|
|
|
+关于主题 `sub` 和 `pub` 的说明,注意不要混淆:
|
|
|
+
|
|
|
+- 除离线消息主题:`/yfkj/scd/offline/<imei>` 以外,
|
|
|
+- 上行通信主题中是 `pub`、下行通信主题中是 `sub`,即:
|
|
|
+ - 所有上行通信的主题:`/yfkj/scd/pub/<imei>`
|
|
|
+ - 所有下行通信的主题:`/yfkj/scd/sub/<imei>`
|
|
|
+
|
|
|
+其中 `<imei>` 指设备唯一标识。
|
|
|
+
|
|
|
+### 1.3. 术语和缩略语
|
|
|
+
|
|
|
+| 缩写 | 描述 |
|
|
|
+|-----------|-------------------------------|
|
|
|
+| imei | 杀虫灯设备的通讯 ID,可作为设备唯一标识 |
|
|
|
+| MQTT | 公开的物联网通信协议 |
|
|
|
+| QOS | 0,1,2 -- MQTT 的质量协议 |
|
|
|
+| cmd | 协议命令字标识,为消息报文分类 |
|
|
|
+| status | 状态报告协议命令字,报文中使用 |
|
|
|
+| data | 数据报告协议命令字,报文中使用 |
|
|
|
+| paramconf | 参数配置协议命令字,报文中使用 |
|
|
|
+| serverconf| 服务器配置协议命令字,报文中使用 |
|
|
|
+| read | 服务器下发查询协议命令字,报文中使用 |
|
|
|
+| power | 服务器下发开关协议命令字,报文中使用 |
|
|
|
+| timer | 服务器下发定时协议命令字,报文中使用 |
|
|
|
+
|
|
|
+## 2. 通信协议
|
|
|
+
|
|
|
+### 2.1. MQTT 协议版本
|
|
|
+
|
|
|
+物联网杀虫灯使用主流公开的 MQTT 协议 V3.1.1 版本作为通讯协议,默认 QOS 质量等级为 0。服务器端需要实现 MQTT 协议的转发和解析,数据的上报为 JSON 格式。
|
|
|
+
|
|
|
+MQTT V3.1.1 协议详见附件。
|
|
|
+
|
|
|
+### 2.2. 报文分类
|
|
|
+
|
|
|
+- **状态**
|
|
|
+ - `status`:状态报告
|
|
|
+
|
|
|
+- **数据**
|
|
|
+ - `data`:数据报告
|
|
|
+
|
|
|
+- **参数配置**
|
|
|
+ - `paramconf`:杀虫灯参数配置报告
|
|
|
+
|
|
|
+- **服务器配置**
|
|
|
+ - `serverconf`:MQTT 服务器配置报告
|
|
|
+
|
|
|
+- **开关**
|
|
|
+ - `power`:下发开关控制
|
|
|
+
|
|
|
+- **定时**
|
|
|
+ - `timer`:下发工作定时时长
|
|
|
+
|
|
|
+- **查询**
|
|
|
+ - `read`:下发查询
|
|
|
+
|
|
|
+根据 MQTT 的特性,下发服务不必回复,可以通过设置下位机的 QOS 为 2 或 1 来保证命令必达,也可以通过服务器主动下发查询状态和下发查询配置指令,来判断是否执行成功。
|
|
|
+
|
|
|
+### 2.3. 报文结构
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "<协议命令字>",
|
|
|
+ "ext": {<message>}
|
|
|
+}
|
|
|
+```
|
|
|
+协议命令字 cmd:为报文分类定义的英文标识。
|
|
|
+ext:为各个命令字对应的信息内容。
|
|
|
+以上数据内容为 JSON 格式。
|
|
|
+这个 Markdown 文档包含了所有你需要的信息,并且格式清晰易读。如果有任何进一步的需求或问题,请随时告诉我!
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+2.4. 上行通信
|
|
|
+2.4.1. 状态报告
|
|
|
+报文结构
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "status",
|
|
|
+ "ext": {
|
|
|
+ "imei": "865650043207246",
|
|
|
+ "iccid": "89680401101700076471",
|
|
|
+ "csq": 29,
|
|
|
+ "dtype": 1,
|
|
|
+ "dver": "1.0.0",
|
|
|
+ "stm8vs": "1.0.0",
|
|
|
+ "ws": 0,
|
|
|
+ "ds": 1,
|
|
|
+ "tt": 7,
|
|
|
+ "tbs": 0,
|
|
|
+ "lps": 0,
|
|
|
+ "rps": 0,
|
|
|
+ "tps": 0,
|
|
|
+ "dps": 0,
|
|
|
+ "bt": 25,
|
|
|
+ "tcs": 0,
|
|
|
+ "st": 20,
|
|
|
+ "et": 22,
|
|
|
+ "info": 1,
|
|
|
+ "clt": 30,
|
|
|
+ "dattim": 30,
|
|
|
+ "lng": "113.67336",
|
|
|
+ "lat": "34.815187",
|
|
|
+ "stamp": "20180301211805"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+字段说明
|
|
|
+字段 描述
|
|
|
+imei 通讯板唯一 ID
|
|
|
+iccid SIM 卡卡号
|
|
|
+csq 信号强度
|
|
|
+dtype 设备类型(杀虫灯设备类型为 2)
|
|
|
+dver 设备固件版本
|
|
|
+stm8vs 主板代码版本号
|
|
|
+ws 工作状态 (0: 待机, 1: 工作, 2: 充电)
|
|
|
+ds 设备开关 (0: 关机, 1: 开机)
|
|
|
+tt 定时时长 (0~7 小时), 0 表示常亮
|
|
|
+tbs 灯管状态 (0: 正常, 1: 保护)
|
|
|
+lps 光控状态 (0: 正常, 1: 保护)
|
|
|
+rps 雨控状态 (0: 正常, 1: 保护)
|
|
|
+tps 温控状态 (0: 正常, 1: 保护)
|
|
|
+dps 倾倒状态 (0: 正常, 1: 保护)
|
|
|
+bt 主板温度 (默认 25 度)
|
|
|
+tcs 时控开关 (0: 关闭时控, 1: 开启时控)
|
|
|
+st 时控开始时间 (单位:小时)
|
|
|
+et 时控结束时间 (单位:小时)
|
|
|
+info 重启信息 (1: 正常, 2: socket 重连, 3: MQTT 重连)
|
|
|
+clt 清虫间隔时间 (单位:分钟)
|
|
|
+dattim 数据上传时间 (单位:分钟)
|
|
|
+lng 经度
|
|
|
+lat 纬度
|
|
|
+stamp 时间戳:20180301211805
|
|
|
+
|
|
|
+2.4.2. 数据报告
|
|
|
+报文结构:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "data",
|
|
|
+ "ext": {
|
|
|
+ "imei": "865650043207246",
|
|
|
+ "ds": 1,
|
|
|
+ "ws": 0,
|
|
|
+ "tt": 7,
|
|
|
+ "tbs": 0,
|
|
|
+ "lps": 0,
|
|
|
+ "rps": 0,
|
|
|
+ "tps": 0,
|
|
|
+ "dps": 0,
|
|
|
+ "cv": 18000,
|
|
|
+ "bv": 12800,
|
|
|
+ "at": "0",
|
|
|
+ "ah": "0",
|
|
|
+ "ct": 1280,
|
|
|
+ "clt": 30,
|
|
|
+ "lng": "113.67336",
|
|
|
+ "lat": "34.815187",
|
|
|
+ "rcnt": 2,
|
|
|
+ "err": 1280,
|
|
|
+ "tcs": 0,
|
|
|
+ "st": 20,
|
|
|
+ "et": 22,
|
|
|
+ "stamp": "20180301211805"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+字段说明:
|
|
|
+imei
|
|
|
+通讯板唯一 ID
|
|
|
+ds
|
|
|
+设备开关 0:关机, 1:开机
|
|
|
+ws
|
|
|
+工作状态 0:待机,1:工作,2:充电
|
|
|
+tt
|
|
|
+定时时长(0~ 7)小时, 0:表示常亮
|
|
|
+tbs
|
|
|
+灯管状态 0:正常, 1:保护
|
|
|
+lps
|
|
|
+光控状态 0:正常, 1:保护
|
|
|
+rps
|
|
|
+雨控状态 0:正常, 1:保护
|
|
|
+tps
|
|
|
+温控状态 0:正常, 1:保护
|
|
|
+dps
|
|
|
+倾倒状态 0:正常, 1:保护
|
|
|
+cv
|
|
|
+充电电压 (单位:mV)
|
|
|
+bv
|
|
|
+电池电压 (单位:mV)
|
|
|
+at
|
|
|
+环境温度
|
|
|
+ah
|
|
|
+环境湿度
|
|
|
+ct
|
|
|
+电击次数 (每上报一次数据消息(data 消息)后清零)
|
|
|
+clt
|
|
|
+清虫间隔时间 (单位:分钟)
|
|
|
+lat
|
|
|
+纬度
|
|
|
+lng
|
|
|
+经度
|
|
|
+rcnt
|
|
|
+设备重启次数
|
|
|
+err
|
|
|
+重启原因
|
|
|
+tcs
|
|
|
+时控开关 0:关闭时控, 1:开启时控
|
|
|
+st
|
|
|
+时控开始时间
|
|
|
+et
|
|
|
+时控结束时间
|
|
|
+stamp
|
|
|
+时间戳:20180301211805
|
|
|
+
|
|
|
+3.交互协议
|
|
|
+3.1.下行通信
|
|
|
+3.1.1. 下发查询请求:
|
|
|
+查询状态报文结构:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "read",
|
|
|
+ "ext": "status"
|
|
|
+}
|
|
|
+```
|
|
|
+字段说明:
|
|
|
+status
|
|
|
+请求读取状态信息
|
|
|
+data
|
|
|
+请求读取数据信息
|
|
|
+paramconf
|
|
|
+请求读取参数配置信息
|
|
|
+
|
|
|
+3.1.2. 参数配置
|
|
|
+报文结构:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "paramconf",
|
|
|
+ "ext": {
|
|
|
+ "vsunset": 6000,
|
|
|
+ "uvoff": 12500,
|
|
|
+ "vfloat": 13600,
|
|
|
+ "unlowt": 10,
|
|
|
+ "battype": 0,
|
|
|
+ "tt": 4,
|
|
|
+ "stamp": "20200713182415",
|
|
|
+ "vstart": 12000,
|
|
|
+ "imei": "865650043207246",
|
|
|
+ "overtemp": 70,
|
|
|
+ "unovert": 50,
|
|
|
+ "uvon": 11500,
|
|
|
+ "lowtemp": 5,
|
|
|
+ "vsunrise": 1500,
|
|
|
+ "vcutof": 14400,
|
|
|
+ "vrecharge": 12800
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+字段说明:
|
|
|
+imei
|
|
|
+通讯板唯一 ID
|
|
|
+tt
|
|
|
+定时时长 (0~ 7)小时, 0:表示常亮
|
|
|
+uvon
|
|
|
+电池欠压锁定电压 (单位:mv)
|
|
|
+uvoff
|
|
|
+电池欠压解锁电压 (单位:mv)
|
|
|
+vfloat
|
|
|
+电池浮充电压 (单位:mv)
|
|
|
+vcutof
|
|
|
+电池充电截至电压 (单位:mv)
|
|
|
+overtemp
|
|
|
+高温保护 (单位:℃) (默认:70)
|
|
|
+lowtemp
|
|
|
+低温保护 (单位:℃) (默认:5)
|
|
|
+battype
|
|
|
+电池类型 0:铅蓄电池,1:锂电池
|
|
|
+stamp
|
|
|
+时间戳:20180301211805
|
|
|
+vsunset
|
|
|
+日出电压 (单位:mv)
|
|
|
+vsunrise
|
|
|
+日落电压 (单位:mv)
|
|
|
+vrecharge
|
|
|
+充电回滞电压 (单位:mv)
|
|
|
+vstart
|
|
|
+开机电压 (单位:mv)
|
|
|
+unover
|
|
|
+解除高温保护(单位:℃) (默认:50)
|
|
|
+unlowt
|
|
|
+解除低温保护(单位:℃) (默认:10)
|
|
|
+
|
|
|
+3.1.3. 控制指令下发
|
|
|
+下发开机控制报文结构:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "power",
|
|
|
+ "ext": {
|
|
|
+ "ds": 1
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+下发光控报文结构:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "timer",
|
|
|
+ "ext": {
|
|
|
+ "tt": 4
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+下发时控报文结构:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "timectr",
|
|
|
+ "ext": {
|
|
|
+ "timctrl": 1,
|
|
|
+ "st": 20,
|
|
|
+ "et": 22
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+下发清虫时间配置报文结构:(自清虫设备下发才能执行,可以查看版本号,版本号中含有ZQC的设备可以执行)
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "clear",
|
|
|
+ "ext": {
|
|
|
+ "clt": 30
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+下发重启报文结构:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "reboot"
|
|
|
+}
|
|
|
+```
|
|
|
+下发上报时间间隔:
|
|
|
+```json
|
|
|
+{
|
|
|
+ "ext": {
|
|
|
+ "dattim": 35
|
|
|
+ },
|
|
|
+ "cmd": "dattim"
|
|
|
+}
|
|
|
+```
|
|
|
+字段说明:
|
|
|
+cmd
|
|
|
+请求的内容类别,分别如下
|
|
|
+power
|
|
|
+设备电源开关 ds=1:为开;ds=0:为关;
|
|
|
+timer
|
|
|
+设备工作时长 tt=0:为常亮模式,tt(1~7):为设置的定时工作时长
|
|
|
+timectr
|
|
|
+时控参数
|
|
|
+clear
|
|
|
+清虫时间
|
|
|
+reboot
|
|
|
+重启
|
|
|
+## timer 指令与参数配置指令的 tt 是一样的,此处单独列出来是方便光控模式的批量控制。
|
|
|
+
|
|
|
+3.2. 遗愿消息
|
|
|
+设备默认设置配置了 MQTT 遗愿消息。
|
|
|
+当设备异常下线时(客户端断开前未向服务器发送 DISCONNECT 消息),MQTT 消息服务器会 发布异常下线设备的遗愿消息
|
|
|
+订阅设备遗愿消息,可实现对设备在线和离线状态的监控;
|
|
|
+/yfkj/scd/offline/<imei>
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "cmd": "offline",
|
|
|
+ "ext": {
|
|
|
+ "imei": "865650043207246"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+
|
|
|
+# 常见问题解答
|
|
|
+
|
|
|
+## 1. 问: 杀虫量怎么计算的
|
|
|
+
|
|
|
+**答**: 在 `data` 数据中,`ct` 字段就是代表杀虫数(电击次数),范围是 0~255。每次上报一次数据消息(`data` 消息)后,该字段会清零并不累积计算。
|
|
|
+
|
|
|
+## 2. 问: 数据上传间隔是否可以调整
|
|
|
+
|
|
|
+**答**: 可以从平台上进行调整,时间单位是分钟。
|
|
|
+
|
|
|
+## 3. 问: 是否能区分击杀的是什么害虫
|
|
|
+
|
|
|
+**答**: 不能区分。设备只能计算击杀数量,无法区分出击杀的具体害虫种类。
|
|
|
+
|
|
|
+## 4. 问: 设备数据传输方式
|
|
|
+
|
|
|
+**答**: 设备有两种数据传输方式:
|
|
|
+
|
|
|
+1. **HTTP 对接方式**:平台对平台的方式,通过服务器转发完成。客户需要提供接收数据的接口,被动接收数据。我们这边主动推送数据,推送数据频率与设备设置的数据上传时间有关。
|
|
|
+
|
|
|
+2. **MQTT 方式**:需要客户那边启动一个 MQTT 服务。设备通过 MQTT 传输协议直接上传到客户服务器,客户只需要从 MQTT 服务取数据即可。
|
|
|
+
|
|
|
+## 5. 问: 设备数据都包含有哪些数据
|
|
|
+
|
|
|
+**答**: 设备数据包含以下信息:
|
|
|
+
|
|
|
+- 环境温湿度
|
|
|
+- 经纬度
|
|
|
+- 雨控状态
|
|
|
+- 温控状态
|
|
|
+- 工作状态
|
|
|
+- 定时模式等数据
|
|
|
+
|