跳到主要内容

设备上云协议

前言

本协议基于 Mqtt 通信协议。

重要说明:本协议中的 “010203040506070809” 是每台网关设备的 UID(唯一序列号),简称 UID。UID 一共 18 个字符,实际上是 9 个字节的十六进制数字。

结构图:

layout

一、Mqtt通信

MqttServerAddr:服务器域名,待定
MqttServerPort:端口号,固定为1883
MqttClientID:"010203040506070809"
MqttUserName:待定(用于设备接入云服务器Mqtt broker的认证信息,详情看第三节设备认证信息入库)
MqttPassword:待定(用于设备接入云服务器Mqtt broker的认证信息,详情看第三节设备认证信息入库)
MqttPubTopic: "/010203040506070809/UpLink"
MqttSubTopic: "/010203040506070809/DownLink"
  • 上面的 PubTopic 用于设备接向云端发送传感器数据
  • 上面的 SubTopic 用于设备接收云端下发的字符串信息,例如应答“OK”。SubTopic 目前用不上。

二、设备向 ➡ 云端发送传感数据(MqttPubTopic )

例1. 温湿度传感器:

{"LrAddr":1,"Dev":"TH","Data":{"Humi":79.7,"Temp":26.8},"Err":null}
//Humi(湿度):79.7%
//Humi(温度):26.8摄氏度

"TH":用来标识这是一款温湿度传感器

本例中无线 LoRa 传感器的地址:1

例2. 光照传感器:

{"LrAddr":2,"Dev":"LIGHT","Data":{"Lux":773},"Err":null}
//Lux(光照强度):773 lx(勒克斯)

"LIGHT":用来标识这是一款光照传感器

本例中无线 LoRa 传感器的地址:2

例3. 甲醛传感器:

{"LrAddr":3,"Dev":"CH2O","Data":{"Ch":35},"Err":null}
//Ch(甲醛浓度值):35 ppm

"CH2O":用来标识这是一款甲醛传感器

本例中无线 LoRa 传感器的地址:3

例4. Tvoc传感器:

{"LrAddr":4,"Dev":"TVOC","Data":{"Tv":42},"Err":null}
//Tv(Tvoc浓度值):42 ppm

"TVOC":用来标识这是一款Tvoc传感器

本例中无线 LoRa 传感器的地址:4

例5. 红外电子周界:

{"LrAddr":5,"Dev":"BODY","Data":{"Bo":false},"Err":null}
//Bo(是否检测到有人入侵):false(未检测到)

"BODY":用来标识这是一款红外电子周界人体入侵感应报警器

本例中无线 LoRa 传感器的地址:5

三、关于网关设备认证信息入库的说明

网关设备通过 mqtt 接入云端时,需要如下两个信息作为认证:

  • MqttUserName
  • MqttPassword

这两个信息可以在现场部署的时候通过电脑和 USB 线写入 LoRa 转 4G 网关。

MqttUserName 和 MqttPassword 作为认证信息(类似登录账号和密码),需要云端提供,提供方法在不同阶段可不同:

(1)跳过认证(仅测试阶段):

MqttUserName 和 MqttPassword 不做认证,任意填

(2)Web管理端生成,手工写入设备(适合网关设备数量不多的时候):

后台提供一个 Web 页面,人工通过电脑浏览器网页输入网关的 UID (例如:"010203040506070809")后,后台通过某种算法生成一对 MqttUserName 和 MqttPassword ,然后人工通过电脑和 USB 线将这两个信息写入网关设备。

(3)自动生成(适合大批量生产网关设备的时候):

后台开放一个服务端口,比如 TCP Server 端口,在工厂自动化生产过程中,每台网关设备会自动把 UID 信息通过 TCP 通信发送给 Server,Server 收到信息后通过某种算法生成一对 MqttUserName 和 MqttPassword ,然后通过 TCP 应答回复给网关设备即可。具体实现细节找时间沟通。

四、关于云平台如何将 Json 数据和具体传感器对应的说明

这里举例说明,例如上面例子中的甲醛传感器:

云平台会收到甲醛传感器通过网关上报的数据,比如:{"LrAddr":3,"Dev":"CH2O","Data":{"Ch":35},"Err":null}

首先,通过 UID : "010203040506070809",我们可以定位到是哪台网关设备

然后,通过 LrAddr = 3,我们可以定位到是该网关设备下的 LoRa 节点地址=3 的 LoRa 采集器

最后,通过 Dev = "CH2O",我们可以定位到是该 LoRa 采集器下的甲醛传感器的数据