标准编制组经广泛调查研究,认真总结实践经验,参考国内外先进
标准,并在广泛征求意见的基础上,制定本标准。
本标准主要技术内容是:1、标准概述;2、技术标准;3、基础通讯协议;
2.1 通讯双方定义
信息产生端:
信息产生端是指运行在监控设备上的通讯装置,它通过各类传感器收集信息,并可以通过GPRS、3G或 4G网络将信息按一定规律分发到指定位置。
在系统正式通讯之前,通过招标确定的企业,需书面向平台技术支持单位申请登录信息,内容包括信息处理端IP地址、服务端口、服务平台登录信息和厂商识别码等。
信息处理端:
信息处理端是指服务端程序,用于按照既定的通信协议接收由信息产生端发送的数据。
2.2 通讯过程
2.2.1 身份验证
信息产生端在每次向平台发送数据前,须先发送厂商识别码到指定接口,验证通过后,信息产生端可开始发送相关数据到信息处理端;如验证未通过,信息处理端会自动关闭该网络连接,并终止通信过程。
2.2.2 动态数据发送
信息产生端通过身份验证后,可开始向信息处理端发送动态数据。当数据发送出现异常时,信息处理端会自动捕获异常并关闭该Socket连接, 所以信息产生端在推送数据出现异常时必须要有重新连接操作,保证数据通讯的正常运行。所有通讯都使用一问一答的方式,处理状态不成功的数据必须重新发送。
2.2.3 心跳数据包
信息产生端空闲时,为表示设备依然在线,需每分钟发一次心跳数据包,以维持网络连接。
2.2.4 同步平台时间
信息产生端空每小时必须同步一次平台时间,确保设备时钟的准确性。
2.2.5 通讯完成
信息产生端主动关闭连接或 200 秒内未有任何通讯过程,系统将自动关闭连接。
2.3 技术实现
本实现基于标准的Socket通讯技术,其通用的数据帧格式定义如下:
表 2.3.1 通用数据帧
帧头 2byte | 帧长度 4byte | 帧流水号 2byte | 协议版本 1byte | 命令 1byte | 数据载荷 LEN byte | 校验和 1byte |
0x5A55 | 0x0000 ~0xFFFFFF FF | 0x0000 ~0xFFFF | 0x01 | 0x00-0xFF | —— | 0x00~0xFF |
如表 2.3.1 所示,通信帧结构包括帧头子域、帧长度子域、帧流水号子域、协议
版本子域、命令子域、数据载荷子域、校验和子域。其中,帧头为固定的 2 个字节
(0x5A55);帧长度子域 4 个字节,其值为除帧头外实际数据帧长度,包括帧长度子
域本身的长度;帧流水号子域 2 个字节,信息产生端上发数据是产生的帧流水号约定
在 1-1024 数字范围内,对信息产生端主动上报的数据,信息处理端返回响应帧中的帧流水号同上报帧流水号,同样信息产生端响应平台请求帧的流水号也需相同,该帧流水号区分不同帧;协议版本子域 1 个字节,表示命令的协议版本;命令子域 1 个字
节,其值定义如表 2.3.2 所示;数据载荷子域的字节数LEN是根据不同的数据帧结构变化的,详见具体帧结构;校验和:从帧头 0x5A55 开始累加到校验和子域之前,包括帧头字节。
命令子域值定义如表 2.3.2 所示。
表 2.3.2 命令子域值
命令值 | 描述 | 反馈命令值 |
0x01 | 厂商识别码验证请求 | 0x01 |
0x03 | 心跳 | 0x03 |
0xFE | 获取平台时间 | 0xFE |
0x22 | 上传噪音扬尘数据 | 0x22 |
注:
1. 所有信息传输时,低字节在前,高字节在后。
2. 信息的反馈
信息产生端发送数据包给信息处理端后,信息处理端反馈数据包格式和请求帧一致,定义如下:
表 2.3.3 反馈数据帧
帧头 2byte | 帧长度 2byte | 帧流水号 2byte | 协议版本 1byte | 命令 1byte | 数据载荷 LEN byte | 校验和 1byte |
0x5A55 | 0x0000 ~0xFFFF | 同请求帧 流水号 | 同请求帧协议 版本 | 请求帧命令 | —— | 0x00~0xFF |
3.1 厂商识别码验证信息【0X01】
请求帧数据载荷:
{
"SN" : "0C11EB5B-51DD-4A59-B478-4C9AE37A75A7", //系统颁发的设备
唯一编号
"Data":
{
"VerifyCode":"85117687-FF28-4F68-8080-82DE8BCF5BF4", //系统颁发的厂
商识别码
"VerifyDate":"2013-12-17" //系统证书颁发时间
}
}
返回帧数据载荷:
{
"SN" : "0C11EB5B-51DD-4A59-B478-4C9AE37A75A7", //系统颁发的设备
唯一编号
"IsSucceed":"0" //0 为成功,其他为失败
"UploadFrequency":"10" //数据上传频率,单位:秒"UpdateTimeFrequency":"60" //同步设备时间频率,单位:分钟
}
3.2 心跳信息【0X03】
请求帧数据载荷:
{
"SN" : "0C11EB5B-51DD-4A59-B478-4C9AE37A75A7" //系统颁发的设备
唯一编号
}
返回帧数据载荷:
{
"SN" : "0C11EB5B-51DD-4A59-B478-4C9AE37A75A7", //系统颁发的设备
唯一编号
“IsSucceed”:”0” //0 为成功,其他为失败
}
请求帧数据载荷:
{
"SN" : "0C11EB5B-51DD-4A59-B478-4C9AE37A75A7" //系统颁发的设备
唯一编号
}
返回帧数据载荷:
{
"SN" : "0C11EB5B-51DD-4A59-B478-4C9AE37A75A7", //系统颁发的设备
唯一编号
"IsSucceed":"0", //0 为成功,其他为失败
"Date":"2016-02-26 10:15:25" //平台当前时间
}
信息发生端上传帧数据载荷:
{
"SN" : "0C11EB5B-51DD-4A59-B478-4C9AE37A75A7", //系统颁发的
设备唯一编号
“Data”:
{
“Date”:”2016-02-26 14:52:32”,//数据产生时间"Noise":"42.60", //噪声,单位:DB,
"Dust":"71.18", //扬尘,单位:μg/m3, 浮点型,小数后 2 位
"temperature":"64.45", //板载温度,单位:℃, 浮点型,小数后 2 位
"WindSpeed":"16.18", //风速,单位:km/h, 浮点型,小数后 2 位"Winddirection":"0.01", //风向,单位:度, 浮点型,小数后 2 位"Voltage":"18.63", //电压,单位:V, 浮点型,小数后 2 位"Longitude":"xxxx.xxxxxx", //经度,浮点型数据,精确到小数点后 6 位"Latitude":"xxxx.xxxxxx" //纬度,浮点型数据,精确到小数点后 6 位"Humidity":"64.45", //湿度, 浮点型,小数后 2 位
}
}
返回帧数据载荷:
{
"SN" : "0C11EB5B-51DD-4A59-B478-4C9AE37A75A7", //系统颁发的设备唯一
编号
“IsSucceed”:”0” //0 为成功,其他为失败
}
部分内容由用户投稿或者来源于网络,如有侵权,请联系底部邮箱进行删除!非常感谢您的支持!