断网数据重传与回传功能介绍与使用
目录
概述
星纵物联终端节点设备支持数据存储/断网重传/回传功能,可避免设备因断网或丢包导致传感器数据丢失,保证数据完整性。
- 断网数据重传:当设备与网关失联,会主动记录断网时间点,待设备联网后重新传输断网时间点与联网时间点之间丢失的数据包。
- 数据回传:可下发指令查询指定时间点或指定时间段的历史存储数据。
本文主要描述断网数据重传与回传功能的配置与测试验证。
准备
- 星纵物联LoRaWAN®终端节点:本文以AM103设备为例
- 星纵物联LoRaWAN®网关
步骤
1. 数据重传
1.1 终端节点配置
- 检查终端节点时间是否准确
打开ToolBox App并读取设备信息后,在“状态”页的设备时间条目旁点击“同步”,即可将手机时间同步到设备信息和屏幕上。当设备LoRaWAN®版本设置为1.0.3版本,设备会在入网后通过MAC指令请求同步网络服务器时间。注意:网络服务器默认为零时区时间。
- 启用数据存储与数据重传功能
打开ToolBox App的“设置>常用设置”菜单,启用数据存储功能与数据重传功能。
- 配置重新入网模式
打开ToolBox App的“设置>LoRaWAN®设置”菜单,启用重新入网模式,并设置发送链路检测信号数量。设备将通过链路检测信号包(LinkCheckReq)来判断断网时间点。星纵物联终端设备默认链路检测信号数量配置为32,此处为了快速验证修改为4。
配置示例解析:
设备至少每30分钟发送1次链路检测信号包给网关,如果连续4+1次发送链路检测信号包都没有收到网关的回复,则判断设备断网,数据重传的断网时间点将往前推2.5小时(30 * (4+1)=2.5小时)。比如15:30分发送完第4+1个链路检测包,依旧未收到回复,则断网时间点为13:00分,设备在联网后,将把13:00到联网时间点的数据从旧→新依次重传给网关及网络服务器。
设备发送链路检测信号包间隔与上报间隔相关:
上报间隔≤30分钟:设备将每30分钟左右发送一次链路检测信号
上报间隔>30分钟:设备将根据上报间隔随数据包发送一次链路检测信号
1.2 网关配置与数据验证
- 在星纵物联LoRaWAN®网关上添加并激活AM103,参考网关内置NS添加节点设备。
- 模拟节点设备断网过程:可在网关上先删除已激活设备后,再重新添加。
(08:55分操作)
- 设备通过4+1次链路检测包判断设备断网,触发重新入网。
(11:25分设备重新入网,8:55分+2.5小时=11:25分)
- 设备入网后,按照上报间隔正常上报周期包。其中重传数据根据重传间隔进行重传。
11:25分设备重新入网
11:35分重传第一个断网包
11:45分重传第二个断网包
11:55分重传第三个断网包
12:05分重传第四个断网包
12:15分重传最后一个断网包
- 参考产品用户手册,对重传数据进行解析。
通道号 | 类型 | 数据 | |
20 | ce(回传/重传数据) | 4+N字节 时间戳(4个字节)+ 数据内容(N个字节) 数据内容:AM103(L):温度+湿度+CO2 注意:温度/湿度/CO2仅上报数据内容,不上报通道号和类型 |
|
【重传数据解析示例】: | |||
20 ce367d6e65f000 85 a102
|
|||
【时间戳转换】: (1) 十六进制转换为UNIX时间戳工具:https://jisuan5.com/decimal/ 低位在前高位在后:2e766e65=> 656e762e=1701738030 (2) UNIX时间戳转换为北京时间工具:https://tool.lu/timestamp/ 1701738030(北京时间:2023-12-05 09:00:30) 【数据内容解析】:
温度:ec 00=>00 ec=236(236*0.1=23.6℃)
湿度:86=134(134*0.5=67%RH)
CO2:40 02=>02 40=576(576ppm)
|
2. 数据回传
- 检查终端节点时间是否准确
打开ToolBox App并读取设备信息后,在“状态”页的设备时间条目旁点击“同步”,即可将手机时间同步到设备信息和屏幕上。当设备LoRaWAN®版本设置为1.0.3版本,设备会在入网后通过MAC指令请求同步网络服务器时间。注意:网络服务器默认为零时区时间。
- 启用数据存储功能
打开ToolBox App的“设置>常用设置”菜单,启用数据存储功能。
- 下发指令查询
从平台或网络服务器下发指令查询指定时间点/段的历史存储数据。参考产品用户手册通信协议章节。
- 使用该功能前,请确保数据存储功能正常开启,并且设备时间准确;
- 单次下行指令查询指定时间段数据时,最大可上报300条存储数据,数据由新→旧根据回传周期,依次上报,只上报前300条,超出部分不上报;
- 下行指令查询指定时间点数据时,若查询不到这个时间点数据,则查询该时间点前后2个上报周期内是否有数据,若有选择离该时间点最近的一条存储数据上报。若无,则上报fc6b01。
【数据查询指令】:
通道号 | 类型 | 数据 |
fd | 6b(查询指定时间点数据) | 4个字节,UNIX时间戳 |
6c(查询指定时间段数据) | 8个字节 字节1-4:开始时间,UNIX时间戳 字节5-8:结束时间,UNIX时间戳 |
|
6d(停止数据回传) | ff | |
ff | 6a(设置数据回传间隔) | 3个字节 字节1:01 字节2-3:回传间隔,单位:秒;可设置30~1200s(默认60s) |
【数据回复指令】:
通道号 | 类型 | 数据 |
fc | 6b | 00:查询成功 01:查询时间无效 02:找不到查询数据 |
6c | ||
20 | ce(回传/重传数据) | 4+N字节 时间戳(4个字节)+ 数据内容(N字节,仅上报数据内容,不上报通道号和类型) |
【示例】:
- 查询AM103(L)在2022/10/10 14:45:00 到2022/10/10 15:35:00的存储数据
fd6c6cbf436324cb4363 | ||
通道号 | 类型 | 数据 |
fd | 6c | 开始时间:6cbf4363 => 6343bf6c = 1665384300 =2022/10/10 14:45:00 结束时间:24cb4363 => 6343cb24 = 1665387300 =2022/10/10 15:35:00 |
设备端回复
fc6c00 | ||
通道号 | 类型 | 数据 |
fc | 6c | 00(查询成功) |
20 ce 56991a63070174b907 20 ce …………………………. 20 ce …………………………. |
||
通道号 | 类型 | 数据 |
20 | ce | 时间戳: 56991a63 => 2022/10/10 15:31:52 数据内容: 温度: 07 01=>01 07=263(26.3℃) 湿度: 74=116(58%) CO2浓度:b9 07=>07 b9=1977(1977ppm) |
注意事项
- 重传时间间隔默认600s,可通过IPSO指令设置30-1200s;回传时间间隔默认60s,可通过IPSO指令设置30-1200s;
通道号 | 类型 | 数据 |
ff | 6a(设置数据重传间隔) | 字节1:00 字节2-3:重传间隔,单位:秒;可设置30~1200s(默认600s) |
6a(设置数据回传间隔) | 字节1:01 字节2-3:回传间隔,单位:秒;可设置30~1200s(默认60s) |
- 重传/回传数据包大小与SF值相关,SF值越大,数据包越小,反之亦然;
- 重传/回传数据与周期包一起累计帧计数;
- 不同设备存储的数据内容不同,具体参考对应产品用户手册。