Die Waschmaschine meldet sich zurück Teil 2 – Integration in openHAB

Erneut sind zwei Wochen in der ICT-WG verstrichen und einiges ist passiert. So hat Thomas unsere Pflanzen mittels den Koubachi Sensoren in unser Smart-Home integriert. Gleichzeitig konnten wir aber auch viele interessante neue Kontakte knüpfen, beispielsweise während unseres Besuchs im iHomeLab in Luzern. Heute aber wollen wir euch, in Anlehnung an den letzten Artikel zum Thema myStrom  sowie dem Userwunsch von Marcus entsprechend, aufzeigen, wie eine Integration in openHAB aussehen kann.

Im Vergleich zur bisherigen Lösung vereinfacht sich der Aufbau und erhöht den Komfort, da keine direkte Java Programmierung mehr notwendig ist. Gleichzeitig ist es auch nicht mehr nötig, zwei Systeme (bestehendes openHAB und eigene Java-Anwendung) zu betreiben. Ziel ist es hierbei, das seit wenigen Wochen erhältliche myStrom- und E-Mail-Plugin für den openHAB-Server zu installieren und zu konfigurieren. Zusätzlich wird beschrieben, wie ein mögliches Regelwerk erstellt werden kann, das die Benutzer der Waschmaschine / Tumbler / Geschirrspüler benachrichtigt, sobald ihre Wäsche fertig ist.

Schritt eins – Konfiguration E-Mail Addon
Um openHAB mit der Funktionalität des E-Mailversands auszustatten ist ein Addon erforderlich. In unserem Fall war die Datei „org.openhab.action.mail-1.6.2.jar“ bereits im Addonverzeichnis vorhanden, aber noch nicht konfiguriert. Das entsprechende Konfigurationsfile befindet sich im openHAB-Verzeichnis unter „configurations/openhab.cfg“:

############### Mail Action configuration ###############
# The SMTP server hostname, e.g. "smtp.gmail.com"
mail:hostname=smtp.gmail.com
# the SMTP port to use (optional, defaults to 25 (resp. 587 for TLS))
mail:port=587
# the username and password if the SMTP server requires authentication
mail:username=swisscomictwg
mail:password=*******
# The email address to use for sending mails
mail:from=swisscomictwg@gmail.com
# set to "true", if TLS should be used for the connection
# (optional, defaults to false)
mail:tls=true

Unser Beispiel zeigt, wie eine Konfiguration bei einem GMail-Konto aussehen kann. Um zu prüfen, ob die Konfiguration bis zu diesem Zeitpunkt korrekt ist, empfiehlt es sich, eine Testmail zu versenden. Als Beispiel zeige ich euch, wie dies beim Öffnen der Türe geschehen kann. Solltet ihr keine solche Regel verwenden oder openHAB neu installiert haben, kann als Bedingung auch der Systemstart verwendet werden.

rule "FrontDoorOpened"
when Item FrontDoorHallway changed from ON to OFF then
   sendMail("swisscomictwg@gmail.com","Tuer wurde geoeffnet","")
end

Schritt zwei – Konfiguration myStrom Addon
Als erstes muss das myStrom Binding vom Entwickler „coolweb“ für openHAB (aktuelle Version V0.0.2) heruntergeladen werden. Dieses wird identisch zum E-Mail-Addon in Schritt eins dem Addonordner hinzugefügt. Um openHAB mit dem myStrom Portal zu verbinden, müssen die Benutzerdaten in der configuration\openhab.cfg hinterlegt werden. Somit kann auf die vom Hersteller zur Verfügung gestellte öffentliche API zugegriffen werden.

############### mystromecopower Binding
mystromecopower:userName=swisscomictwg@gmail.com
mystromecopower:password=*******

Um unsere drei Geräte, die wir überwachen möchten, abfragen zu können, ist es erforderlich, diese in der configuration\mystrom.items wie folgt anzulegen. Der Übersichtlichkeit wegen werden die folgenden Schritte nur noch anhand des Beispiels der Waschmaschine beschrieben.

Number nWaschmaschine "Waschmaschine [%.2f W]" (kueche) {mystromecopower="Waschmaschine"}
Switch sWmDaniel "WM-Daniel" (kueche)
Switch sWmThomas "WM-Thomas" (kueche)
Switch sWmJohannes "WM-Johannes" (kueche)

Die „Number“ Value beinhaltet dabei den aktuellen Stromverbrauch der Waschmaschine. Durch die drei „Switches“ besteht für die Anwender die Möglichkeit, eine Waschladung individuell auf sich zu starten, damit die Mitbewohner nicht ebenfalls benachrichtigt werden.

Schritt drei – Definition der Regeln / Logik in openHAB
Bis zu diesem Schritt sind die benötigten Funktionalitäten (E-Mailfunktionalität und myStrom Connection) einsatzbereit und können manuell verwendet werden. Um die geforderte Funktionalität jedoch zu automatisieren, muss das gewünschte Verhalten in Regeln definiert werden. Das Regelwerk wird dabei jeweils ausgeführt, sobald sich der Stromverbrauch der Waschmaschine ändert. Anhand der Grafik aus dem myStrom Portal kann man erkennen, wie ein solcher Waschvorgang aussieht.

Waschmaschine myStrom

Fällt dabei der Stromverbrauch unter zwei Watt, kann daraus geschlossen werden, dass der Vorgang abgeschlossen ist. Eine E-Mail wird in diesem Falle versendet, das die Bewohner benachrichtigt. Dies würde allgemein im letzten „else if“ erfolgen. Falls einer der Bewohner seinen Switch auf „ON“ setzt, kann bereits in einer Bedingung zuvor festgestellt werden, um wessen Wäsche es sich handelt. Somit wird nur der betroffene Bewohner benachrichtigt.

rule rWashingMachine
when
   Item nWaschmaschine changed
then
   if (nWaschmaschine.state < 2 && sWmDaniel.state == ON)
   {
      sendMail("daniel@mail.ch","Waschmaschine fertig","")
      sendCommand(sWmDaniel, OFF)
   }
   else if (nWaschmaschine.state < 2 && sWmThomas.state == ON)
   {
      sendMail("thomas@mail.ch","Waschmaschine ist fertig","")
      sendCommand(sWmThomas, OFF)
   }
   else if (nWaschmaschine.state < 2 && sWmJohannes.state == ON)
   {
      sendMail("johannes@mail.ch","Waschmaschine ist fertig","")
      sendCommand(sWmJohannes, OFF)
   }
   else if (nWaschmaschine.state < 2 && sWmDaniel.state == OFF ||
     sWmThomas.state == OFF || sWmJohannes.state == OFF )
   {
      sendMail("all3@mail.ch","Waschmaschine ist fertig","")
   }
end

Analog kann dieser Regelsatz auch für andere Geräte wie Tumbler oder Geschirrspüler verwendet werden. Gegebenenfalls ist es noch notwendig, den Schwellwert innerhalb der Bedingung für das Fertigstellen auf das jeweilige Gerät individuell anzupassen. Wir wünschen euch viel Spass beim Umsetzen und freuen uns natürlich über eure Rückmeldungen und Erfahrungen in den Kommentaren.

Weitere Informationen findet ihr unter folgenden Links: