初始环境:
我的openwrt版本,任意版本应该都可以
安装hostapd-utils
安装mqtt客户端
可选安装ttyd(可在网页上写路由器脚本)或者使用winscp也很方便
编写脚本:可用ttyd或winscp,二选一
运行结果,openwrt的系统日志:
具体过程:
使用ttyd或winscp登录路由器,进到bin目录里新建一个名为[size=15.008px]hostapd_eventscript[size=15.008px]的脚本文件,之后为此脚本赋予可执行权限[size=15.008px]。
[size=15.008px]hostapd_eventscript[size=15.008px]脚本内容为如下,很多是测试语句,你复制完可删减。
#!/bin/sh
logger -t $0 "hostapd event received $1 $2 $3"
logger $2
logger $3
strA="AP-STA-CONNECTED"
strB="AP-STA-DISCONNECTED"
strC="50:8e:88:88:88:3a"
if [ $2 == "AP-STA-CONNECTED" ]; then
logger "== logic 1 true"
fi
if [ $2 == AP-STA-CONNECTED ]; then
logger "== logic 2 true"
fi
if [ $2 == $strA ]; then
logger "== logic 3 true"
fi
case $2 in
$strA) logger "logic 4 true";;
$strB) logger "logic 5 true";;
*) logger "logic 6 true";;
esac
if [ $strA == $2 ]; then
logger "connected"
if [ $strC == $3 ]; then
logger "mqtt pub start"
mosquitto_pub -h 192.168.1.100 -p 1883 -t cmnd/tasmota_F4C176/POWER -m On
mosquitto_pub -h 192.168.1.100 -p 1883 -t cmnd/tasmota_95EA2A/POWER -m On
fi
else
logger "disconnected"
mosquitto_pub -h 192.168.1.100 -p 1883 -t cmnd/tasmota_F4C176/POWER -m OFF
mosquitto_pub -h 192.168.1.100 -p 1883 -t cmnd/tasmota_95EA2A/POWER -m Off
fi
[size=15.008px]之后在路由器命令行里执行。
[size=15.008px]root@OpenWrt:~#[size=15.008px]hostapd_cli -a/bin/hostapd_eventscript -B
[size=15.008px]此时该脚本会保持后台一直运行,当有指定手机Mac如50:8e:88:88:88:3a连接上或断开openwrt的WiFi时,都会触发一次mqtt指令。
|