合宙 IOT 通用报文协议 AirCloud -- 1.0
三、字段类型定义
字段类型一共 2 字节,分为两部分: 字段含义和数据类型,其中字段含义 12bit,数据类型 4bit。
3.1 数据类型
数据类型占用 4 个 bit,理论上支持 16 种数据类型。
0000 - 整数
0001 - 浮点数
0002 - 布尔值
0003 - ASCII 可打印字符串,是可打印的字符串,直接 copy 出来就可以在文本编辑器人眼查看的。每个字节的值都在 0x20 到 0x2E 之间。
0004 - binary 字符串,不一定可打印, 每个字节是任意的。
0005 - UNICODE 字符串,UTF-8 编码方式。
3.2 字段含义
字段含义占用 12bit,理论上支持 4096 种字段含义。
其中,
(1) 0 - 15 为预留值,
(2) 16-255 为控制信令类型,
(3) 256-2047 为业务字段类型,分为传感类,资产管理类,设备参数类,其他每个类别 256 种字段。
(4) 2048-4095 为预留值。
3.2.1 控制信令类型 16-255
16 - 鉴权请求 - 上行
17 - 鉴权回复 - 下行
18 - 上报回应 - 下行,用于服务器对设备的上报的回应
19 - 控制命令 - 下行, 用于服务器对设备下发的控制命令
20 - 控制回应 - 上行, 用于对服务器发送的控制命令的回应
21 - iRTU 下行命令,
22 - iRTU 上行回复,
23 - 文件上传开始通知 - 上行(设备通知服务器开始上传文件)
24 - 文件上传完成通知 - 上行(上传完成后通知服务器结果)
3.2.2 业务字段类型
3.2.2.1 传感类 256-511
256 - 温度
257 - 湿度
258 - 颗粒数
259 - 酸度
260 - 碱度
261 - 海拔
262 - 水位
263 - CPU 温度/环境温度
264 - 电量计量
3.2.2.2 资产管理类 512-767
512- GNSS 经度
513 - GNSS 维度
514 - 行驶速度
515 - 最强的 4 颗 GNSS 卫星的 4 个 CN
516 - 搜到的所有卫星数
517 - 可见卫星数
518 - 航向角
519 - 基站定位/GNSS 定位标识
520 - GNSS 芯片型号和固件版本号
521- 方向
3.2.2.3 设备参数类 768-1023
768 - 高度
769 - 宽度
770 - 转速
771 - 电量(mV)
772 - 驻留频段
773 - 驻留小区和临区
774 - 元器件型号
775 - GPIO 高低电平
776 - 开机原因
777 - 开机次数
778 - 休眠模式
779- 定时唤醒间隔
780 - 设备入网的 IPV4/IPV6 标志
781 - 当前联网方式(4G/WiFi/以太网)
782 - 4G 信号强度
783 - ICCID
784 - 文件上传类型(图片/音频)
785 - 文件名称
786 - 文件大小
787 - 上传结果状态
3.2.2.5 软件数据 1024-1279
1024 - Lua 核心库错误上报(用于 LuatOS 自动化测试)
1025 - Lua 扩展卡错误上报(用于 LuatOS 自动化测试)
1026 - Lua 业务错误上报(用于 LuatOS 自动化测试)
1027 - 固件版本号
1028 - SMS 转发
1029 - 来电转发
3.2.2.4 设备无关数据 1280 - 1535
1280 - 时间
1281 - 无意义数据
3.2.3 控制信令的详细定义
3.2.3.1 鉴权请求-16 - 上行
3.2.3.2 鉴权回复-17 - 下行
3.2.3.3 上报回应-18 - 下行
3.2.3.4 控制命令-19 - 下行
3.2.3.5 控制回应-20 - 上行
3.2.3.6 iRTU 下行命令-21
T: 21
L: 消息的长度
V:实际的 iRTU 下行命令的全文
举例:
T: 0x0015 ----- 信令类型 21
L: 0x000B ---- 11 个字节
V: 字符串: “rrpc,getcsq”
3.2.3.7 iRTU 上行回复-22
T: 22
L: 消息的长度
V:实际的 iRTU 上行命令全文
举例:
T: 0x0016 ----- 信令类型 22
L: 0x000E ---- 14 个字节
V: 字符串: “rrpc,getcsq,17”
23 - 文件上传开始通知 - 上行(设备通知服务器开始上传文件)
作用:通过 TCP/MQTT 通知服务器有文件上传。
TLV 结构:
- T: 0x0017 (信令类型 23)
- L: 实际长度
-
V: 包含以下子 TLV:
-
文件上传类型 (1291): 整数(1:图片, 2:音频)
- 文件名称 (1292): ASCII 字符串
- 文件大小 (1293): 整数
24 - 文件上传完成通知 - 上行(上传完成后通知服务器结果)
作用:通过 TCP/MQTT 通知服务器文件上传成功。
TLV 结构:
- T: 0x0018 (信令类型 24)
- L: 实际长度
-
V: 包含以下子 TLV:
-
文件上传类型 (1291): 整数
- 文件名称 (1292): ASCII 字符串
- 上传结果状态 (1294): 整数
- 0: 上传成功
- 1: 上传失败
3.3 附加信息
3.3.1 IMEI 第 15 位的计算方法
IMEI 的第 15 位数字是校验位,由 Luhn 算法计算得出,用于确保 IMEI 的有效性。具体计算方法如下:
- 计算偶数位数字乘以 2 后的各位数字之和:从左到右将 IMEI 的前 14 位数字中的偶数位数字分别乘以 2,然后计算这些乘积的个位数字和十位数字之和。例如,对于数字 5×2=10,其个位数字和十位数字之和为 0+1=1;对于 9×2=18,其个位数字和十位数字之和为 8+1=9。
- 计算奇数位数字之和:将 IMEI 的前 14 位数字中的奇数位数字相加。
- 计算总和:将第一步得到的偶数位数字之和与第二步得到的奇数位数字之和相加。
- 确定校验位:如果第三步计算出来的数值个位为 0,则校验位为 0;否则,校验位为 10 减个位数值。
例如,对于 IMEI 前 14 位数字 35890180697241,计算过程如下:
- 偶数位:5×2=10,9×2=18,1×2=2,0×2=0,9×2=18,2×2=4,1×2=2。个位数之和为 0+8+2+0+8+4+2=24,十位数之和为 1+1+1=3。
- 奇数位:3+8+0+8+6+7+4=36。
- 偶数位与奇数位数字之和:24+3+36=63。
- 第 15 位校验码为:10-3=7。