JSON协议说明
TCP JSON协议
协议概述
此协议定义的是一种基于TCP协议之上的JSON格式数据传输的应用层协议。区别于TCP自定义协议,TCP协议可以灵活发送单个或多个数据,可以发送历史数据(断点续传)。下文会有对JSON字段的详细解释。
连接地址
每一种协议的连接服务器地址和端口号都不一样,请转到协议接口参考界面。
序列号
在平台创建设备时需要一个序列号,该序列号由塔石提供,设备建立TCP连接之后应第一时间发送序列号,DTU的设置上一般设置为登陆包或注册包(可以查看网关连接案例)。
心跳包
心跳包用户维持链接的长连接,空闲时一般为一分钟发送一次。平台识别的心跳包为Q,当平台收到心跳包Q时,会立即响应A发送给设备,设备可通过心跳包交互来判断与设备的连接情况。
平台响应设备说明
设备发送的每包数据(序列号除外),平台都会予以响应,如果格式正确,平台响应0x00(十六进制),如果格式错误,平台会响应0x01(十六进制)。
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":200331687,"value":"20","flag":"b"}]}
开关型(下行字段使用value,不是switcher):
{"sensorDatas":[{"sensorsId":200331688,"value":"1","flag":"c"}]}
字符串型(下行字段使用value,不是str)):
{"sensorDatas":[{"sensorsId":200331686,"value":"world","flag":"a"}]}