Lora水肥机通讯文档

来自东骏科技波塞冬平台开发者文档
跳转至: 导航搜索

Lora水肥机远程控制网关

水肥机的远程控制系统通讯部分,由网关和控制终端组成。改设计主要描述网关和通讯终端之见的通讯协议。

指令结构

设备号 会话ID 指令号 有效载荷 校验和
3byte 2byte 1byte 5byte 1byte
  1. 设备号:终端设备的编号,网关和终端通信均以该编号作为身份依据。
  2. 会话ID:网关每次通讯的标识符
  3. 指令号:设备的通讯操作指令
  4. 有效载荷:通讯的业务数据
  5. 校验和:设备号-有效载荷的数据加和

加密方式

由于Lora通讯本身的保密性较强,要进行干扰和窃听比较困难,由于单片机性能有限,加密本身会增加通讯数据的处理时间造成通讯时延。而且该设备应用在农业空旷的区域,被窃听破坏的可能性很低,所以不考虑使用推车锁类似复杂方式进行通讯协议层面的加密。

业务指令

心跳指令

心跳指令是网关设备用来确定设备是否存在,功能是否可行的指令

指令号:0x01

方向:网关->设备

心跳字符 时间戳
1byte 4byte
'I'代表发送心跳 UNIX时间戳,精确到秒


心跳响应

终端收到心跳后,应该在100ms内进行响应,表明终端存在,并通知终端状态

指令号:0xB1

方向:终端->网关

心跳字符 设备状态 电池电量 设备温度
1byte 1byte 2byte 1byte
'A'代表响应心跳 0x01-代表设备正常,0x02代表设备动作故障,0x03-代表低电量,0x04-代表设备过度过高,0x05-代表设备进水 0xFFFF-代表不支持设备电量读取,否则以以0.01V为单位表示电压,1200表示12V 0xFF表示不支持温度,温度显示偏移-50,单位为1摄氏度


动作指令

该指令是网关用来控制终端动作的指令,可以定义1-255 个不同的动作,动作不带参数,如果需要参数,则通过不同的动作进行配置,比如需要开启电磁阀1分钟,和需要开启电磁阀5分钟,可以配置成动作1-电磁阀开启1分钟,动作2-电磁阀开启5分钟,具体的配置在服务端和终端设备的程序中定义

指令:0x02

方向:网关->终端

动作指令 动作确认 时间戳
1byte 1byte 3byte
0x01-0xFE 0xFF-动作指令,用来判断接受到的指令无误 UNIX时间戳后三位


动作指令响应

当设备接收到动作指令后进行动作,之后返回动作结果,该指令的响应超时时间为1S,超过1S后网关认为响应超时进行重发,重发几次无响应则认为通讯失败

指令:0xB2

方向:终端->网关

动作响应 失败错误码 返回下发的时间戳
1byte 1byte 3byte
动作结果0xA1-成功,0xB2-失败 具体指令定义 下发的时间戳后三位

水肥机目前没有错误码,因为电磁阀较简单,无法知道失败原因,没有错误码为0x00