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

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":200331687,"value":"20","flag":"b"}]}

       开关型(下行字段使用value,不是switcher):

       {"sensorDatas":[{"sensorsId":200331688,"value":"1","flag":"c"}]}

       字符串型(下行字段使用value,不是str)):

       {"sensorDatas":[{"sensorsId":200331686,"value":"world","flag":"a"}]}