[关闭]
@superpigy 2020-11-20T15:26:04.000000Z 字数 19423 阅读 25
版本 修改内容 提交人
0001 TV格式设备状态改成1B
标签信息上传指令分畜牧业标签cla=0x21和定位标签cla=0x22
屈琦伟

一、概述

当前版本:0001

本项目的目标是实现CAN定位节点、CAN网关、网络定位节点与 主机之间的通讯

协议需要与网络定位节点的协议兼容

二、YZ协议格式

此协议适用UDP、2.4G 和 Zigbee 的传输

2.1 通讯参数

配置接收端口:3824 (该固定,不允许变更)
发送目标端口:3721(可修改,用于定位信息上传)

2.2 帧头
协议格式 前缀标识 长度 PREFIX 数据包 CRC
1B 1B 2B ... ... 2B可选
2.2.1 协议格式

高4bits为协议格式, 局域网新版协议固定为8,

低4bits为系统类别(0~15) , 定位固定为8,

所以,定位系统为0x88

2.2.2 前缀标识
2.2.3 长度

​ PREFIX + 数据包,不算CRC

2.2.4 前缀

按照前缀标识存放数据,数据顺序如下:

系统编号 源地址 目标地址 中继负载信息 网关地址
4B 4B 4B 12B 4B
2.2.5 数据包格式
CLA INS PARAMS
指令类别 指令码 指令参数
1B 1B ...

- CLA

bit7,6:
- 00~指令
- 01~消息
- 10~ACK
- 11~NAK
bit5~0
0 通用类别
1 网关(该系列指令不会转发到CAN节点)
2~7 系统保留
0x08 定位基站

三、YZ指令系统

3.1 固件指令集(CLA=0x00)
3.1.1 读取属性
指令:
    INS=0x00
    PARAMS=参数ID(4B)
应答:
    PARAMS=参数ID(4B)+参数值(...B)
属性ID:
    0~ 保留
    1~ 设备编号(4B,逻辑编号,默认等于CPUID)+CPUID(4B)+设备型号(2B)+固件版本(2B)+硬件版本(1B)+保留(1B)
    2~ 
    3~ 
    6~ 初始化参数(8B)--见    出厂格式化
    7~ 当前时刻(4B)
    8~ IP地址: 模式(1B,1~DHCP, 2~静态IP)+IP(4B)+掩码(4B)+网关(4B)  (CAN节点不支持)
    9~ FLASH-IP地址,同上(CAN节点不支持)
    12~主机IP(4B)+主机通讯端口(2B,发送到主机)+本地通讯端口(0000H 表示自主分配)(CAN节点不支持)
    14~PING间隔(2B,秒,默认10s)
    15~4G模块FLASH中的协议类型(1B)
    16~4G模块内存中的协议类型(1B)+通道掩码(1B)+网络状态(1B)+信号强度(1B)+ping间隔(2B,秒)
    17~授权信息
    18~RSSI_M1(1B)+保留(1B)+ RSSI_N(2B,环境因子*100)
    19~扫描模式(1B,0定长,1动长)+扫描波特率(1B) 
    25~zigbee参数(14B)

网关收到指令后,应将所有子节点信息全部上传(包括自身)
对于节点不支持的属性则忽略
3.1.2 设置属性
指令:
    INS=0x01
    PARAMS=参数ID(4B)+参数值(...B)
应答:
    PARAMS=参数ID(4B)+参数值(...B)
属性ID:
    8~ IP地址: 模式(1B,1~DHCP, 0~静态IP)+IP(4B)+掩码(4B)+网关(4B)  (CAN节点不支持)
    9~ FLASH-IP地址,同上(CAN节点不支持)
    12~主机IP(4B)+主机通讯端口(2B,发送到主机)+本地通讯端口(0000H 表示自主分配)(CAN节点不支持)
    14~PING间隔(2B,秒,默认10s)
    15~4G模块FLASH中的协议类型(1B)
    16~4G模块内存中的协议类型(1B)+通道掩码(1B)+网络状态(1B)+信号强度(1B)+ping间隔(2B,秒)
    18~RSSI_M1(1B)+保留(1B)+ RSSI_N(2B,环境因子*100)
    19~51822模块扫描模式(1B,见下表)+2.4G信道(1B)+[蓝牙1扫描模式(1B)+蓝牙2扫描模式(1B)]
    20~以太网络协议类型(0-停止转发,1~UDP,2-TCP)
    21~4G模块通道信息[通道号(1B)+协议类型(1B)+ 通道参数(主机IP(4B)+主机通讯端口(2B)+本地端口(2B)],若通道号0,stm32需要存储作为默认4G地址,其他不需要存储
    22~4G模块配置生效
    23~4G模块flash中的profileId(1B)+APN长度(1B)+APN内容(...)
    24~4G模块内存中的profileId(1B)+APN长度(1B)+APN内容(...)
    25~zigbee参数(网络1B+频段1B)
51822扫描模式 信道 蓝牙扫描模式
定长/动长,仅针对2.4G模式 仅2.4G模式
1~定长250k,CRC8
2~动长250k,CRC16
3~蓝牙BLE
0~0
1~
3~ble
4~ble 125K
3.1.3 出厂格式化
指令:
    INS=0x02
    PARAMS=格式化标记(8B)+初始属性(8B)
应答:
    PARAMS=(无)
说明:
    格式化标记:"FOFIAXYK"
初始属性:传输工作模式(1B)+模块工作模式(1B)+代理商编号(2B)+设备逻辑编号(4B)

注: 对于网关,如果是通用地址,则所有子节点都同时被格式化
此配置通过ping从网卡和4G发送到平台
3.1.4 重启
指令:
    INS=0x08
    注: 对于网关,如果是通用地址,则所有子节点都同时被重启
3.1.5 设备授权
指令:
    INS=0x09
    PARAMS=授权标记(8B)+ 授权信息(12B)
说明:
    授权标记"FOFIAXYK"
    授权信息= 有效期(4B,YYYYMMDD)+校验码(8B)

注: 设备只是单纯的保留这个授权信息,以后在运行过程中PING包会输出这个授权码,此时引擎端分析授权码,得到有效期,如果设备超出有效期,引擎忽略该设备的所有数据
校验码由工具计算计算方式:用户密钥+设备编号+PROXYID(2B)计算md5取前8B
3.1.6 准备固件升级
指令:
    INS=0x0a
    PARAMS=固件数据起始地址(4B)+固件数据长度(4B)+随机数A(8B)+密码(8B)
应答:
    PARAMS=随机数B(8B)
说明:
    设备中固件存放位置不一定从0开始的,这里下载固件起始地址按hex文件实际地址下发,如现在的地址是0x08004000
    随机数A请保证每次不同,设备未完成升级前,对相同随机数A不响应,目的是放置恶意不断发送准备升级指令
    密码计算方式:随机数A(8B)+"YZKJT6ny3sof4PSJ"计算MD5,取前8B
3.1.7 写固件数据
指令:
    INS=0x0b
    PARAMS=地址(4B)+数据(xB)
应答:
    PARAMS=下一起始地址(4B)
说明:
    地址为实际地址
    主机发送固件数据后需要等待设备应答,再发送下一包
3.1.8 固件传输完毕(确认固件数据)
指令:
    INS=0x0c
    PARAMS=数据校验(16B)
应答:
    PARAMS=数据校验状态(1B)
说明:
    数据校验算方式:固件总数据(xB)+随机数A(8B)+随机数B(8B)+"YZKJT6ny3sof4PSJ"计算MD5
    升级状态:0代表校验失败,1代表校验成功
    数据校验成功后设备不自动重启,等待服务器发送重启指令完成升级
3.1.9 触发4G固件升级
指令:
    INS=0x0d
    PARAMS=网址长度(2B)+网址(128B,string,以\0填充)
应答:
    PARAMS=空
3.1.10 禁止接收广播
说明:
    禁止接收一段时间的广播指令/消息
指令:
    INS=0x10|消息模式
    PARAMS=静默时长(2B,ms)

静默时长:  一段时间之内,不再响应广播指令
3.2 系统指令(CLA=0x01)
3.2.1 设置系统代码
  1. 发送:
  2. INS=0x02
  3. PARAMS=系统ID(4B)+保留(8B)
  4. 应答:
  5. PARAMS=保留(4B)
  6. 系统ID:
  7. 2B必须与PROXYID相同,否则失败
  8. 4字节系统编号,在校园卡系统中,前2B是代理商编号,后2B是学校编号(如果不启用学校编号,则保持为0)
3.3 设备信息上报指令(CLA=0x11)

​ 中继会通过Zigbee 和udp 两种形式上报

3.3.1 PING(Zigbee)
  1. 发送:
  2. CLA|=消息模式
  3. INS=0x00
  4. PARAMS=设备编号(CPU_ID 4B)+设备MARK(复位计数 4B)+当前时刻(4字节 10ms)
  5. 注:
  6. 开机10秒后发送一次,以后每5分钟发送一次
  7. 说明:旧版中继使用CLA=0x10,网关使用0x11
3.3.2 PING(网口和4G发出)
  1. 发送:
  2. CLA|=消息模式
  3. INS=0x01
  4. PARAMS=设备编号(CPU_ID 4B)+设备MARK(复位计数 4B)+当前时刻(4字节 10ms)+设备型号(2B)+设备固件版本(2B)+设备硬件版本(2B)+模块状态(2B)+【授权信息(4B时间+8B验证码)+设备标志位(1B)+传输工作模式(1B)+模块工作模式(1B)+空1B+工作状态(4B)+[4G网络状态(1B)+4G信号强度(1B)+4G模块IMEI(8B)+4G模块固件型号(2B)+4G模块固件版本(2B)+4G模块硬件件版本(1B)+预留(1B)+IMSI(8B),仅当模块存在时才有本信息]】
  5. 传输工作模式(1B)+模块工作模式(1B)见出厂格式化3.1.3, 老网关模块工作模式为空
  6. 设备标志位:
  7. bit0 ~ 1:已执行格式化,0未格式化(出厂格式化指令,设置代理商编号(2B)+设备逻辑编号(4B))
  8. bit1 ~ 1:已执行初始化(设置系统代码,系统ID(4B)后置位)
  9. bit2 ~ 1:已授权(设备授权后置位)
  10. bit3 ~ 1:DHCP模式开启
  11. bit4~7 ~ 保留
  12. 工作状态:
  13. bit0 ~ 4G模块异常
  14. bit1 ~ 2.4G模块异常
  15. bit2 ~ 蓝牙模块异常
  16. bit3 ~ 远距离蓝牙模块异常
  17. bit4 ~ 内部无线模块异常(zigbee,远距离蓝牙等)
  18. 模块状态:
  19. bit0 ~ 4G模块存在
  20. bit1 ~ 2.4G采集模块存在
  21. bit2 ~ 正常蓝牙采集模块存在
  22. bit3 ~ 远距离蓝牙采集模块存在
  23. bit4 ~ 内部无线模块存在
  24. 注:
  25. 开机10秒发送一次,以后每1分钟发送一次
  26. 说明:zigbee模块ping只发送到模块状态
3.3.3 应答测试指令

​ 这个指令需要考虑一下,是否会影响设备正常工作

  1. 说明:
  2. 收到2.4g测试指令反会结果到2.4g
  3. 设备发送:
  4. CLA|=消息模式
  5. INS=0x20
  6. PARAMS=物理卡号(4B)+测试流水号(4B)+包数量(1B)+包序号(1B)
3.3.4 标签信息数据转发(2.4G->中继,中继->网关,网关->平台)
  1. 说明:注:2020114日之前有几台
  2. 蓝牙收到的数据,can收到的标签数据通过基站转换后按此指令格式转发到平台
  3. 2.4G标签直接发送符合此格式的数据
  4. 设备发送:
  5. CLA|=消息模式
  6. INS=0xA0
  7. PARAMS=标签ID(6B)+数据标志(1B)+标签类型(1B)+[TV格式RSSI,0x0C(1B)+RSSI(1B)]+TV格式数据
  8. 说明:
  9. 标签ID正常为4B,最高2B0,外购的标签ID6B
  10. 如果设置了定位标志一定包含RSSI,并且RSSI一定要放在TV的第一包
  11. 数据标志:
  12. bit0:1定位数据,0非定位数据
  13. 标签类型:
  14. 1~动物标签
  15. 2~人员标签
  16. 3~资产标签
  17. 4~外购标签
  18. 5~手机
3.4 畜牧业标签(CLA=0x21)
3.4.1 标签信息数据(2.4G->中继,中继->网关,网关->平台)
  1. 说明:
  2. 蓝牙收到的数据,can收到的标签数据通过基站转换后按此指令格式转发到平台
  3. 2.4G标签直接发送符合此格式的数据
  4. 设备发送:
  5. CLA=0x61(消息模式)
  6. INS=0xA0
  7. PARAMS=标签ID(6B)+数据标志(1B)+标签类型(1B)+[TV格式RSSI,0x0C(1B)+RSSI(1B)]+TV格式数据
  8. 说明:
  9. 标签ID正常为4B,最高2B0,外购的标签ID6B
  10. 如果设置了定位标志一定包含RSSI,并且RSSI一定要放在TV的第一包
  11. 数据标志: bit0:1定位数据,0非定位数据
  12. 标签类型:见文档最后
3.6 定位标签上报指令(CLA=0x22)

​ 通过2.4G 上报

蓝牙定位卡片,平时在处在设备主动通讯模式下工作

后期可以考虑变更CLA=0x23,0x24,... 用于指示不同的卡类别,譬如二合一卡
3.6.1 定位卡片PING(INS=10H)
    工作状态下,每10秒(默认)发送一次 , 静止状态下,每10分钟发送一次

    运动状态转换成静止状态时,至少维持1分钟高频发送

发送:
    CLA|=消息模式
    INS=0x10
    PARAMS=物理编号(4B)+tick计数(4B 5S为单位)+标签编号(2B)+标签状态(1B)+标签电压(1B)+工作模式(1B)+上报频率(1B)+保留(...B)

注: 旧版协议中把按键作为一个状态,在PING中发送,新版标签中用独立的指令来发送报警信息
注: 新版协议中去除了低电量标志,改为软件判定

当卡片状态发生改变的时候,如按键信息,需要立刻发送;当无状态改变,5分钟发送一包数据
标签状态:按键 0x02,低电量 0x01,0x04~静止

标签电压: 单位10mv
3.6.2 V2-定位数据-透传(INS=12H)
  1. 说明:
  2. 卡片处于透传模式下,只是简单的转发信标发送的定位数据,这种模式下,数据传输量会很大
  3. 设备发送:
  4. CLA|=消息模式
  5. INS=0x12
  6. PARAMS=卡号(4B)+时间戳(2B)+mac(6B)+volt(1B)+保留(1B)+distance(2B)+信标区域号(2B)*4
3.6.3 V2-卡片事件触发(INS=16H)
  1. 说明:
  2. 按键等
  3. 设备发送:
  4. CLA|=消息模式
  5. INS=0x16
  6. PARAMS=卡号(4B)+tick计数(4B)+标签编号(2B)+事件类型(1B)+保留(1B)+事件参数(...)
  7. 事件类型:
  8. 0x01 ~ 按键
  9. 事件参数:
  10. 保留
3.6.4 V2-定位数据-单点(INS=17H)
  1. 说明:
  2. 这个模式能上传信标Mac地址,所以单信标定位尽可能采用该协议传输
  3. 设备发送:
  4. CLA|=消息模式
  5. INS=0x17
  6. PARAMS=卡号(4B)+记录序号(4B)+标签编号(2B)+标签状态(1B)+ 电压(1B)+Mac地址(6B)+RSSI/距离(2B)
  7. ` `
  8. 0x40 ~ 新版硬件,采用距离模式
  9. 0x80 ~ 按键有效
  10. 0x01 ~ 静止
3.6.5 V2-定位数据-多点(INS=18H)
  1. 说明:
  2. 当某个区域定位信标超过1个时,用该指令发送定位信息
  3. 由于协议长度限制,信标编号无法发送,只能发送信标所在区域的顶点位置
  4. 设备发送:
  5. CLA|=消息模式
  6. INS=0x18
  7. PARAMS=物理卡号(4B)+记录序号(4B)+标签用户号(2B)+保留(2B)+信标区域号(2B)+[距离(2B)]*N
  8. 标签区域号(2B):信标区域(12bits)+区域类型(4bits
  9. 4bits ~ 区域类型
  10. 0~ 无效
  11. 1~ 零维定位
  12. 2~ 一维定位
  13. 4~ 二维定位
  14. 8~ 二道门(保留,暂时通过区域号来分辨,如:0x0F01)
  15. 在信标中的区域类型按如下方式定义
  16. 1~ 零维定位(单个信标)
  17. 2~ 一维定位(信标0)
  18. 3~ 一维定位(信标1)
  19. 4~ 二维定位(信标0)
  20. 5~ 二维定位(信标1)
  21. 6~ 二维定位(信标2)
  22. 7~ 二维定位(信标3)
  23. 12bits ~ 区域号(整型)
  24. 距离
  25. 低字节在前,高字在后, 0表示无效,单位mm
3.6.7 V3-定位数据-多点(INS=19H)
  1. 说明:
  2. 考虑一种新的定位方式,该方式不配置区域,只发送距离最短的4~8个信标编号
  3. 由于协议长度限制,旧版基站最多支持4个信标
  4. 考虑采用新基站,扩充到8个信标来提高可靠度
  5. 设备发送:
  6. CLA|=消息模式
  7. INS=0x19
  8. PARAMS=物理卡号(4B)+记录序号(4B)+[信标号(4B)+距离(1B)+电压(1B)]*N
  9. 距离: 压缩到1字节,基础单位为10mm, 255表示无穷大, 0表示1米之内
  10. 电压: 单位10mv
3.6.8 V3-定位数据-多点-临时变种(INS=1AH)
  1. 说明:
  2. 考虑一种新的定位方式,该方式不配置区域,只发送距离最短的4~8个信标编号
  3. 由于协议长度限制,旧版基站最多支持4个信标
  4. 考虑采用新基站,扩充到8个信标来提高可靠度
  5. 设备发送:
  6. CLA|=消息模式
  7. INS=0x19
  8. PARAMS=物理卡号(4B)+记录序号(2B)+信标前缀(2B)+[信标号(2B)+距离(1B)+电压(1B)]*4
  9. 距离: 压缩到1字节,基础单位为10mm, 255表示无穷大, 0表示1米之内
3.6.9 V3-卡片PING(INS=1BH)

​ 工作状态下,每10秒(默认)发送一次 , 静止状态下,每1分钟发送一次

​ 运动状态转换成静止状态时,至少维持1分钟高频发送

发送:
    CLA|=消息模式
    INS=0x1A
    PARAMS=物理编号(4B)+tick计数(4B,5S为单位)+标签版本(2B)+标签状态(1B)+标签电压(1B)+工作模式(1B)+上报频率(1B)+保留(...B)

标签版本: 标签固件版本号
标签电压: 单位50mv
3.6.10 V3-卡片一键呼救(INS=1CH)

​ 工作状态下,每10秒(默认)发送一次 ,连续发送,直到用户自己停止,这个过程中tick计数 保持不变

说明:
    按键等
设备发送:
    CLA|=消息模式
    INS=0x1C
    PARAMS=卡号(4B)+tick计数(4B)+标签编号(2B)+事件类型(1B)+保留(1B)+事件参数(...)
事件类型:
    0x01  ~  按键   
事件参数:
    保留
3.6.11 测试指令1(INS=20H,测试卡==>基站==>引擎)
  1. 说明:
  2. 按键,发送100包测试指令
  3. 设备发送:
  4. CLA|=消息模式
  5. INS=0x20
  6. PARAMS=物理卡号(4B)+测试流水号(4B)+保留0(2B)+包数量(1B)+包序号(1B)
3.6.12 基站信号测试指令2(INS=21H)
  1. 说明:
  2. 发送信号测试指令
  3. 1.指令模式下基站收到一条回应一条
  4. 2.消息模式下基站收到所有的测试包后回应1
  5. 设备发送:
  6. CLA|=消息模式,指令模式
  7. INS=0x21
  8. PARAMS=物理卡号(4B)+测试流水号(4B)+需要发送的包总数量(1B)+当前包序号(1B)+补足码(补满60B30字节)
3.6.13 基站信号测试指令2的返回(INS=21H,基站===>测试设备)
  1. 说明:
  2. 发送信号测试指令,基站收到后回应的数据
  3. 1.指令模式下基站收到一条回应一条
  4. 2.消息模式下基站收到所有的测试包后回应1
  5. 设备发送:
  6. CLA|=消息模式,指令模式的返回
  7. INS=0x21
  8. PARAMS=基站编号(4B)+物理卡号(4B)+测试流水号(4B)+已接收到的包总数量(1B)+最后收的包序号(1B)+补足码(可有可无)
3.6.14 定位标签信息数据(此指令格式与3.4.1相同)
  1. 说明:
  2. 蓝牙收到的数据,can收到的标签数据通过基站转换后按此指令格式转发到平台
  3. 2.4G标签直接发送符合此格式的数据
  4. 设备发送:
  5. CLA=0x62(消息模式)
  6. INS=0xA0
  7. PARAMS=标签ID(6B)+数据标志(1B)+标签类型(1B)+[TV格式RSSI,0x0C(1B)+RSSI(1B)]+TV格式数据
  8. 说明:
  9. 标签ID正常为4B,最高2B0,外购的标签ID6B
  10. 如果设置了定位标志一定包含RSSI,并且RSSI一定要放在TV的第一包
  11. 数据标志:
  12. bit0:1定位数据,0非定位数据
  13. 标签类型见文档最后

五、CAN通讯协议(CAN网关~CAN节点)

5.1 工作流程
  1. 网关启动后,立即发送app_cantx_config(0,0),确保所有节点处在无地址状态

  2. 网关稍等一段时间(1秒),确保节点已正常启动(清除过期指令)

  3. 网关开始监听节点(注册指令和状态指令)

    3.1 发现注册指令,则分配地址

    3.2 发现状态指令, 设置激活时间

    3.3 发现授权指令,向UDP转发

    3.4 发现定位记录,向UDP转发

  4. 每隔一段时间,网关广播一条状态指令(节点刷狗)

5.2 标识符定义
31.. 21 20..3 2 1 0
标准ID[28:18] 扩展ID[17:0] IDE RTR 保留
逻辑地址 FLAG(2bits)+指令码(1B)+GBP(1B) 1(扩展模式) 0(数据帧) 0

ID[28]=0 表示节点=>网关

ID[28]=1 表示网关=>节点

ID[27:18] 表示节点地址,理论上最多允许1023个节点串接(主机总是为0)

5.3 指令集: 网关=>节点
5.3.1 逻辑地址分配(config)
  1. <指令码> = 0x01
  2. <参数> = 序列号(4B)+逻辑地址(2B)+从机PING间隔(2B)
  3. <FLAG> = 指令源:0~网关
  4. 序列号(4B)全0时,表示对所有设备匹配,可用于将所有设备地址清0
  5. 逻辑地址(2B)为0时,表示撤销当前地址,强制节点复位
  6. 网关对节点指定一个查询间隔,默认为1秒,每隔这么长时间,节点必须向主机发送一次自身状态信息
5.3.2 PING
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x02
  3. <FLAG> = 指令源:0~网关
  4. <GBP> = 0x00
  5. <参数> = 特定节点地址(2B)+通信时间(2B)
  6. 网关定时发送PING指令,节点将其视为刷狗指令和令牌配置指令
  7. 参数表示当前持有令牌的设备编号
5.3.3 激活SPP
  1. <地址码> = 特定地址
  2. <指令码> = 0x03
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 时间间隔(1B,以秒为单位)
  5. <参数> = (无)
5.3.4 查询-系统ID
  1. <地址码> = 特定地址
  2. <指令码> = 0x04
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 0x00
  5. <参数> = (无)
5.3.5 查询-工作模式
  1. <地址码> = 特定地址
  2. <指令码> = 0x04
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 0x01
  5. <参数> = (无)
5.3.6 查询-定位参数
  1. <地址码> = 特定地址
  2. <指令码> = 0x04
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 0x02
  5. <参数> = (无)
5.3.7 参数设置-系统ID
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x05
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 0x00
  5. <参数> = SYSTEMID(4B)
5.3.8 参数设置-工作模式
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x05
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 0x01
  5. <参数> = 扫描模式(1B)+扫描波特率(1B)
5.3.9 参数设置-定位参数
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x05
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 0x02
  5. <参数> = 保留(1B)+RSSI_M1(1B)+ RSSI_N(2B,环境因子*100)
5.3.10 RESET(重启)
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x06
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <参数> = 序列号(4B)
  5. 序列号(4B)全0时,表示对所有设备匹配

5.3.11 FORMAT

5.3.12 固件升级开始
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x07
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 0
  5. <参数> = 固件数据起始地址(4B)+固件数据长度(4B)
5.3.12 固件升级交换随机数
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x07
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 1
  5. <参数> = 随机数A(8B)
5.3.13 固件升级
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x07
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 2
  5. <参数> = 固件数据起始地址(4B)+固件数据(4B)
5.3.14 固件升级结束
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x07
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 3
  5. <参数> = 固件数据校验码(8B)
  6. 数据校验码计算方式:固件总数据(xB)+随机数A(8B)+随机数B(8B)+"YZKJT6ny3sof4PSJ"计算MD5,取前8字节
5.3.15 固件升级静默
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x07
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 4
  5. <参数> = 静默时间秒(1B)
  6. 设备收到这条指令后需要静默一定时间,固件升级前建议先广播发送本指令让所有设备静默,否则升级容易出错
5.4 指令集:节点=>网关
5.4.1 节点注册(REGISTER)
  1. <地址码> = 0x00
  2. <指令码> = 0x81
  3. <FLAG> = 目标: 0~网关
  4. <参数> = 设备编号(4B)+型号(2B)+版本(2B)
  5. 注: 在非地址模式下,发送注册请求
5.4.1 节点状态(ping)
  1. <地址码> = 0x00
  2. <指令码> = 0x82
  3. <FLAG> = 目标: 0~网关
  4. <参数> = 设备编号(4B)+状态(1B)
  5. 状态:
  6. bit0:令牌状态,0 释放令牌,1 数据发送忙
  7. bit1:节点异常,0 正常, 1 异常
  8. 说明:正常运行之后需要定时上传本指令,否则网关会将设备地址清零,并发送配置指令
  9. 在未获取地址模式下,不应该发送该指令,应该发送注册请求
5.4.2 状态汇报-系统ID
  1. <地址码> = 0x00
  2. <指令码> = 0x84/0x85
  3. <FLAG> = 目标: 1~引擎,0~网关
  4. <GBP> = 0x00
  5. <参数> = 设备编号(4B)+SYSTEMID(4B)
5.4.3 状态汇报-工作模式
  1. <地址码> = 0x00
  2. <指令码> = 0x84/0x85
  3. <FLAG> = 目标: 1~引擎,0~网关
  4. <GBP> = 0x01
  5. <参数> = 设备编号(4B)+扫描模式(1B)+扫描波特率(1B)
  6. 扫描模式:
  7. ​ 0x01~2.4G
  8. ​ 0x02~ 标准ibeacon
  9. ​ 0x04~自定义ibeacon
5.4.4 状态汇报-定位参数
  1. <地址码> = 0x00
  2. <指令码> = 0x84/0x85
  3. <FLAG> = 目标: 1~引擎,0~网关
  4. <GBP> = 0x02
  5. <参数> = 设备编号(4B)+保留(1B)+RSSI_M1(1B)+环境因子(2B)
  6. 注: 在地址模式下,发送状态,该指令被视为PING,定期发送
5.3.12 回应固件升级开始
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x87
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 0
  5. <参数> = 空
5.3.12 回应随机数
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x87
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 1
  5. <参数> = 随机数B(8B)
5.3.13 固件升级
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x87
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 2
  5. <参数> = 下一个写入的固件地址数据(4B)
5.3.14 固件升级结束
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x87
  3. <FLAG> = 指令源: 1~引擎,0~网关
  4. <GBP> = 3
  5. <参数> = 0:失败 1:成功
5.5 标签配置(网关->节点)
5.5.1 查询标签信息
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x20
  3. <FLAG> = 00
  4. <GBP> = 查询类型
  5. <参数> = 标签ID(4B)
5.5.2 配置运动阈值
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x21
  3. <FLAG> = 00
  4. <GBP> =
  5. <参数> = 标签ID(4B)+运动判断加速度值(int16,单位mg)+运动滤波周期(2B,单位ms)
5.5.3 配置工作频率
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x22
  3. <FLAG> = 00
  4. <GBP> =
  5. <参数> = 标签ID(4B)+采集周期(2B,秒)+广播周期(2B,单位ms)
5.5.4 标签行为控制
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0x23
  3. <FLAG> = 00
  4. <GBP> =
  5. <参数> = 标签ID(4B)+行为代码(xB)
  6. 行为代码:
  7. 0:亮灯1, 1:亮灯2 ,2:亮灯3
  8. 3:beep
5.6 标签上报(节点->网关)
5.6.1 运动阈值回应(上报)
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0xA0|标签类型 (0xA1~0xA5)
  3. <FLAG> = 数据源
  4. <GBP> = 数据类型 0x0B(bit7为1表示后面还有数据包,为0表示数据包结束)
  5. <参数> = 标签ID(4B)+运动判断加速度值(int16,单位mG)
  6. 注:
  7. 标签类型:
  8. 0~定位功能,非标签类型
  9. 1~动物标签
  10. 2~人员标签
  11. 3~资产标签
  12. 4~外购标签
  13. 5~手机
  14. 数据类型中最高位0表示一组数据的结束,1表示多帧数据中的一帧
5.6.2 工作频率上报
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x01(bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 标签ID(4B)+采集周期(2B,秒)+广播周期(2B,ms)
5.6.3 标签行为上报
  1. <地址码> = 通用地址/特定地址
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x02(bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 标签ID(4B)+行为索引号(2B)+行为代码(xB)
  6. 行为代码:
  7. 0:亮灯1, 1:亮灯2 ,2:亮灯3
  8. 0x10:beep
  9. 0x11:按键
5.6.4 标签TICK上报
  1. <地址码> = 0x00
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x03(bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 设备MAC[0:3](4B)+设备tick(4B)
5.6.5 运动量上报
  1. <地址码> = 0x01
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x04(bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 设备MAC[0:3](4B)+运动量(4B)
5.6.6 运动时间上报
  1. <地址码> = 0x01
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x05(bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 标签MAC[0:3](4B)+运动时间(4B)
5.6.7 无
  1. <地址码> = 0x01
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x06(bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> =
5.6.8 体温上报
  1. <地址码> = 0x01
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x07(bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 标签MAC[0:3](4B)+体温信息(2B)
5.6.8 电压上报
  1. <地址码> = 0x01
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x08(bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 标签MAC[0:3](4B)+电压(2B,mV)
5.6.9 状态上报
  1. <地址码> = 0x01
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x09 (bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 标签MAC[0:3](4B)+状态(4B)
5.6.10 设备版本上报
  1. <地址码> = 0x01
  2. <指令码> = 0xA0|标签类型
  3. <FLAG> =
  4. <GBP> = 数据类型 0x0A (bit7:1表示后面还有数据包,0表示数据包结束)
  5. <参数> = 标签MAC[0:3](4B)+设备类型(2B)+固件版本(2B)
5.6.11 定位信息上报
  1. <地址码> = 0x00
  2. <指令码> = 0xA0
  3. FLAG = 是否为定位数据 0:非定位数据 1:定位数据
  4. <GBP> = 标签类型
  5. <参数> = 标签MAC[0:3](4B)+mac[4:5]+RSSI(1B)+发射功率(1B)
  6. 说明:

六、UART协议(节点内部)

​ nRF 模块与CAN节点CPU

​ 4G模块与cpu

6.1 通信参数
6.2 帧格式
STB CLA INS LEN flag DATA CRC8 ETB
1B 1B 1B 1B 1B xB 1B 1B

- 起始字符 STB = 0x1A
- 结束字符 ETB = 0x17
- 转义字符 ESC = 0x1B
0x1B, 0x9A => 0x1A
0x1B, 0x97 => 0x17
0x1B, 0x9B => 0x1B
注: 在STB和ETB之间的中间内容如果出现0x1A,0x17,0x1B都必须转义
- CLA
- bit[6:7]:00~指令,01~消息 10~ACK 11~NAK
- 00 指令必须有回应
- 01 消息可以没有回应
- 10 ACK为对应指令回应正确,并携带反馈数据
- 11 NAK为对应指令的错误反馈,可以携带错误代码也可以不带,一般带2字节错误代码
- bit[0:5] :指令分类,以下文档CLA仅指指令分类部分
- INS:指令
- LEN:DATA未转译之前的原始数据的长度
- FLAG[4:6]:四位表示指令源,PC或手机~4,引擎~3,网关~2,内部中转设备(STM32)~1, 终端模块~0;指令中写明指令源,回应时拷贝指令的flag即可
- FLAG 0表示终端,若只有一个mcu,则flag=0表示此mcu,若是mcu带一个模块,则0表示模块
- 如果设备内部有中转的MCU,1表示此中转设备,比如网关网口数据发给stm32,stm32再传给Nordic,则stm32为1
- 若mcu下面带多个模块,则每个设备单独定义编号
- FLAG[0:3]:作为长度的扩展
- 注: 本系统一律采用消息模式,消息类型全部忽略

6.3 2.4G/蓝牙BLE模块指令(CLA=0x08)

​ 如果主机以消息方式发送指令,模块也应当用消息方式应答

6.3.1 查询属性(INS=0x01)

指令:

  1. PARAMS[0..3]=属性ID(1B)

应答:

  1. PARAMS[0..3]= 属性ID(1B)+属性值(...)
  2. 属性ID:
  3. - 0~系统ID 系统编号(4B)+设备编号(4B)
  4. - 1~工作模式: 扫描模式(1B)+扫描波特率(1B)
  5. - 2~定位参数: 保留(1B)+rssi_m(1B)+rssi_n(2B)
  6. - 3~模块信息: 设备类型(2B)+固件版本(2B)+硬件版本(1B)
  7. 指令源:
  8. 必须与指令中的参数相同(引擎~3,网关~2,STM32节点~1, 模块自身~0)
  9. 扫描模式:
  10. 0x01~2.4G定长
  11. 0x02~2.4G动长
  12. 0x04~BLE
  13. 0x08~BLE Long range
6.3.2 设置属性(INS=0x02)

指令:

  1. PARAMS[0..3]= 属性ID(1B) 属性值(...)
  2. 属性ID:
  3. - 0~系统ID 系统编号(4B)+设备编号(4B)
  4. - 1~工作模式: 扫描模式(1B)+扫描波特率(1B)
  5. - 2~定位参数: 保留(1B)+rssi_m(1B)+rssi_n(2B)
  6. 指令源:
  7. 必须与指令中的参数相同(引擎~3,网关~2,STM32节点~1, 模块自身~0)
  8. 扫描模式:
  9. 0x01~2.4G定长
  10. 0x02~2.4G动长
  11. 0x04~BLE
  12. 0x08~BLE Long range

应答:

  1. 同上
6.3.3 PING消息(INS=0x80)

以消息模式发送, 模块=>主机,30秒一次,向主机通报自身工作状态

  1. PARAMS= 模块编号(4B)+系统编号(4B)+保留(1B)+rssi_m(1B)+rssi_n(2B)+扫描模式(1B)+频率通道(1B,仅2.4G)+设备类型(2B)+固件版本(2B)+硬件版本(1B)
  2. 注: 模块->stm32,PING(INS=0x80) 30秒一次
6.4 2.4G数据转发(CLA指令=0x02)

​ 模块将收到的标签信息以消息模式发送到主机,这个过程中附加一些定位需要用到的参数

6.4.1 HF2.4G数据包 (0x00)
  1. 参数说明:
  2. toggle= 消息索引
  3. RSSI= 信标/卡 当前RSSI
  4. 标签负载=卡发的数据定位数据(CLA+PREFIX+LEN+....)
6.4.2 iBeacon数据包(标准) (0x01)
  1. 标签负载=mac[6]+uuid[16]+major[2]+minor[2]+rssi_m1
6.4.3 iBeacon数据包(定制) (0x02)
  1. 标签负载=mac[6]+uuid[16]+major[2]+minor[2]+rssi_m1
  2. uuid.txpower: "标签/信标"发射功率
  3. uuid.tagType: 卡型,譬如用于区分二合一卡
6.4.3 自定义广播包 (0x03)
  1. 标签负载=mac[6]+协议类型(1B)+数据格式(1B)+数据
  2. 注:参考广播包数据
  3. 标签负载=mac[6]+FactoryId(2B)+广播数据
  4. 富华FactoryId=0xFAF0,广播数据=协议类型(1B)+数据格式(1B)+数据,详见<<广播数据格式>>
6.5 CAN转接模块(CLA指令=0x09)
6.5.0 读取属性(INS=0x00)
  1. 指令:
  2. INS=0x00
  3. PARAMS=参数ID(1B) + 节点ID(4B)
  4. 应答:
  5. PARAMS=参数ID(1B)+参数值(...B)
  6. 属性ID:
  7. 0~ 模块ID(4B)+保留(4B)+设备型号(2B)+固件版本(2B)+硬件版本(1B)+保留(1B)
  8. 1~ 节点ID(4B) + 扫描模式(1B,0定长,1动长)+扫描波特率(1B)
  9. 2~ 节点ID(4B) + 保留(1B)+ RSSI_M1(1B)+RSSI_N(2B,环境因子*100)
  10. 节点ID0xffff 则为广播模式
  11. 节点ID0x0000 则为模块
6.5.1 设置属性(INS=0x01)
  1. 指令:
  2. INS=0x00
  3. PARAMS=参数ID(1B)
  4. 应答:
  5. PARAMS=参数ID(1B)+参数值(...B)
  6. 属性ID:
  7. 1~ 节点ID(4B) + 扫描模式(1B,见3.1.2)+扫描通道(1B,见3.1.2)
  8. 2~ 节点ID(4B) + 保留(1B)+ RSSI_M1(1B)+RSSI_N(2B,环境因子*100)
  9. 节点ID0xffff 则为广播模式
6.5.2 状态通知(模块->stm32,INS=0x02)
  1. 模块主动以消息方式发送
  2. CLA|=消息模式
  3. INS=0x02
  4. PARAMS=节点同步码(4B)+节点数量(1B)+保留(3B)+主机TICK值(4B)
6.5.3 复位(STM32->模块,INS=0x04)
  1. 模块主动以消息方式发送
  2. CLA|=消息模式
  3. INS=0x04
  4. PARAMS=节点ID(4B)
  5. 节点ID0xffff 则为广播模式
  6. 节点ID0x0000 则模块复位
6.5.4 读取节点信息(INS=0x03)
  1. 指令:
  2. INS=0x03
  3. PARAMS=索引(1B)
  4. 应答:
  5. PARAMS=节点ID(4B)+节点型号(2B)+节点版本(2B)+感应板状态(2B)
  6. 感应板状态:
  7. 0x8000~出错状态
  8. 0x0002~已配置地址
6.5.5 标签数据通报(INS=0x10)
  1. 模块主动以消息方式发送
  2. CLA|=消息模式
  3. INS=0x10
  4. PARAMS=节点ID(4B)+标签ID(6B)+数据标志(1B)+标签类型(1B)+[RSSI]+[其他属性]
  5. 说明:
  6. 标签ID(低字节在前)正常为4B,不足补0,外购标签/手机ID6B
  7. 数据标志:
  8. bit0: 1~定位数据,0~非定位数据
  9. 如果设置了定位标志一定包含RSSI,并且RSSI一定要放在TV的第一包,RSSI类型码为0x0C
  10. 标签类型:
  11. 1~动物标签
  12. 2~人员标签
  13. 3~资产标签
  14. 4~外购标签(6B的序列号)
  15. 5~手机(6B的序列号)
  16. 注明: 属性均符合TV格式,参见文本末尾的附录
6.5.5 节点 PING 消息(INS=0x11)
  1. 模块主动以消息方式发送
  2. CLA|=消息模式
  3. INS=0x11
  4. PARAMS=节点ID(4B)[+其他属性]
  5. 说明:
  6. 目前没有其他属性
6.6 4G模块(stm32->4G模块,CLA指令=0x10):
6.6.1 读取属性(INS=0x00)
  1. 指令:
  2. INS=0x00
  3. PARAMS=参数ID(1B)
  4. 应答:
  5. PARAMS=参数ID(1B)+参数值(...B)
  6. 属性ID:
  7. 1~ IMEI(8B)+设备型号(2B)+固件版本(2B)+硬件版本(1B)+保留(1B)
  8. 14~4G模块与STM32PING间隔(2B,秒,默认10s)
  9. 15~FLASH中的协议类型(1B)
  10. 16~内存中的协议类型(1B)+通道掩码(1B)+网络状态(1B)+信号强度(1B)+ping间隔(2B,秒)
  11. 23~flash中的profileId(1B)+APN长度(1B)+APN内容(...)
  12. 24~内存中的profileId(1B)+APN长度(1B)+APN内容(...)
  13. 网络状态(可组合):
  14. 0x01~GSM基站在线
  15. 0x02~网络在线
6.6.2 设置属性(INS=0x01)
  1. 指令:
  2. INS=0x01
  3. PARAMS=参数ID(1B)+参数值(...B)
  4. 应答:
  5. PARAMS=参数ID(1B)+参数值(...B)
  6. 属性ID:
  7. 14~4G模块与STM32PING间隔(2B,秒,默认10s)
  8. 15~修改FLASH中的转发协议类型(1B)
  9. 23~flash中的profileId(1B)+APN长度(1B)+APN内容(...)
  10. 24~内存中的profileId(1B)+APN长度(1B)+APN内容(...)
  11. 注解: 同一时刻只允许一种协议类型,目前只支持UDP(0~停止转发,1~UDP),总设置是udp的话,通道如果设置了http,此通道就不起作用
6.6.3 状态通知(INS=0x02)
  1. 模块以消息方式向主机发送自身状态
  2. cla=0x50
  3. INS=0x02
  4. PARAMS=协议类型(1B)+通道掩码(1B)+网络状态(1B)+信号强度(1B)+ping间隔(2B,秒)+IMEI(8B)+设备型号(2B)+固件版本(2B)
6.6.4 读取通道配置(INS=0x03)
  1. 发送:
  2. INS=0x03
  3. PARAMS=通道号(1B)
  4. 应答:
  5. PARAMS=通道号(1B)+协议类型(1B)+ 通道参数(...B)
  6. 参数:
  7. 通道号: 0~7 最多支持7个通道
  8. 协议类型: 0~停止转发,1~UDP
  9. 通道参数: 主机IP(4B)+主机通讯端口(2B,发送到主机)+本地通讯端口(0000H 表示自主分配)
  10. 注: 目前只支持UDP
6.6.5 设置通道配置(INS=0x04)
  1. 指令:
  2. INS=0x04
  3. PARAMS=通道号(1B)+协议类型(1B)+ 通道参数(...B)
  4. 应答:
  5. PARAMS=通道号(1B)+协议类型(1B)+ 通道参数(...B)
  6. 参数:
  7. 通道号: 0~7 最多支持7个通道
  8. 协议类型: 1~UDP
  9. 通道参数=主机IP(4B)+主机通讯端口(2B,发送到主机)+本地通讯端口(0000H 表示自主分配)
  10. 注: 目前只支持UDP
6.6.6 向通道转发数据(INS=0x10)
  1. 主机端以消息模式发送
  2. INS=0x10
  3. PARAMS=通道掩码(1B)+转发数据(...)
  4. 注: 通道掩码默认0xFF,表示所有有效通道均发送
6.6.7 升级触发(INS=0x11)
  1. 指令:
  2. INS=0x11
  3. PARAMS=网址(string)
  4. 应答:
  5. PARAMS=(空)
6.6.8 配置生效(INS=0x20)
  1. 指令:
  2. INS=0x20
  3. PARAMS=空
  4. 应答:
  5. PARAMS=(空)
6.7 4G模块(4G->STM32, CLA指令=0x10):
6.7.1 ping
  1. cla=0x50
  2. INS=0x02
  3. PARAMS=协议类型(1B)+通道掩码(1B)+网络状态(1B)+信号强度(1B)+ping间隔(2B,秒)+IMEI(8B)+设备型号(2B)+固件版本(2B)+硬件版本(1B)+保留(1B)+IMSI(8B)

七、UART透传补充(ZIGBEE)

7.1 通信参数
7.2 帧格式
STB DATA CRC8 ETB
1B xB 1B 1B

- 起始字符 STB = 0x1A
- 结束字符 ETB = 0x17
- 转义字符 ESC = 0x1B
0x1B, 0x9A => 0x1A
0x1B, 0x97 => 0x17
0x1B, 0x9B => 0x1B
注: 在STB和ETB之间的中间内容如果出现0x1A,0x17,0x1B都必须转义
- DATA透传的数据(YZ协议)

八、附录

8.1 TV数据类型列表

类型最高位表示数据是否结束,1表示后续还有数据,0代表最后一笔数据

类型ID 类型 长度 说明
0 保留
1 工作频率 4B 采集周期(uint16,秒)+广播周期(uint16,ms)jingz
2 设备行为 3B 行为索引2B+1B行为ID(0:亮灯1, 1:亮灯2 ,2:亮灯3, 0x10:beep, 0x11:按键),0x04静止, 0x08运动;0x10按键,0x00无按键
3 系统Tick 4B uint32,系统时钟tick数(不一定是时间)
4 运动量 4B uint32
5 运动时间 4B uint32,从开机到当前总运动时间秒
6
7 体温 2B uint16,绝对温度值,单位0.01度(减去27315就是摄氏0.01度)
8 电压 2B uint16,mV
9 设备状态 1B 各设备自定义 (定位卡,定位耳标 bit2:静止~0x04静止)
10 设备版本 4B 设备类型(2B)+固件版本(2B)
11 运动判断阈值 2B int16,单位mG
12 RSSI 1B uint8

8.2 标签类型

ID 说明
1~ 通用动物标签
2 人员标签
3 资产标签
4 外购标签
5 手机
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注