多功能手持机文档
2016-04-27
数据包头长度为 24 字节。端口 3720,IP:www.mengchuangyun.com
1. 上传采集数据
头标志(2字节) | 数据类型(2字节) | 设备ID(12字节) | 文本长度(4字节) | 二进制数据长度(4字节) | 文本数据 | 二进制数据 |
---|---|---|---|---|---|---|
数据包标志固定为 0x26AF | 多功能手持机数据标识 0x10(10进制 16),如果要使用gbk编码传输文本,标识改成 0x4010 | 所有设备必须保证不能有重复的ID,用来区分是哪台设备的数据。这里的ID是12字节的二进制数据,通常显示的时候我们把它转换成16字节长度的字符串,使用下面的函数:
//转换函数,12字节ID转16字符 //$device_id: 24字节字串,12字节二进制ID的大写 HEX 字串 private function hashDeviceId($device_id) { $did = hash("sha256", $device_id . "E3030302B302BB1B1BEA920"); $did = substr($did, 0, 16); return strtoupper($did); } |
文本数据的长度 | 二进制数据的长度,某些情况需要同时传输二进制和文本数据,此字段存储数据长度。 | 存储文本数据,服务器根据特定数据判断文本编码。 | 存储二进制数据,长度由前面的字段指定 |
2.1 上传图像
头标志(2字节) | 数据类型(2字节) | 设备ID(12字节) | 文本长度(4字节) | 二进制数据长度(4字节) | 文本数据 | 二进制数据 |
---|---|---|---|---|---|---|
数据包标志固定为 0x26AF | 标识 0x4011 | 所有设备必须保证不能有重复的ID,用来区分是哪台设备的数据 | 文本数据的长度 | 二进制数据的长度,某些情况需要同时传输二进制和文本数据,此字段存储数据长度。 | 文本数据,图像文件名,包括文件类型后缀,规范格式如下:PIC2019-09-25_11-19-50.jpg | 二进制图像数据 |
2.2 上传图像,2.2协议是升级版,对应的端口是2600
头标志(2字节) | 数据类型(2字节) | 设备ID(12字节) | 文本长度(4字节) | 二进制数据长度(4字节) | 文本数据 | 二进制数据 |
---|---|---|---|---|---|---|
数据包标志固定为 0x26AF | 标识 0x4012 | 所有设备必须保证不能有重复的ID,用来区分是哪台设备的数据 | 文本数据的长度 | 二进制数据的长度,某些情况需要同时传输二进制和文本数据,此字段存储数据长度。 | 文本数据,2.2协议的4012命令是一个复合命令,同时上传传感器数据和图像数据,此时图像不需要独立的文件名,会采用数据的时间作为文件名 | 二进制图像数据 |
3. 上传控制状态
头标志(2字节) | 数据类型(2字节) | 设备ID(12字节) | 文本长度(4字节) | 二进制数据长度(4字节) | 文本数据 | 二进制数据 |
---|---|---|---|---|---|---|
数据包标志固定为 0x26AF | 多功能手持机数据标识 0x21,如果要使用gbk编码传输文本,标识改成 0x4021 | 所有设备必须保证不能有重复的ID,用来区分是哪台设备的数据 | 文本数据的长度 | 二进制数据的长度,传 0。 | 格式如下:{"0":1,"1":0,"2":1},设备索引用引号包围,数字 0 表示关,1 表示开,连接后需要上传所有设备的状态 | 空 |
4. 下发控制状态
头标志(2字节) | 数据类型(2字节) | 设备ID(12字节) | 文本长度(4字节) | 二进制数据长度(4字节) | 文本数据 | 二进制数据 |
---|---|---|---|---|---|---|
数据包标志固定为 0x26AF | 多功能手持机数据标识 0x21,如果要使用gbk编码传输文本,标识改成 0x4021 | ID字段在返回时,通常是空,也就是 0 字符 | 文本数据的长度 | 设为 0 | 格式如下:{"0":1,"1":0,"2":1},设备索引用引号包围,数字 0 表示关,1 表示开,只需要设定对应索引位置的设备开关状态,完成后上传设备状态 | 空 |
5. 下发服务器配置
头标志(2字节) | 数据类型(2字节) | 设备ID(12字节) | 文本长度(4字节) | 二进制数据长度(4字节) | 文本数据 | 二进制数据 |
---|---|---|---|---|---|---|
数据包标志固定为 0x26AF | 多功能手持机数据标识 0x31,如果要使用gbk编码传输文本,标识改成 0x4031 | ID字段在返回时,通常是空,也就是 0 字符 | 文本数据的长度 | 设为 0 | 格式如下:{"data_number":4100,"error":"","req_time":"2018-12-12 12:33:17 3","sensor_duration":30} ,上述返回数据表示 数据编码: 4100(不需要可以忽略这个字段),error:空表示成功,服务器时间:2018-12-12 12:33:17 星期三,采集间隔: 30 分钟 | 空 |
数据包头长度为 24 字节。端口 3720,IP:www.mengchuangyun.com
6. 心跳包
通讯模块必须设置心跳包,用来识别无效连接。心跳包两个字节且值为 0。
心跳包(2字节) | 心跳包频率 |
---|---|
0000 | < 5 分钟 |
7. 传感器数据格式
传感器数据以文本的格式直接填充到数据包的文本字段
传感器数据 |
---|
|采集日期:2018-11-29 15:27:52|1空温:36℃|1土温:28.1%|2土湿:30.1%|3土湿:33.3%|4土温:27.6%|5土温:29.5%|6土温:27.4%|3CO2:660PPM| |
|