Скрипт для ash сценарію в OpenWRT.
Пошук активних WiFi пристроїв за їх MAC адресою, і якщо такий є то надсилання повідомлення до MQTT брокера зі станом пристрою при зміні стану. А інший скрипт надсилає стан вже до Телеграм каналу..
#!/bin/sh uUser1='00:13:33:44:11:77' uUser2='00:3D:33:5D:11:39' users="User1 User2" next= function publish() { mosquitto_pub -t "$1" -m "$2" -r } #MAIN sleep 120 for m in $users; do eval p${m}=0 done while true; do for m in $users; do um=$(eval "echo \${u${m}}") us=$(iwinfo wlan0 assoclist | grep -m 1 -c $um ) ps=$(eval "echo \${p${m}}") if [ "$us" -ne $ps ];then eval p${m}=$us if [ -n "$next" ];then publish "tele/wifi_$m/LWT" "$us" fi fi done next=1 sleep 90 done
Так як масивів в ash не має, то приходиться використовувати eval для симуляції віртуального масиву.
Створив версію для LUA: Перший код в LUA. Скрипт для роутера з OpenWRT. MQTT та Telegram статус підключених WiFi clients.