【分享】网关下ble mesh子设备(新)离在线机制

网关设备, 语音中控设备等
Post Reply
roc
Posts: 3

1、查询设备判离线
设定最大超时离线时间(默认8小时),以及最大查询次数(默认2次),如果子设备数量小于等于2个,设定最大查询次数为5次(设备少的时候其他设备无转发或转发少,丢包率会比较高导致误判);
令最大超时时间为T,最大查询次数为M,设备数量为N,查询间隔为INTV,则计算公式如下:
查询间隔:INTV = T/M/N ;
离线时间:Toff = INTV * (N * M - 1) ~ INTV * M *N;

离线时间表如下:

122221.png

2、设备上线
网关收到设备任何报文,如果当前状态是离线的,则置为在线;

3、假离线
设备真实在线,但是APP上看到状态是离线,即设备假离线;
例如如下场景:
由于离线设备同时上电,大量上线包同时发出,存在上线包丢包问题,从而导致实际设备在线,但是网关由于未收到上线包,未置设备在线的情况,APP上显示依然离线;
策略如下:
(1)打开APP,进入家庭面板,或者用户主动下拉设备列表,下发刷新在线状态命令;
(2)网关收到刷新设备在线状态命令,判断离线设备占比是否大于等于50%,或者离线数量是否大于15个;
a、满足条件先发一次广播查询包,等待1秒,如果依然有离线,对离线的15个以内设备进行逐个查询;
b、不满足条件,直接逐个查询;
c、查询结束依旧有离线的,不再处理,需要用户下拉再次刷新;
(3)离线设备有报文回复,即置设备在线;

4、假在线
设备真实离线,但是APP上看到的状态是在线,即设备假在线;
例如如下场景:
由于心跳查询间隔较长,假如设备断电,在200个设备的情况下,设备从在线到离线时间最大可能需要8个小时,即用户感知到设备离线最大可能需要8个小时,此时就有必要处理假在线。
策略如下:
APP进入子设备面板下发查询命令,子设备3秒无响应,则该子设备置为离线。


Tags:
Post Reply