Smart Home – openHAB 2 Anwesenheitserkennung
Dieser Beitrag erklärt Euch die Möglichkeiten der openHAB 2 Anwesenheitserkennung. Es gibt diverse Möglichkeiten dies zu realisieren. Ich nutze für die Anwesenheitserkennung das FritzBox TR064 Binding. Dieses Binding bietet Euch die Möglichkeit zu erkennen, ob eine bestimmte MAC Adresse im Netzwerk angemeldet ist. In diesem Beispiel wird überprüft, ob ein Smartphone im WLAN. Das Binding findet ihr nicht in der Paper UI, daher muss diesmal etwas anders vorgegangen werden. Ihr erfahrt also wie ihr das Binding auch ohne Paper UI installiert und wie die Einrichtung im Smart Home Designer aussieht. Ich habe ein FritzBox 6490 (kdg) und eine 7270 im Einsatz. Mit der 6490 hatte ich Probleme mit dem Update des Status, aber mit der 7270 v3 wurde der Status gut erkannt.
Das FritzBox TR064 Binding unterstüzt die folgenden Fritz Boxen
Die FritzBox 7270 v3 ist eine günstige Alternative.
Fritzbox 7270 v3 bei eBay
openHAB 2 Anwesenheitserkennung – manuelle Installation von Bindings
Inzwischen findet sich das FritzboxTR064 Binding in den Addons. Ruft die Seite http://openHAB_IP:8080/paperui/index.html#/extensions auf und sucht nach TR064 drückt anschließend Install (1)
Falls ihr ein Binding ein Mal nicht in der Paper UI finden könnt, ist auch eine manuelle Installation möglich. Ihr könnt generell diesem Vorgehen folgen.
Geht in das Binding Wiki von openHAB und sucht nach dem Namen des Binding. In diesem Fall „FritzBox TR064“. Klickt den entsprechenden Link des Binding an und ihr kommt auf die Wiki-Seite FritzBox TR064 Binding. Hier findet ihr neben der Beschreibung des Binding auch den Link zum Download des FritzBox TR064 Binding. Ladet die aktuelle Version des .jar File herunter und legt diese Datei in Euer Installationsverzeichnis von openHAB2 in den Unterordner …\addons.
Dies war der erste Schritt zur Installation. Ihr müsst nun das Binding entsprechend konfigurieren.
openHAB 2 Anwesenheitserkennung – Binding Konfigurieren
Ihr könnt gleich noch mal in das Verzeichnis von openhab gehen und den Unterordner …\conf\transform öffnen. Hier legt eine neue Textdatei mit dem Namen presence.map an.
Öffnet nun den Smart Home Designer und geht in den Ordner Transform. Hier öffnet ihr die eben angelegte Datei presence.map und übersetzt den Zustand 1 mit „zu Hause“ und den Zustand 0 mit „Unterwegs“ oder was auch immer ihr als Text für den Status haben wollt.
1=zu Hause 0=Unterwegs
Damit dies unter openHAB2 auch greift, fehlt ein Addon. Das Addon ist eine sogenannte Transformation und nennt sich entsprechend Map Transformation. Öffnet also die Extension in der Paper UI (http://localhost:8080/ui/index.html#/extensions) und installiert Map Transformation
Nun geht es wieder in den Smart Home Designer. Ihr legt nun Euer Item an. Wie das geht habe ich bereits im Beitrag openHAB 2 Sprachsteuerung Konfiguration im Kapitel „openHAB2 Sprachsteuerung – Konfiguration openHAB2 Designer“ beschrieben. Fügt bei Bedarf eine Gruppe für die Anwesenheit ein. Ich fasse meine Anwesenheiten in der Gruppe Anwesenheit zusammen. Aber nun zum Item. Fügt folgende Zeilen hinzu:
/* Fritzbox TR064 */ Contact fritzboxMacOnline "Anwesenheitsstatus [MAP(presence.map):%s]" <present> (Anwesenheit) { fritzboxtr064="maconline:AA-BB-CC-DD-EE-FF" }
Was bedeuten diese Zeilen? Über diese Syntax wird ein Kontakt
- mit dem Namen fritzboxMacOnline
- mit der Bezeichnung Anwesenheitsstatus
- mit einem Mapping [MAP(presence.map):%s] wird der Status 0 und 1 in den Text aus der presence.map. übersetzt
- mit dem Icon <present>
- in der Gruppe (Anwesenheit)
- mit der Prüfung auf die MAC Adresse { fritzboxtr064=“maconline:AA-BB-CC-DD-EE-FF“} definiert
Anstatt AA-BB-CC-DD-EE-FF gebt ihr natürlich Eure MAC Adresse an. Diese ermittelt ihr entweder direkt über die FritzBox oder ihr macht es am Handy, in dem ihr in die erweiterten WLAN Einstellungen geht. (Screenshots Android)
Wollt ihr den Status über Eure Sitemap erreichen, pflegt entsprechend Eure Sitemap. Bei mir läuft es wie beschrieben über eine eigene Gruppe. Daher ergänze ich bei mir folgende Zeile.
Group item=Anwesenheit label="Anwesenheiten"
Nach diesen Schritten sollte bereits die Anwesenheit ergänzt sein.
Innerhalb der Gruppe könnt ihr den Status sehen.
Dieser wechselt entsprechend von „zu Hause“ nach „Unterwegs“ sobald jemand das Haus verlässt.
Mein nächster Beitrag wird sich mit der Einbindung eines Google Kalendar per CalDAV Binding befassen. Warum wird noch nicht verraten. Bleibt dran …
[…] im Haus aus und Außen aus. Weiterhin verwende ich das FritzBox Binding, welches ich auch zur Anwesenheitserkennung nutze, zum Ausschalten des WLAN. Ich könnte auch weitere Dinge automatisieren wie z.B. einen Wecker […]
[…] Smart Home – openHAB 2 Anwesenheitserkennung […]
Danke für das Tutorial.
Kleine Anmerkung: ich vermisse zu Anfang eine Erläuterung, wie die Anwesenheitserkennung denn eigentlich funktioniert.
Nur aus dem Kontext heraus kann ich in etwa erschließen, dass diese Methode wohl so funktioniert, dass ein Smartphone mit aktivem WLan der „Auslöser“ ist.
Die Info zu Anfang wäre für mich ganz hilfreich gewesen, da diese Methode für mich dann schonmal ausscheidet, weil ich zu Hause kein WLan am Smartphone aktiv habe. Zum Surfen nutze ich den Laptop / PC / Tablet, für WHatsapp etc. brauche ich kein WLan und schone lieber den Smartpfone-Akku.
Gerne. Da hast Du recht. Ich werde die Einleitung nochmal anpassen.
Hallo,
hat schon jemand die Erkennung mit einer FritzBox 7490 (OS 6.60) erfolgreich getestet?
Das Script funktioniert bei mir wie oben beschrieben.
Bei der FritzBox ist die Mac-Adresse aber immer als „Aktive Verbindung“ vorhanden – auch wenn ich mit dem SmartPhone das Haus (WLAN) verlasse. Starte ich dann die FritzBox einmal neu, wird die Mac-Adresse entfernt.
Schöne Grüße,
Reinhard
Ich habe jetzt meine FritzBox zurückgesetzt. Jetzt scheint die Präsenzsteuerung mit der 7490 un der aktuellen Firmware zu funktionieren.
Hallo Reinhard,
Danke für die Info und viel Erfolg weiterhin.
Beste Grüße
Thomas
Sorry aber hierbei gibt es ein Problem, moderne Handys schalten zum Strom sparen das WLAN ab, somit funktioniert die WLAN Methode nicht, man sollte da er etwas mit Bluetooth LE versuchen, welches sich automatisch beim Eintritt in das Haus verbindet und auch verbunden bleibt.
Hallo Stefan,
ist bei Android normalerweise einfach eine Einstellungssache. Oben siehst Du den Screenshot mit den WLAN Einstellungen vom Smartphone. Hier gibt es eine Option „WLAN im Standby an“. Die steht bei mir auf Immer. Daher habe ich hier keinerlei Probleme. Bluetooth LE ist eine Alternative aufgrund der geringen Reichweite war es für mich keine Alternative. WLAN läuft stabil und hat ausreichend Empfang für meine Bedürfnisse.
Grüße
Thomas
Hallo Thomas,
jetzt habe ich noch ein Problem, sobald ich das Binding in den Addon Ordner werfe, habe ich Papier UI und im REST API immer die Fehlermeldung „ERROR: 500 – Intenral Server Error.
Die geht auch nicht mehr weg. Auch nicht wenn ich das Binding aus dem Addon Ordner lösche 🙁
Liebe Grüße Thomas
Sorry habe den Fehler schon gefunden. Ist an den Fritzbox Items gelegen.
Hallo Thomas,
könntest du bitte deine Erkenntnisse zum ERROR 500 Problem teilen, ich habe genau das selbe Thema. Sobald ich ein Contact Item zur Anwesenheitserkennung eintrage, kommt dieser Fehler.
Contact fboxOnlineTobi "Tobi Handy [MAP(presence.map):%d]" (gAnwesend) {fritzboxtr064="maconline:xx-xx-xx-xx-xx-xx"}
Gruß Tobi
Hallo Tobi,
kann mit der Sitemap zusammenhängen. Mehr kann ich ohne Debug Log nicht sagen. Prüfe, ob hier alles richtig ist.
Grüße
Thomas
Hallo,
es liegt an dem %d
Wenn ich das einfüge bekomme ich nur noch ERROR 500
Hallo Thomas,
danke für deinen Hinweis. Fehler hört sich nach diesem Bug an: https://github.com/openhab/openhab.android/issues/193. Ich lasse mich nun über den Status informieren. Wenn der Bug weg ist, schreibe ich es hier rein. So können die Nutzer gezielt ein Update machen =)
Grüße
Thomas
Hallo Thomas,
ich habe das ganze jetzt umgangen, indem ich das %d in den Items weggelassen habe. Dafür aber in der Sitemap eingefügt. So funktioniert das bei mir einwandfrei.
Item:
Contact Julia_status „Presence (Wifi)“ { fritzboxtr064=“maconline:00-00-00-00-00-00″ }
Sitemap:
Frame label=“Wer ist zuhause?“ {
Text item=Julia_status label=“Anwesenheitsstatus Julia [MAP(presence.map):%d]“
}
Ich hoffe das hilf einigen weiter 🙂
Danke 🙂
Hab es so wie du gemacht und funktioniert!
[…] Smart Home – openHAB 2 Anwesenheitserkennung […]
Moin Zusammen,
hat es einen bestimmten Grund warum dieses Binding nicht mit jeder Fritzbox funktioniert? habe es zum testen im Büro an eine 7490 gehabt da hat es funktioniert! Bei mir zuhause an der 3370 funktioniert es nicht obwohl ich in den Heimnetz Einstellungen tr064 aktiviert hab.
jemand eine Idee wodran das liegen könnte?
Danke im vorraus!
MfG Jan
Hallo Jan,
in der Original Binding Beschreibung steht nicht, dass die FB 3370 unterstützt wird. Muss nichts heißen, aber daher bin ich mir nicht ganz sicher. Was Du auf jeden Fall testen solltest ist ein Neustart der FB, falls Du dies noch nicht gemacht hast.
Beste Grüße
Thomas
hmm.. bei mir funzt das nicht … 🙁 hab ne 6360 von kdg sogar User und PW im den Services /Binding und der 6360 hinterlegt. aber irgendwie wird die presence.map im Group Item nicht angezeigt. das Feld beliebt immer leer.
was ich nicht verstanden hab bei der Item anfrage : Contact FritzboxMacOnline holt er sich da den Kontakt über den Service ? und ist das Wort FritzboxMacOnline über das Binding gegeben ?
Hallo Christian,
Lass die Map Transformation mal aus dem Binding. Zeigt der Contact den Zustand überhaupt an? Falls nicht, hast du nach der Aktivierung des Zugriffs in der Fritz die Box noch mal gestartet?
Merke auch gerade, dass ich den Beitrag aktualisieren muss =)
Beste Grüße
Thomas
Hallo Thomas,
Transform Binding deinstalliert , und Fritzbox neu gestartet. Anwesenheitsstatus ist weiterhin leer.
Wie kann ich testen das der Login in der Fritzbox funktioniert?
lg
Christian
Hey Christian,
was sagt denn folgender Aufruf: http://FritzBox_IP:49000/tr64desc.xml? Siehst Du den Inhalt der XML Datei?
Grüße
Thomas
Moin Thomas,
ja unter http://IP Fritzbox:49000/tr64desc.xml
bekomm ich eine Auflistung der Fitzboxdaten, das spielt.
Moin Christian,
hmpf, wie sieht dein Item und die Sitemap aus?
Grüße
Thomas
Hi Thomas,
eigentlich genau so wie du es angegeben hast, ich hab auch schon die Version Tobias versucht, ohne Erfolg
Sidemap:
Group item=Anwesenheit label=“Anwesenheit“
Item:
Contact fritzboxMacOnline „Anwesenheitsstatus [MAP(presence.map):%d]“ (Anwesenheit) { fritzboxtr064=“maconline: xx:xx:xx:xx:xx:xx“ }
lg christian
Nimm mal die MAP Transformation raus. Siehst Du dann etwas?
Contact fritzboxMacOnline "Anwesenheitsstatus" (Anwesenheit) { fritzboxtr064="maconline: xx:xx:xx:xx:xx:xx" }
Das ist wieder die Abteilung , Hokuspokus :-)…. alle Binding deinstalliert, danach alles nochmal gemacht.Zack da ging es.
Allerdings mit der Sidemap :
Text item=fbMACOnline label=“Anwesend [MAP(presence.map):%d]“
Danke bis hierher !… #derteufelisteineichhörnchen
Eine Frage :
wie könnte denn eine Rule aussehen , wenn ich die Anwesenheit in einen KNX Befehl umwandeln möchte ?
lg
christian
Au Backe, so ist das manchmal. Aber wenn es läuft, dann läuft es. =)
Schau Dir mal den aktuellen Beitrag HomeMatic Heizungssteuerung an. Hier steht im Kapitel „HomeMatic – Heizungssteuerung Regeln konfigurieren“ eine Regel, die Du kopieren kannst. Den Kontakt co_fenster erstetzt Du durch deinen Kontakt fbMACOnline. Die IF Abfrage auf den Status passt du entsprechend deiner Begriffe an („CLOSED“ ist z.B. „zu Hause“ oder was auch immer). Wenn Du bereits KNX Items hast, ersetzt Du zu guter Letzt das Item he_set_temp durch dein KNX Item. Den Wert in der Klammer von sendCommand änderst auf die entspechenden Werte für den KNX Bus. z.B. ON / OFF für Schalter/Licht, MOVE, STOP für Rollo… postUpdate brauchst Du nicht.
Ich hoffe, dass ist einigermaßen Verständlich…
BG
Thomas
Mega !…
Danke, hab ich soweit verstanden,
ich hab mal zum testen eine Rule angelegt:
rule „Christian Anwesenheit“
when Item fbMACOnlineCR received update
then
if
(fbMACOnlineCR.state.toString == „zuhause“)
sendTelegram(„christian“,“zuhause“)
else
(fbMACOnlineCR.state.toString == „unterwegs“)
sendTelegram(„christian“,“tschüss“)
end
daraus resultierend sendet er alle 10 Sekunden (de Takt indem die Fritzbox abgefragt wird ein Telegramm mit tschüss. Obwohl der Status zuhause ist. …hmm
Auf jeden Fall ein spannendes Thema 🙂
lg christian
Hallo Christian,
als Ergänzung. Vielleicht hilft Dir Regel von Rich. Scheint schön schlank zu sein und mögliche kurze Unterbrechungen über das Expire Binding zu regeln.
https://community.openhab.org/t/generic-presence-detection/17878/11
Beste Grüße
Thomas
Hallo Christian,
erst mal Danke für die Spende. Ich finde es super, dass Du immer etwas gibst =)
Hmm, hast Du mal im openHAB Verzeichnis unter …userdata\logs deine Events zum Item fbMACOnlineCR geprüft. Wechselt der Status hier auch hin und her?
LGz
Thomas
Hallo;
Erstmal grosses Danke an den Verfasser! Super beschrieben und gut verständlich!
Leider funktioniert bei mir die Anwesenheitserkennung auch nicht. Ich hab die verschiedenen Vorschläge getestet, und auch alles nochmal neu aufgesetzt incl. FB Restart.
Ich sehe den Status nicht ob ich anwesend bin oder nicht. Also in der Gruppe ist gar kein Eintrag zu sehen.
Ich müsste nochmal im Detail wissen, wie ich prüfen kann, ob der Contact überhaupt einen Wert von der FB bekommt und ob er den auch ausgibt. Gibts dazu irgendeine Möglichkeit?
Vielen Dank vorab;
Wilhelm
Super Anleitungen hier!
Trotzdem bekomme ich das leider irgendwie nicht hin: sobald ich das item ( Contact fritzboxMacOnline „Anwesenheitsstatus [MAP(presence.map):%d]“ (Anwesenheit) { fritzboxtr064=“maconline:XY:XY:XY:BA:B6:68″ } ) hinzufüge bekomme ich im log folgenden Fehler:
2017-10-27 18:38:37.615 [ERROR] [ing.fritzboxtr064.internal.Tr064Comm] – Error received from FritzBox:
s:Client
UPnPError
402
Invalid Args
. SOAP request was: maconline:XY:XY:XY:BA:B6:68
Fritz!Box ist eine 7430, openhab2.1 und ich bin verzweifelt 😉
ich korrigiere: der Fehler kommt auch ohne Eintrag des Items – anscheinend ist das Binding bei mir nicht in Ordnung?! Dann weiß ich auch nicht weiter…
Hallo Carsten,
wie hast Du das Binding installiert? So wie im Beitrag? Das gibt es inzwischen auch über die Paper UI. Beitrag ist aktualisiert. Versuchs mal und Sorry.
Beste Grüße
Thomas
Hallo zusammen,
hat jemand von Euch das Binding mit der FritzBox 7580 getestet?
Danke für Eure Hilfe!
Gruß
Jörg
Hallo! 🙂 Das Binding TR064 wurde mir in der Paper UI nicht angezeigt und ich habe mir die jar-Datei nun so heruntergeladen und in das addon-Verzeichnis kopiert. Leider wird mir in der Paper UI nun auch nicht der Reiter „Transformations“ angezeigt und ich kann demnach „Map Transformations“ nicht installieren…
Woran kann es liegen, dass mir „Transformations“ in der Paper UI nicht angezeigt wird? Eine Idee?