MQTT协议说明
MQTT协议
协议概述
MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布/订阅信息传输协议。MQTT在时间和空间上,将消息发送者与接受者分离,可以在不可靠的网络环境中进行扩展。适用于设备硬件存储空间有限或网络带宽有限的场景。塔石物联网平台支持设备使用MQTT协议接入。支持3.1.1版本协议,具体的协议说明请下载 MQTT 3.1.1协议文档。
连接域名和端口号
每一种协议的连接服务器地址和端口号都不一样,请转到协议接口参考界面。
客户端ID
发布和订阅是在同一个设备进行时,客户端ID只需要一个,可以直接使用设备序列号当做客户端ID,如果存在多个设备进行订阅,需要在平台获取新的客户端ID。
用户名密码
用户名(User Name):MQTT ;该值为平台固定。
密码(Password):MQTTPW ;该值为平台固定。
SSL/TLS
同时支持明文通道和加密通道连接平台,通道加密支持TLSv1、TLSv1.1、TLSv1.2,明文通讯端口为1883,加密通讯端口为8883,加密的CA证书文件下载地址 。(企业版请咨询客服索取)
发布主题
发布主题:设备序列号,指设备发布上行数据到平台的主题。
订阅主题
订阅主题:设备序列号/+,指设备接收下行数据时订阅的主题。这里利用了通配符的概念,订阅该主题可以接收该设备所有传感器的下行数据(传感器下行数据所使用的主题为序列号/传感器ID)。
JSON格式的消息内容
上行数据字段说明
现有字段:sensorsId、flag、addTime、value、lat、lng、switcher、 str。其中value、lat、lng、switcher、str是数值字段,根据传感器类型不同而不同。ensorsId、flag、addTime是可选字段,如果没有ensorsId或flag字段,数据按照顺序解析,如果没有addTime字段,数据使用当前时间。
JavaScript
- {
- "sensorDatas":[
- {//数值型、档位型
- "sensorsId":200319085,
- "flag":"A",
- "addTime":"2019-10-18 09:48:01",
- "value":10.0
- },
- {//开关型
- "sensorsId":200319086,
- "flag":"B",
- "addTime":"2019-10-18 09:48:01",
- "switcher":1
- },
- {//定位型
- "sensorsId":200319087,
- "flag":"C",
- "addTime":"2019-10-18 09:48:01",
- "lat":39.9,
- "lng":116.3
- },
- {//字符串型
- "sensorsId":200319092,
- "flag":"H",
- "addTime":"2019-10-18 09:48:01",
- "str":"10.0"
- }
- ]
- }
sensorsId:传感器ID,创建传感器时平台自动生成的,具有唯一性且不可编辑。可用作传感器标识(推荐用flag)。
flag:读写标识,自定义,用户传感器标识。不同设备可以使用相同的flag,方便设备端批量设置。
addTime:时间字段,标识数据对应的时间,可以是当前时间,也可以是历史时间,所以可使用该字段发送历史数据(断点续传)。不使用该字段时,默认使用当前时间。
value:数值型或档位型,表示传感器的数值。
lat:定位型,纬度。
lng:定位型,经度。
switcher:开关型,开关(0和1)。
str:字符串型,中文支持GBK编码。
注:时间戳可以加在数组外面,如:{"times":"2020-04-27 17:44:01","sensorDatas":[{"flag":"1","value":27.52},{"flag":"2","value":58.05},{"flag":"3","value":0.00},{"flag":"4","value":0.00}]}
下行数据
字段含义和上行定义一样,以下针对数值型、开关型、字符串型列举下行的JSON格式。
数值型:
{"sensorDatas":[{"sensorsId":200331834,"value":"123","flag":"a"}],"down":"down"}
开关型:
{"sensorDatas":[{"sensorsId":200331835,"switcher":1,"flag":"b"}],"down":"down"}
字符串型(下行字段使用value,不是str)):
{"sensorDatas":[{"sensorsId":200331836,"value":"Holle","flag":"c"}],"down":"down"}