Tutorial Teil 2: Puck.js als Sensor fürs Smarthome

Im ersten Teil des Tutorials habe ich gezeigt, wie der schlaue Knopf Puck.js programmiert werden muss, um überhaupt Daten an das Smarthome zu funken. Jetzt nun der zweite Teil des Ganzen: wie können die Daten von OpenHAB empfangen werden und dort weiter verarbeitet werden.

Vom Prinzip her ist auch dieser Schritt eigentlich einfach. Eigentlich, denn hier lauert die eine oder andere Stolperfalle. Zunächst die Grundlagen. Um vom im vorherigen Teil installierten mosquitto-Server MQTT Daten verarbeiten zu können, muss das MQTT-Binding installiert werden. Viel mehr als die Basis-Konfiguration braucht es dort eigentlich nicht. Ihr müsst also lediglich dem MQTT-Binding die URL des mosquitto-Servers mitteilen.

Stolperstein Binding-Definition

Etwas komplizierter wird es dann schon beim Erstellen des Items. Dafür gibt es zwei Hauptgründe. Schon der erste hat mir einige Kopfschmerzen bereitet, dabei war die Lösung im Endeffekt recht einfach. Der Doppelpunkt (im Englischen: Colon) dient in der Definition der Items im MQTT-Binding nämlich der Trennung der einzelnen Bereiche. Dummerweise besteht eine MAC-Adresse aus gleich mehreren Doppelpunkten. Im MQTT-Binding heißt es denn auch:

If a colon is part of the topic, use \: to escape the colon.
Klingt gut, funktioniert aber leider nicht. Nach einigem Recherchieren fand ich dann heraus, dass der Escape für den Doppelpunkt ein doppelter Backslash ist. Statt eines Doppelpunktes in der MAC-Adresse schreibt Ihr also \\:

Das ist schon das ganze Geheimnis, um die Sensordaten des Puck darstellen zu können. Allerdings bedeutet Darstellung nicht gleich Verarbeitung. Ohne weitere Anpassungen zeigt der Sensor nämlich erst einmal [65] an. Was für uns Menschen logisch scheint – der Sensor hat einen Wert von 65 – muss man einem Computer erst beibringen. Deswegen gehört an das Ende des Items noch eine Transformation, wie ebenfalls in der Dokumentation des MQTT-Bindings beschrieben. Um in diesem Fall aus dem String die wichtigen Zahlen – 65 im obigen Beispiel – zu extrahieren, sollte deswegen noch

REGEX(.*?([0-9]+).*)

An das Item angehängt werden. Welche Transformation die Richtige ist, lässt sich hier recht gut nachlesen. Das ganze Item sieht dann ungefähr so aus:

Number Lichtsensor "Lichtsensor [%s]" (Gruppe_Lichter) { mqtt="<[url-des-mqtt-servers:/ble/advertise/MA\\:C_\\:AD\\:ES\\:SE\\:XY/2a04:state:REGEX(.*?([0-9]+).*)]" } 

Das war es aber dann wirklich. In der Sitemap sieht das Ganze dann so aus:

Persistence macht Smarthomes schlau

Und mit dieser Zahl könnt Ihr dann hingehen, und Regeln erstellen. Bei mir soll es die Regel sein, bei besonders starkem Sonnenlicht (ergo hoher Wert des Lichtsensors) die Jalousien automatisch herunterzufahren. Allerdings fehlt dazu noch eine weitere Kleinigkeit. Schließlich möchte ich nicht, dass beim Vorbeizug einer Wolke die Jalousie ständig hoch- und wieder runterfährt. Dazu wiederum gibt es in OpenHAB die Möglichkeit, eine „Persistence“ einzurichten. Das bedeutet (erstmal) nichts weiter, als dass Daten gespeichert werden. Ist aber deswegen interessant, weil man nur mit gespeicherten Daten Rechenoperationen anstellen kann, wie z.B. einen Durchschnittswert zu bilden. Auch dazu werde ich noch ein kleines Tutorial einstellen – denn erst mit Persistence kann das Smarthome so richtig schlau werden!

Patrick Boch

Patrick beschäftigt sich beruflich schon länger mit Sicherheit - allerdings für eine andere Zielgruppe. Privat sorgt er lieber für ein smartes - und sicheres - Zuhause.

Das könnte Dich auch interessieren …

1 Antwort

  1. Klaus Henopp sagt:

    Sicherheit im eignen Haus und Wohnung ist ein Thema das immer wichtiger wird. Durch weiter ständig steigende Zahlen von Haus und Wohnungseinbrüchen sollte man sich umfangreich informieren. Eine Möglichkeit sind Zeit gesteuerte Rolladen. Dadurch können Einbrecher abgeschreckt werden, da sie den Eindruck haben, dass die Bewohner anwesend sind.

Schreibe einen Kommentar

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

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen