Wie du mit einem Sonoff POW deine Waschmaschine smart machst (Teil 3)


In Teil 1 habe ich dir gezeigt, wie du die Leistungsdaten deiner Waschmaschine ins Netz bringst und in Teil 2 hast du erfahren, wie openHAB die Daten auswertet und den Zustand der Waschmaschine ermittelt.

In diesem Blog-Post erkläre ich dir, wie du die Daten visualisierst und wie du Nachrichten auf dem Handy erhältst, wenn die Wäsche fertig ist.

Falls du das HABPanel noch nicht installiert hast, holst du das im Paper UI nach. Unter Add-ons wählst du den Reiter USER INTERFACES und installierst HABPanel. Daraufhin erscheint auf deiner openHAB Startseite der Eintrag HABPANEL. Du erreichst es unter der URL http://<dein Server:Port>/habpanel/index.html.

Falls noch nicht geschehen, lege mit Add new dashboard einen neuen Eintrag an und vergib einen beliebigen Namen. Danach klickst du das neue Dashboard an und du landest im Editor für die Dashboard-Einträge.

Wähle oben rechts Add Widget und Template. Klicke auf die drei Punkte im Widget und auf Edit…. Bei einem Template kannst du direkt das HTML für die Anzeige eintragen. Es handelt sich um eine Angular JS Komponente. Somit stehen dir die verschiedenen Elemente, wie z.B. ng-if, zur Verfügung.

Füge den folgenden HTML-Code ein:

<div style="font-size: 20px">
  <widget-icon ng-if="itemValue('Cellar_Bathroom_Washingmachine_OpState')=='Aus'" iconset="'eclipse-smarthome-classic'" icon="'washingmachine_2-0'" size="50"></widget-icon>
  <div ng-if="itemValue('Cellar_Bathroom_Washingmachine_OpState')=='Aus'">Aus</div>
 
  <widget-icon ng-if="itemValue('Cellar_Bathroom_Washingmachine_OpState')=='Läuft'" iconset="'eclipse-smarthome-classic'" icon="'washingmachine_2-1'" size="50"></widget-icon>
  <div ng-if="itemValue('Cellar_Bathroom_Washingmachine_OpState')=='Läuft'" style="color: red">Läuft</div>
 
  <widget-icon ng-if="itemValue('Cellar_Bathroom_Washingmachine_OpState')=='Fertig'" iconset="'eclipse-smarthome-classic'" icon="'washingmachine_2-2'" size="50"></widget-icon>
  <div ng-if="itemValue('Cellar_Bathroom_Washingmachine_OpState')=='Fertig'" style="color: green">Fertig</div>
</div>

Hier habe ich drei Blöcke angelegt, die je nach Zustand der Waschmaschine angezeigt werden. Den Zustand frage ich über die Java-Script-Funktion itemValue() ab. Als Parameter gibt man das Item aus der Konfiguration an. Über die AngularJS Direktive ng-if wird dann nur das gewünschte Element angezeigt.

Zum Speichern klickst du auf Save der Template Settings und auf Save im Dashboard, danach auf Run. Und schon wird dir der Status im Dashboard angezeigt :-)

Für die Benachrichtigung am Handy verwende ich den Messenger Telegram. Installiere zuerst das Modul wieder über das Paper UI im Bereich Add-ons. Unter dem Reiter Actions findest du die Telegram Action. Da das Modul noch in der 1.X Version vorliegt, geschieht die Konfiguration in der Textdatei serivces/telegram.cfg.

Für die Einrichtung benötigst du ein Token und die Chat-ID. Öffne in deiner Telegram App den Chat mit BotFather. Sende /newbot und folge den Anweisungen. Denke dir also ein paar Namen aus. Am Ende erhältst du den Token für die API. Du siehst auch einen Link zum Chat mit deinem neuen Bot. Den wählst du aus sendest eine beliebige Nachricht in den neuen Chat. Nun kannst du in einem Web-Browser die URL

https://api.telegram.org/bot/getUpdates

aufrufen und erhältst eine JSON-Antwort. Hierin ist hinter “id” die Benötigte Chat-ID enthalten.

Die so gewonnen Daten trägst du in der Konfigurationsdatei ein:

bots=michael
michael.chatId=112233445
michael.token=123123123:ABCabc...

Als letztes fehlt uns noch eine Regel, die eine Nachricht beim Wechsel des Waschmaschinenstatus von “Läuft” auf “Fertig” sendet:

rule "Washingmachine state: Notify finished"
when
    Item Cellar_Bathroom_Washingmachine_OpState changed from 1 to 2
then
    logInfo(filename, "Washingmachine done")
    sendTelegram("michael", "Waschmaschine fertig.")
end

Wichtig ist hier, dass in dem when-Zweig die Statuswerte als Zahlen (hier 1 und 2) und nicht als Variablen-Namen (MODE_ACTIVE oder MODE_FINISHED) stehen. Ansonsten wird die Regeln nicht ausgeführt. (Danke an Andreas für’s rausfinden)

Das war’s soweit mit der Waschmaschine. Den Trockner habe ich genauso eingebunden. Hier ist der Unterschied, dass es nur die Zustände Aus und Läuft gibt. Bei meinem Trockner kann ich den Unterschied zwischen “Fertig” und “Aus” nicht anhand der Leistungsaufnahme unterscheiden. Das vereinfacht die Konfiguration im Endeffekt etwas.