Die beiden Varianten um festzustellen, ob bestimmte Geräte im Wlan angemeldet sind, die ich im Juni bzw. August 2018 schon mal getestet habe, haben einen ganz entscheidenden Nachteil: Sie überleben das Firmware Update nicht!
Ich hatte die Variante aus August zwar als Provisorium ohne Probleme laufen, aber so richtig zufrieden war ich damit sowieso nicht.
Der ssh Zugang zum OpenWrt Router überlebt das Firmware Update!
Deswegen eine neue Version. Ich beschreibe der Vollständigkeit halber an dieser Stelle auch noch einmal in Kurzfassung die Einrichtung des passwortlosen ssh Zuganges von fhem zum OpenWrt Router. Die Langfassung gab es ja schon in 2017.
Vorbemerkung
Das Tool ssh-copy-id kann nicht mit den speziellen Pfaden von dropbear (ssh OpenWrt) umgehen, deshalb kommt mein "Einzeiler" aus dem Artikel zum Einsatz.Ich weiß, dass man prinzipiell die ssh Keys auch vom aktiven User auf den User fhem kopieren kann. Bei sicherheitsrelevanten Themen bin ich lieber für "ordentliches" und vielleicht etwas aufwendigeres Vorgehen.
ssh Zugang mit Public Key einrichten
Bitte diesen Artikel zur Einrichtung verwenden und dort in der Codebox den Abschnitt Ziel openwrt verwenden!
FHEM
Die Einrichtung in FHEM besteht aus einem Script und einem Presence Device.Script
Meine Script liegen jetzt alle auch auf GitHub, wer das aktuelle Script einfach laden will kann das wie hier gezeigt tun, fhem braucht selbst nur Lese Rechte. Im Script muss normal nichts konfiguriert werden.Dieser Befehl in der FHEM Kommandozeile lädt das Script ohne Umwege ins FHEM Verzeichnis:
"wget -O GetMacPresence.sh https://raw.githubusercontent.com/heinz-otto/scripts/master/Bash/GetMacPresence.sh"
Ich habe keinen anderen Benutzer in OpenWrt angelegt, sollte man aber vielleicht tun.Das Script liefert lediglich, wie vom Modul gefordert, 0 oder 1 zurück, MAC Adresse und Routername werden als Parameter übergeben.
MAC=$1
host=$2
user="root"
ssh $user@$host '
if (
for m in $(
for w in $(iwinfo |grep -oE "wlan\d-\d|wlan\d")
do
iwinfo $w assoclist | grep -o -E "([[:xdigit:]]{1,2}:){5}[[:xdigit:]]{1,2}"
done
)
do
[ "$m" = '"$MAC"' ] && exit 0
done
exit 1
)
then
echo 1
else
echo 0
fi
'
Presence Device
Das Beispiel zeigt die einfachste Verwendung, neben der zu suchenden MAC Adresse wird noch der Name des OpenWrt Routers angegeben.define WL_Dev1 PRESENCE shellscript "bash GetMacPresence.sh 11:22:33:AA:BB:CC wrt1900"