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


Wenn du zur Waschmaschine in den Keller laufen must, kann es passieren, dass du den weiten Weg angetreten bist, um festzustellen, dass sie noch nicht fertig ist. Wäre es nicht schön wenn dir das gute Stück sagen würde: “Hey, Micha! Ich habe fertig. Räum' mich aus.”?

Jetzt verrichtet meine Maschine schon seit etlichen Jahren treu ihre Dienste (und ich hoffe, dass bleibt auch so). Also kein Grund eine moderne, smarte Version zu kaufen.

Wie du deine Waschmaschine doch noch gesprächig machst, erfährst du hier.

Den Zustand meiner Waschmaschine kann ich leicht über die Leistungsaufnahme feststellen.

Zustand Leistungsaufnahme
Aus < 3W
Läuft > 5W im Mittel
Fertig ca. 4W

Es ist so, dass die Maschine im Betrieb im Mittel mehr als 5W verbraucht. Die Leistungsaufnahme ist beim Heizen und Schleudern natürlich wesentlich höher. Wenn sie aber so vor sich hin wäscht und der Motor kurz stoppt, kann es sein, dass die Leistungsaufnahme auch unter 5W fällt. Also werde ich den Mittelwert der letzten 5 Minuten heranziehen, um den Zustand “Läuft” zu ermitteln.

Wenn Sie fertig ist, leuchten nur noch die Lämpchen und die Leistungsaufnahme liegt so bei 4W.

Ausgeschaltet verbraucht sie auf jeden Fall weniger als 3W.

Das kann bei deiner Maschine anders sein. Du must die Werte dann anpassen.

Um die Leistungsdaten ins Netzwerk zu bekommen, verwende ich einen Sonoff POW WiFi Switch. Er bindet sich im heimischen WLAN ein und sendet die Leistungsdaten an den Server. zusätzlich könnte man den angeschlossenen Verbraucher auch ein und aus schalten. Diese Funktion benutze ich aber nicht. Im Gegenteil ich habe sie sogar abgeschaltet, damit die Waschmaschine immer bereit ist.

Übersicht

Die zentrale Stelle der Hausautomatisierung ist bei mir openHAB. Auf dem Sonoff ist die alternative Firmware Tasmota installiert. Als Bindeglied wird der MQTT Broker Mosquitto eingesetzt (man beachte die zwei T).

Der Sonoff WiFi Switch meldet in regelmäßigen Abständen die Leistungsdaten des angeschlossenen Geräts (also der Waschmaschine) an den MQTT Broker. Es wird bei mir das Topic sonoff_pow_1/tele/SENSOR geschrieben (publish). Jeder mit Zugriff auf den Broker kann sich nun informieren lassen, wenn sich hier die Werte ändern (subscribe). Das macht bei mir openHAB. openHAB wertet dann die Leitstungsdaten aus und visualisiert den Status. Bei Statusänderungen sendet openHAB dann via Telegram einen Nachricht.

Auf meine openHAB Server (ein Raspberry Pi mit USB Festplatte) ist auch der MQTT Broker Mosquitto installiert. Wie das geht kannst du hier nachlesen.

Nachdem du die alternative Firmware Tasmota auf dem Sonoff installiert hast, richtest du noch die Verbindung zum Broker ein.

Im Webinterface des Sonoff rufst du den Configuration und dann Configure MQTT auf. Bei mir sieht das ganze so aus:

Sonoff Pow Config

Neben den üblichen Verbindungsdaten (Host, Port, User und Password) ist hier noch Topic und Full Topic interessant.

Full Topic beschreibt, wie der Name schon sagt, das komplette Topic, in das die Daten geschrieben werden (gepublished). Es setzt sich in meinem Fall aus zwei Variablen zusammen. %topic% wird durch den Wert des anderen Eingabefeldes (also Topic, hier sonoff_pow_1) ersetzt und beschreibt das Gerät allgemein. %prefix% wird durch stat, tele oder cmnd ersetzt und unterteilt die Art der Meldungen. stat enthält Statusinformationen, tele steht für Telemetriedaten und an cmnd werden Befehle gesendet.

Im Standard ist das Full Topic anders herum aufgebaut (%prefix%/%topic%/). Bitte daran denken, wenn du die folgenden Befehle siehst. Du must natürlich auch immer deinen Gerätenamen ersetzen; bei mir heißt das Gerät immer sonoff_pow_1.

Um zu testen ob sich der Sonoff mit dem Broker verbunden hat, verwendest du einen MQTT Client (z.B. MQTTLens oder MQTTfx) und subscribst dich mit allen Topics des Sonoff. Ich zeige die hier die Befehle mit den Linux Clients mosquitto_sub und mosquitto_pub. Die kannst du direkt vom Raspberry Pi aus aufrufen.

$ mosquitto_sub -u admin -P geheim -h 192.168.6.3 -v -t sonoff_pow_1/#
sonoff_pow_1/tele/LWT Online

Der Sonoff hat eine Nachricht bei der Anmeldung gesendet, die jeder Client bei der Abfrage erhält. Das ist sonoff_pow_1/tele/LWT. Das LWT steht für Last Will and Testament. Der Sonoff hat dem Broker mitgeteilt, dass in dieses Topic “Offline” geschrieben werden soll, wenn mal die Verbindung abbricht. Hierüber können wir also den Verbindungsstatus des Sonoff ablesen.

Als letzten Konfigurationsschritt am Sonoff steht noch die Übertragungshäufigkeit und der PowerOnState an.

Der PowerOnState legt fest, wie sich der Sonoff verhält, wenn er mit Strom versorgt wird. Ich habe es bei mir so eingerichtet, dass er den Verbraucher (also meine Waschmaschine) sofort einschaltet. Da ich sie sowieso nicht aus der Ferne schalten möchte, habe ich auch festgelegt, dass Steuerung des Relais abgeschaltet ist. Ich habe keine Lust darauf, dass die Maschine nicht geht, nur weil gerade Stromausfall war und mein openHAB kein Bock hat.

Durch senden eines MQTT Kommandos kann der aktuell eingestellte Wert abgefragt und auch der gewünschte Wert eingestellt werden. Starte, wie oben beschrieben, in einem Terminal den mosquitte_sub Befehl. In einem zweiten Terminal gibst du folgendes ein:

$ mosquitto_pub -u admin -P geheim -h 192.168.6.3 -t sonoff_pow_1/cmnd/PowerOnState -m ""

Die Ausgabe im ersten Terminal sieht ungefähr so aus:

sonoff_pow_1/tele/LWT Online
sonoff_pow_1/cmnd/PowerOnState (null)
sonoff_pow_1/stat/RESULT {"PowerOnState":3}

Eine Beschreibung der Status findest du im Tasmota-Wiki. Ich möchte gerne den PowerOnState 4 einrichten. Also gebe ich folgendes ein:

$ mosquitto_pub -u admin -P geheim -h 192.168.6.3 -t sonoff_pow_1/cmnd/PowerOnState -m "4"

Und der Sonoff antwortet mit:

sonoff_pow_1/cmnd/PowerOnState 4
sonoff_pow_1/stat/RESULT {"POWER":"ON"}
sonoff_pow_1/stat/POWER ON
sonoff_pow_1/stat/RESULT {"PowerOnState":4}

Weiterhin habe ich die Übertragungsrate der Leistungsdaten auf 5 Minuten (300 Sekunden) gesetzt. Das geht so:

$ mosquitto_pub -u admin -P geheim -h 192.168.6.3 -t sonoff_pow_1/cmnd/teleperiod -m "300"

Der Sonoff POW sendet jetzt alle 5 Minuten seinen Status an den MQTT Broker. Das sieht ungefähr so aus:

sonoff_pow_1/tele/STATE {"Time":"2018.03.31 12:15:28","Uptime":"0 00:05:16","Vcc":3.442,"POWER":"ON","Wifi":{"AP":2,"SSId":"KEEP_OUT_2EX","RSSI":96,"APMac":"74:DA:38:73:0E:E1"}}
sonoff_pow_1/tele/SENSOR {"Time":"2018.03.31 12:15:28","ENERGY":{"Total":148.492,"Yesterday":0.035,"Today":0.018,"Period":0,"Power":2,"Factor":0.11,"Voltage":231,"Current":0.063}}

Die Auswertung der Leistungsdaten übernimmt dann openHAB. Wie du das einrichtest, erkläre ich dir im zweiten Teil.