das Thema ist nicht neu: Die Anwesenheit im Haus automatisch anhand gerade im WLAN/LAN angemeldeter Geräte/Smartphones zu erkennen.
D.h. man erkennt automatisch das ein Smartphone/Tablet gerade im WLAN aktiv ist und setzt in der Homematic CCU eine Systemvariable of 'true' die man dann entsprechend in Skripten / CCU-Programmen auswerten kann. So lässt sich im Prinzip auch eine personenbezogene Anwesenheitserkennung realisieren um so z.B. die Heizungssteuerung für bestimmte Personen zu variieren oder gar Gäste im Haus zu erkennen und dann die Heizung im Gästezimmer entsprechend hochzufahren.
Nun existieren hier im Forum bereits verschiedenste Ansätze wo z.B. mittels regelmäßiger Ping-Anfragen an die zu überwachenden Geräte versucht wird deren Anwesenheitsstatus (und damit die Anwesenheit der Person deren das Gerät gehört) analysiert wird. Des Weitern gibt es Ansätze die mittels separat zu installierender Geolocation-Apps (z.B. Geofency) eine Überwachung des Aufenthaltsortes von Smartphones umsetzen kann um so z.B. herauszufinden das sich ein Smartphone innerhalb eines gewissen Radius rund um das Haus befindet und somit dann die Anwesenheit einer Person entsprechend angenommen wird.
Den Ansatz den ich hier nun vorstellen möchte bedient sich der Tatsache das sich ein Smartphone in regelmäßigen Abständen automatisch versucht in bekannte WLANs seiner Umgebung einzuloggen. Und betreibt man nun zuhause einen WLAN-Router/Access-Point so ist ein Smartphone im Grunde (ausser es befindet sich im tiefen Schlafmodus) immer am heimischen WLAN angemeldet und zumindest der WLAN-Router/Access-Point sollte immer wissen wer sich gerade im Haus befindet und wer nicht. Dies macht sich nun mein CCU-Addon einer Anwesenheitserkennung zu Nutze in dem es in regelmäßigen Abständen den WLAN Status von (zumindest im deutschen Raum) weit verbreiteten FRITZ!Box und FRITZ!Repeater Geräten der Firma AVM abfragt und entsprechend CCU-Systemvariablen setzt die man wiederum dann in seinen WebUI-Programmen auswerten/verarbeiten kann. Zwar ist diese Idee im Grunde nichts neues (siehe https://github.com/jollyjinx/homematic), jedoch gibt es hierzu einen wesentlichen Unterschied zu meiner Lösung.
Was an meiner Lösung neu/anders ist, ist die Tatsache, dass man die notwendigen Skripte/Programme nicht direkt auf einer FRITZ!Box installieren muss (was von AVM seit FRITZ!OS Firmware 6.20 nicht mehr unterstützt wird) und man diese Lösung direkt auf einer CCU als Addon-Paket installieren und entsprechend konfigurieren kann. Auch habe ich das Addon so ausgelegt, dass dieses sich nicht nur in eine einzelne FRITZ!Box einloggen kann sondern auch z.B. FRITZ!-basierte WLAN-Repeater auswerten kann. D.h. man gibt eine Liste von FRITZ! Geräten an die dann entsprechend ausgewertet werden.
Funktionsumfang
- WLAN/LAN-Statusabfrage mehrerer paralleler FRITZ!-Geräten (FRITZ!Box/Repeater)
- Vom Nutzer definierbare Intervallzeit zur regelmäßigen Abfrage von FRITZ!-Geräten
- Möglichkeit für manuellen Aufruf der Abwesenheitserkennung mittels CUxD SystemExec calls
- Unterstützung für FRITZ!Box/Repeater Zugang mit oder ohne Passwort im internen Netzwerk
- Möglichkeit der Remote-Abfrage über https-Zugang zu FRITZ!-Geräten
- Berücksichtigung eines separaten Gastzugang-WLAN
- Nutzergerätedefinitionen anhand der MAC- oder IP-Adresse
- Nutzern können mehrere Geräte für Anwesenheitserkennung zugeordnet werden
- Automatisches Anlegen aller notwendigen CCU-Systemvariablen
- Zusätzliche String- und Enum-Systemvariable zur komfortablen Darstellung des Anwesenheitsstatus aller Nutzer
- Gasterkennung anhand des Auftauchens unbekannter Geräte im Gastzugang-WLAN
- Gasterkennung kann auf gesamte WLAN/LAN-Umgebung ausgedehnt werden
- Web-basierte Konfiguration über CCU-WebUI Zugang
- HomeMatic CCU3 / RaspberryMatic
- HomeMatic CCU1
- HomeMatic CCU2
- Alle Modelle von FRITZ!Box und FRITZ!Repeater ab FRITZ!OS 6
Vor Nutzung von hm_pdetect müssen noch ein paar Dinge an den jeweiligen FRITZ! Geräten konfiguriert werden damit dieses problemlos funktioniert:
- Aufrufen der Webkonfiguration des jeweiligen FRITZ!-Gerätes (z.B. http://fritz.box/)
- Anlegen eines neuen Nutzers unter System->FRITZ!Box-Benutzer->Benutzer hinzufügen
- Beschränken der Rechte des neuen Nutzers auf FRITZ!Box Einstellungen
- Aufrufen der Heimnetz-Anmeldeeinstellungen System->FRITZ!Box-Benutzer->Anmeldung im Heimnetz
- Ändern der Anmeldeeinstellungen auf Anmeldung mit FRITZ!Box-Benuternamen und Kennwort
- Download des aktuellen Addon-Releases von Github (https://github.com/jens-maus/hm_pdetect/releases)
- Installation des Addon-Paketes (hm_pdetect-X.X.tar.gz) mittels WebUI Oberfläche der CCU
- Konfiguration des Addons über WebUI zugängliche Konfigurationswebseite
- Anlegen eines separaten Verzeichnisses für hm_pdetect:
Code: Alles auswählen
mkdir /opt/hm_pdetect
- Wechseln des aktuellen Verzeichnisses:
Code: Alles auswählen
cd /opt/hm_pdetect
- Download des hm_pdetect.sh Skriptes:
Code: Alles auswählen
wget https://github.com/jens-maus/hm_pdetect/raw/master/hm_pdetect.sh
- Download der hm_pdetect Beispielskonfiguration:
Code: Alles auswählen
wget https://github.com/jens-maus/hm_pdetect/raw/master/hm_pdetect.conf.sample
- Umbenennen der Beispielkonfiguration:
Code: Alles auswählen
mv hm_pdetect.conf.sample hm_pdetect.conf
- Anpassen der Konfiguration anhand der Kommentare in der config-Datei:
Code: Alles auswählen
vim hm_pdetect.conf
- Anlegen eines cronjobs zur intervallgesteuerten Ausführung von hm_pdetect: Hinzufügen folgender Zeilen:
Code: Alles auswählen
crontab -e
Code: Alles auswählen
*/1 * * * * /opt/hm_pdetect/hm_pdetect.sh 2>&1 >/dev/null */1 * * * * sleep 15; /opt/hm_pdetect/hm_pdetect.sh 2>&1 >/dev/null */1 * * * * sleep 30; /opt/hm_pdetect/hm_pdetect.sh 2>&1 >/dev/null */1 * * * * sleep 45; /opt/hm_pdetect/hm_pdetect.sh 2>&1 >/dev/null
Zusätzlich zum automatischen, intervallbasierten Aufrufen von hm_pdetect ist es auch möglich mittels CUxD-basierter SystemExec Aufrufe (http://www.cuxd.de/) in der CCU-basierten Programmierumgebung eine Ausführung von hm_pdetect zu bestimmten Zeiten (z.B. bei Außentüröffnung) durchführen zu lassen. Hierzu kann man in HomeMatic-Programmen die folgende beispielhafte Anweisung hinzufügen:
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/hm_pdetect/run.sh <iterations> <waittime> &");
Code: Alles auswählen
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/usr/local/addons/hm_pdetect/run.sh 5 2 &");
Support
Bei Problemen/Bugs oder Ideen zur Weiterentwicklung bitte unter dem Github-Projekt ein Ticket erstellen (https://github.com/jens-maus/hm_pdetect/issues). Für Hilfe bei der Benutzung/Konfiguration des Addons bitte hier in diesem Thread posten.
Lizenz
Die Nutzung und Entwicklung des Addons unterliegt der Version 3 der LGPL Open Source Lizenz.
Hinweis
Dieses Addon nutzt KnowHow das im Zuge folgender anderer Entwicklungen erarbeitet wurde: Viel Spass mit hm_pdetect!
Jens