机器人心跳检测

Zss 发表于:

解决机器人掉线问题,在一段时间检测一次是否正常连接

uci -c /etc/awrt/config set wireless.interface_radio1_0.geekplus_robot_check=1
uci -c /etc/awrt/config commit wireless 保存
awrt-reload wireless 重启
interface_radio1_0 就是设置radio1 的第0 个vap(0-15)

iwpriv ath100 g_robot_check_en 检测是否开启

 

还另外有2个命令也是修改配置方面的,但是没有做成uci配置可以通过串口去修改查看:
iwpriv wifi1 g_inactive_time
wifi1 g_inactive_time:5000
iwpriv wifi1 m_inactive_time 5000
这个是配置查看心跳最大间隔(默认4s),就是说如果间隔超过这个时间就认为掉线就会踢用户这里5000就是5s

 

root@SUPERWIFI:/etc/kvert.d# iwpriv wifi1 g_robot_port
wifi1 g_robot_port:8899
root@SUPERWIFI:/etc/kvert.d# iwpriv wifi1 robot_port 8899
这个是设置查看心跳包的端口,因为机智佳的机器人心跳报文端口是8899

 

心跳检测机制:
终端上线2分钟内不会检测心跳报文是否正常,
如果终端上线超过2分钟但是没有心跳包(非机器人),不会踢
如果终端上线超过2分钟并且有发过心跳包,那么2次心跳包间隔如果超过4s,就认为机器人需要重连,踢掉用户,

如何判断是否踢掉过用户:
1.我们可以在syslog里面看到log,log里有踢用户时间。
kernel: syslog@<5>ieee80211_robot_[0471]: [radio1 wlan0] a0:88:b4:14:70:1c (refcnt 1) associd 1,kick it out because long time no uplink Traffic(for geekplus robots)
cat /etc/log/syslog

2.我们可以在状态文件cat /proc/awrt/status/status_sta里面找到对应终端上线时间从0重新计数了。
option ‘sta_up_time’ ‘2593’(这个时间是秒)

2.4G不用测试,因为A8N现网已经运行良好,所以应该没有问题,需要测试的是5G 11ac部分,
测试方法:
PC0——–wifi————-A3c(5G)————–eth—————-PC1
在PC0上用packet builder组一个发给PC1的TCP报文,目的端口配置成8899,然后间隔发包,

测试需要注意的是,
1:开1个vap,2分钟内发一个心跳包,之后不再发,观察10分钟内会踢几次,
2:开1个vap,一直不发心跳包,观察10分钟内会踢几次,
3:开一个vap,发心跳包间隔>4s,观察10分钟,看看会踢几次
4:开一个vap,发心跳包间隔3s,观察10分钟,看看会踢几次
5:开一个vap,发心跳包间隔2s,观察10分钟,看看会踢几次
6:开一个vap,发心跳包间隔1s,观察10分钟,看看会踢几次
7:开一个vap,发心跳包间隔1ms,观察10分钟,看看会踢几次
8:开多个vap其中有一部分配置打开此功能,一部分vap配置关闭此功能,必须保证打开此功能的vap功能生效的同时也要观察关闭此功能的vap,必须保证关闭此功能的vap就算有心跳报文也不会踢用户。