A simple shell script to detect presence of Wifi devices (smartphones, tablets, Amazon Dash Buttons, ..) and post the results via MQTT. HA MQTT Autodiscovery capability added, every new MAC will identify itself as "binary_sensor".
Install the packages
mosquitto-clientcoreutils-nohup
with either luci or opkg.
wget -O /usr/bin/presence_report https://raw.githubusercontent.com/enesbcs/owrtwifi2mqtt/master/presence_report && chmod u+x /usr/bin/presence_report
Use SCP to copy the presence_report script to /usr/bin/presence_report on the target device.
Call chmod u+x /usr/bin/presence_report to allow script execution.
Place the following lines
nohup /usr/bin/presence_report 192.168.1.2 >/dev/null 2>&1 &
inside the /etc/rc.local file before the exit 0. You can to this via command-line or via LuCI in System -> Startup -> Local Startup. The script will be executed after reboot. Please replace '192.168.1.2' with your MQTT broker IP address.
ENV variables for configuration are:
MQTT_BASETOPIC:openwrt/HOSTNAMEMQTT_STATUS_TOPIC:$MQTT_BASETOPIC/MQTT_USERMQTT_PASSWORDMQTT_ID:$MQTT_BASETOPICMQTT_DISCOVERY:homeassistant/
After installation the following topics will be published for each WiFi device, using the lowercase MAC address:
openwrt/HOSTNAME/00-00-00-00-00-00/iwevent
Messege will be a JSON with "state" : Online/Offline and "name" with DNSName of the device, like this:
{
"state": "Offline",
"name": "IAMTEDEVICE"
}
Original script from Simon Christmann owrtwifi2mqtt