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字段,数据使用当前时间。

JSON字符串

JavaScript

  1. {
  2.   "sensorDatas":[
  3.     {//数值型、档位型
  4.       "sensorsId":200319085,
  5.       "flag":"A",
  6.       "addTime":"2019-10-18 09:48:01",
  7.       "value":10.0
  8.     },
  9.     {//开关型
  10.       "sensorsId":200319086,
  11.       "flag":"B",
  12.       "addTime":"2019-10-18 09:48:01",
  13.       "switcher":1
  14.     },
  15.     {//定位型
  16.       "sensorsId":200319087,
  17.       "flag":"C",
  18.       "addTime":"2019-10-18 09:48:01",
  19.       "lat":39.9,
  20.       "lng":116.3
  21.     },
  22.     {//字符串型
  23.       "sensorsId":200319092,
  24.       "flag":"H",
  25.       "addTime":"2019-10-18 09:48:01",
  26.       "str":"10.0"
  27.     }
  28.   ]
  29. }

      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"}