多功能手持机文档
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|
  1. 每个传感器用字符“竖线(|)”分隔
  2. 每个传感器数据最前面是传感器索引值,此值是传感器内在设置
  3. 后面是传感器名称
  4. 冒号
  5. 传感器数据
  6. 传感器数据单位
  7. 每条数据都必须有采集时间,示例:采集日期:2018-11-29 15:27:52