openHAB – Anwesenheitserkennung mit OwnTracks und Mosquitto

Vorwort

Ähnlich wie bereits im Artikel „openHAB – Anwesenheitserkennung mittels OpenPaths“ beschrieben, möchte ich nun noch eine alternative Lösung aufzeigen, die komplett selbst gehostet werden kann. Zum Einsatz kommen

Voraussetzungen

Eine lauffähige MQTT- und OwnTracks-Installation. Zum Einrichten von Mosquitto und der openHAB Grundkonfiguration lesen Sie hier weiter.

openHAB

Mit den oben beschriebenen Voraussetzungen ist openHAB in der Lage, Geoposition, Batteriestatus sowie über die App gesetzte Waypoints zu empfangen. Hinweis: beim Erstellen der Waypoints müssen diese als „Shared“ gekennzeichnet werden.

Zunächst erstellen wir eine neue Gruppe und neue Items, diese sind im Verzeichnis /opt/openhab/configurations/items/ definiert:

In diesem Fall wird eine Gruppe gAW für die Anwesenheiten definiert. Darunter kann dann für jede Person eine Gruppe erzeugt werden, hier beispielhaft die Gruppe AW_MQTT_Stefan. Schließlich folgen Switches für die Darstellung der An- und Abwesenheiten, hier für den Bereiche „zu Hause“.  Die Location wird später mit Geokoordinaten versorgt, in der Webapp kann die Position dann in einer OSM-Karte dargestellt werden. Schließlich folgen weitere Variablen, für Länge, Breite, Genauigkeit und Batteriestatus. <username> und <device-id> sind hierbei die Attribute, die in der OwnTracks-App unter Preferences > Connection > Identification angegeben wurden.

In die Sitemap kann die Gruppe gAW als Frame eingebunden werden:

Zum Parsen der Daten bin ich hier fündig geworden und habe das für mich angepasst. Der Code muss in die Konfiguration der rules unter /opt/openhab/configurations/rules/ eingebunden werden, die zweite Zeile (import org.openhab…) ist höchstwahrscheinlich bereits vorhanden und kann auskommentiert werden:

Hat alles funktioniert, ist das Ergebnis dann wie folgt:

owntracks-mqtt

Have fun!

 

7 Gedanken zu „openHAB – Anwesenheitserkennung mit OwnTracks und Mosquitto“

  1. Vielen Dank für die tolle Übersicht. Damit habe ich es bis auf die Anwesenheitserkennung auch hinbekommen. Wieso verwendest du da einen ganz anderen Connection String (mqttitude=…) anstelle von (mqtt=“<…) ? Leider wird bei mir der Status aufgrund des Events nicht geändert…

  2. Danke für den Beitrag. Für die reine Anwesenheitserkennung ist der Einsatz des Mqttitude-Bindings eine einfachere Alternative, oder?

  3. Wie wird es in dem Sitemap eingebunden? Also die reguläre Art „Text item=PresenceStefan_PhoneMqtt“ hilft leider nicht.

    1. Es ist ja eine Gruppe definiert:
      Group gAW
      für alle Anwesenheiten bzw. unter dieser Gruppe noch eine für eine einzelne Person
      Group AW_MQTT_Stefan "Stefan" (gAW)

      Die Gruppe kann in die Sitemap als Frame eingebunden werden:
      Frame label="Anwesenheit" {
      Group item=gAW label="Anwesenheit" icon="parents"
      }

      Ich werde das noch im Artikel ergänzen.

      Bitte lass mich wissen, ob das deine Frage beantwortet. Danke.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.