scd-sq.md 16 KB

杀虫灯http协议

1. 简要描述

本文档主要用于阐述杀虫灯与服务器端进行交互的通讯细节。

2. 通信描述

需要接收方编写接口以接收数据,使用 POST 请求。数据分为 statusdataoffline 类型,可以共用一个接口,并根据 cmd 字段进行解析。

3. 状态报告

报文结构

{
  "payload": {
    "cmd": "status",
    "ext": {
      "imei": "865650043207246",
      "iccid": "89860401101700076471",
      "csq": 29,
      "dtype": 1,
      "dver": "1.0.0",
      "stm8vs": "100",
      "ws": 0,
      "ds": 1,
      "tt": 7,
      "tbs": 0,
      "lps": 0,
      "rps": 0,
      "tps": 0,
      "dps": 0,
      "bt": 25,
      "tcs": 0,
      "st": 20,
      "et": 2,
      "clt": 30,
      "dattim": 30,
      "voltval": 40,
      "gps": 1,
      "lng": "113.67336",
      "lat": "34.815187",
      "stamp": "20180301211805",
      "info": 2
    }
  },
  "topic": "/yfkj/scd/pub/865650043207246"
}

字段说明

字段 描述
imei 通讯板唯一 ID
iccid SIM 卡卡号
csq 信号强度
dtype 设备类型(杀虫灯设备类型为 2)
dver 设备固件版本
stm8vs STM8 主板代码版本号
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 时控结束时间 (单位:小时)
clt 清虫时间间隔 (单位:分钟)
dattim 数据上报时间间隔 (单位:分钟)
voltval 用于内部调试
gps 定位方式 (0: 手动定位, 1: GPS 定位, 2: LBS 定位)
lng 经度
lat 纬度
stamp 时间戳:20180301211805
info 用于内部调试
  1. 数据报告 报文结构 json { "payload": { "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": 200, "clt": 30, "gps": 1, "lng": "113.67336", "lat": "34.815187", "rcnt": "1", "err": 2, "tcs": 0, "st": 20, "et": 2, "stamp": "20180301211805" } }, "topic": "/yfkj/scd/pub/865650043207246" }

字段说明

字段 描述
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 电击次数 范围 0~255 (每上报一次数据消息后清零)
clt 清虫时间间隔 (单位:分钟)
gps 定位方式 (0: 手动定位, 1: GPS 定位, 2: LBS 定位)
lat 纬度
lng 经度
rcnt 设备重启次数
err 用于内部调试
st 时控开始时间 (单位:小时)
et 时控结束时间 (单位:小时)
stamp 时间戳:20180301211805

遗愿消息

设备默认设置了 MQTT 遗愿消息。当设备异常下线时(客户端断开前未向服务器发送 DISCONNECT 消息),MQTT 消息服务器会发布异常下线设备的遗愿消息。

订阅设备遗愿消息,可实现对设备在线和离线状态的监控。

离线消息主题 /yfkj/scd/offline/

报文结构

{
  "payload": {
    "cmd": "offline",
    "ext": {
      "imei": "865650043207246"
    }
  },
  "topic": "/yfkj/scd/pub/865650043207246"
}

杀虫灯c#语言接收数据案例

杀虫灯java语言接收数据案例

杀虫灯java语言接收数据案例

杀虫灯nodejs语言接收数据案例

杀虫灯nodejs语言接收数据案例

杀虫灯python语言接收数据案例

杀虫灯python语言接收数据案例

杀虫灯mqtt协议

1. 物联网杀虫灯通讯约定

1.1. 简要描述

本文档主要用于阐述物联网杀虫灯与服务器端进行交互的通讯细节,其中包括物联网杀虫灯与服务器之间使用的通信协议和交互通讯协议两部分。

1.2. 设备主题

关于主题 subpub 的说明,注意不要混淆:

  • 除离线消息主题:/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. 报文结构

{
  "cmd": "<协议命令字>",
  "ext": {<message>}
}

协议命令字 cmd:为报文分类定义的英文标识。 ext:为各个命令字对应的信息内容。 以上数据内容为 JSON 格式。

上行通信

2.4.1. 状态报告 报文结构

{
  "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. 数据报告 报文结构:

{
  "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.1.下行通信 3.1.1. 下发查询请求: 查询状态报文结构:

{
  "cmd": "read",
  "ext": "status"
}

字段说明

命令字 描述
status 请求读取状态信息
data 请求读取数据信息
paramconf 请求读取参数配置信息

3.1.2. 参数配置 报文结构:

{
  "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)

控制指令下发

下发开机控制报文结构:

{
  "cmd": "power",
  "ext": {
    "ds": 1
  }
}

下发光控报文结构:

{
  "cmd": "timer",
  "ext": {
    "tt": 4
  }
}

下发时控报文结构:

{
  "cmd": "timectr",
  "ext": {
    "timctrl": 1,
    "st": 20,
    "et": 22
  }
}

下发清虫时间配置报文结构:(自清虫设备下发才能执行,可以查看版本号,版本号中含有ZQC的设备可以执行)

{
  "cmd": "clear",
  "ext": {
    "clt": 30
  }
}

下发重启报文结构:

{
  "cmd": "reboot"
}

下发上报时间间隔:

{
  "ext": {
    "dattim": 35
  },
  "cmd": "dattim"
}

字段说明

命令字 描述
cmd 请求的内容类别,分别如下:
power 设备电源开关 (ds=1:为开;ds=0:为关)
timer 设备工作时长 (tt=0:为常亮模式,tt(1~7):为设置的定时工作时长)
timectr 时控参数
clear 清虫时间
reboot 重启

timer 指令与参数配置指令的 tt 是一样的,此处单独列出来是方便光控模式的批量控制。

遗愿消息

设备默认设置配置了 MQTT 遗愿消息。 当设备异常下线时(客户端断开前未向服务器发送 DISCONNECT 消息),MQTT 消息服务器会 发布异常下线设备的遗愿消息 订阅设备遗愿消息,可实现对设备在线和离线状态的监控; /yfkj/scd/offline/

{
  "cmd": "offline",
  "ext": {
    "imei": "865650043207246"
  }
}

常见问题解答

1. 问: 杀虫量怎么计算的

: 在 data 数据中,ct 字段就是代表杀虫数(电击次数),范围是 0~255。每次上报一次数据消息(data 消息)后,该字段会清零并不累积计算。

2. 问: 数据上传间隔是否可以调整

: 可以从平台上进行调整,时间单位是分钟。

3. 问: 是否能区分击杀的是什么害虫

: 不能区分。设备只能计算击杀数量,无法区分出击杀的具体害虫种类。

4. 问: 设备数据传输方式

: 设备有两种数据传输方式:

  1. HTTP 对接方式:平台对平台的方式,通过服务器转发完成。客户需要提供接收数据的接口,被动接收数据。我们这边主动推送数据,推送数据频率与设备设置的数据上传时间有关。

  2. MQTT 方式:需要客户那边启动一个 MQTT 服务。设备通过 MQTT 传输协议直接上传到客户服务器,客户只需要从 MQTT 服务取数据即可。

5. 问: 设备数据都包含有哪些数据

: 设备数据包含以下信息:

  • 环境温湿度
  • 经纬度
  • 雨控状态
  • 温控状态
  • 工作状态
  • 定时模式等数据