Eine smarte Waschmaschine mit openHAB (2)

Im vorherigen Artikel habe ich kurz die Anforderung dargestellt und eine kurzes Beispiel für eine Messung unter HomeMatic beschrieben.

Inbetriebnahme openHAB

Im ersten Schritt habe ich noch einmal meine notwendigen Räume und Variablen in der generellen Haus.items-Datei kontrolliert und ein paar neue Räume eingefügt (das ist individuell pro Installation).

Da meine HomeMatic-Anlage bereits vorhanden war, war keine Anpassung der HomeMatic.things-Datei bei mir notwendig.

Nach der Inbetriebnahme waren die neuen Items bereits in der Inbox vorhanden. Die weitere Konfiguration habe ich manuell in der Konfiguration und nicht im Webclient vorgenommen.

HomeMatic.items

In der Items-Datei habe ich folgende Kanäle für die Steckdose zugeordnet:

// 14.01.2020 - Steckdose Waschmaschine mit Leistungsmessung
Number hmSteckdose_KG_Heizungsraum_Washingmachine_SIGNAL_STRENTH                                    "Waschmaschine Funk-Steckdose KG - Heizungsraum (HM-ES-PMSw1-Pl-DN-R1) - Signal Strength"       (gKG_Heizungsraum)                                                                                  {channel="homematic:HM-ES-PMSw1-Pl-DN-R1:ccu:SERIAL:0#SIGNAL_STRENGTH"}
Switch hmSteckdose_KG_Heizungsraum_Washingmachine_STATE                                             "Waschmaschine Funk-Steckdose KG - Heizungsraum (HM-ES-PMSw1-Pl-DN-R1) - State [%d]"            (gKGgKG_HeizungsraumgSteckdosegSteckdose_KGgSteckdose_KG_Heizungsraum)  [ "Lighting" ]      {channel="homematic:HM-ES-PMSw1-Pl-DN-R1:ccu:SERIAL:1#STATE"}
Number:Energy hmSteckdose_KG_Heizungsraum_Washingmachine_ENERGY_COUNTER                             "Waschmaschine Funk-Steckdose KG - Heizungsraum (HM-ES-PMSw1-Pl-DN-R1) - Energy Counter"        (gKG_Heizungsraum)                                                                                  {channel="homematic:HM-ES-PMSw1-Pl-DN-R1:ccu:SERIAL:2#ENERGY_COUNTER"}
Number:Frequency hmSteckdose_KG_Heizungsraum_Washingmachine_FREQUENCY                               "Waschmaschine Funk-Steckdose KG - Heizungsraum (HM-ES-PMSw1-Pl-DN-R1) - Frequency"             (gKG_Heizungsraum)                                                                                  {channel="homematic:HM-ES-PMSw1-Pl-DN-R1:ccu:SERIAL:2#FREQUENCY"}
Number:Power hmSteckdose_KG_Heizungsraum_Washingmachine_POWER                                       "Waschmaschine Funk-Steckdose KG - Heizungsraum (HM-ES-PMSw1-Pl-DN-R1) - Power"                 (gKG_Heizungsraum)                                                                                  {channel="homematic:HM-ES-PMSw1-Pl-DN-R1:ccu:SERIAL:2#POWER"}
Number hmSteckdose_KG_Heizungsraum_Washingmachine_CURRENT                                           "Waschmaschine Funk-Steckdose KG - Heizungsraum (HM-ES-PMSw1-Pl-DN-R1) - Current"               (gKG_Heizungsraum)                                                                                  {channel="homematic:HM-ES-PMSw1-Pl-DN-R1:ccu:SERIAL:2#CURRENT"}
Number:ElectricPotential hmSteckdose_KG_Heizungsraum_Washingmachine_VOLTAGE                         "Waschmaschine Funk-Steckdose KG - Heizungsraum (HM-ES-PMSw1-Pl-DN-R1) - Voltage"               (gKG_Heizungsraum)                                                                                  {channel="homematic:HM-ES-PMSw1-Pl-DN-R1:ccu:SERIAL:2#VOLTAGE"}

Number hmSteckdose_KG_Heizungsraum_Washingmachine_OpState                                           "Waschmaschine Status [MAP(HomeMatic.map):%s]"

Die ersten 7 Variablen stellen die Kanäle des Aktors dar. Die letzte Variable nutze ich für die Visualisierung des Status in der Oberfläche.

Aus dem Beispiel bitte die SERIAL mit der entsprechenden Seriennummer des Aktors austauschen.

HomeMatic.map

Die Mapping-Datei für die Oberfläche kann mit folgenden Statuswerten versehen werden:

0=Aus
1=Standby
2=Aktiv
3=Fertig
NULL=Unbekannt

Leistungswerte herausfinden

Nun kann man je nach Systemumgebung die Leistungswerte des Verbrauchers bzw. der Waschmaschine herausfinden. Dazu lässt man den Aktor entsprechend einen Waschgang in Betrieb und kann per grep-Befehl unter Linux entsprechend die erfassten Werte aus den Log-Dateien lesen:

grep "Washingmachine_POWER changed" /var/log/openhab2/events.log | sed 's/.[0-9]* \[ItemStateChangedEvent.* to /;/'

Danach habe ich die Ergebnisse in Notepad++ als CSV-Datei kopiert und etwas für die weitere Excel-Auswertung vereinfacht. In Excel lädt man die CSV-Datei entsprechend der Trennzeichen oder festen Breite entsprechend in die Applikation und fügt ein Diagramm für die Visualisierung des Stromverbrauchs in dem definierten Zeitraum ein.

Ein einfaches Beispiel-Ergebnis kann wie folgt aussehen:

Hier sind klar die Leistungsspitzen und die geringeren Aktivitäten erkennbar. Abgeleitet ergeben sich daraus folgende Werte:

  • > 10 W = ACTIVE d.h. Waschmaschine läuft
  • < 4,5 W = STANDBY d.h. Waschmaschine ist fertig, aber eingeschalten
  • < 0,2 W = OFF d.h. Waschmaschine ist aus

Integration Alexa

Das Amazon Echo Control Binding ist bei mir bereits eingebunden. Folgendes Item ist für “Text to Speech” bereits bei mir vorhanden und muss evtl. ergänzt werden:

String Echo_Living_Room_TTS                   "Text to Speech"                        (Alexa_Living_Room) {channel="amazonechocontrol:echo:acc:dev1:textToSpeech"}
String Echo_Office_TTS                   "Text to Speech"                        (Alexa_Office) {channel="amazonechocontrol:echo:add:dev2:textToSpeech"}

acc bitte entsprechend eures Accounts ändern und dev1 bzw. dev2 an eure Endgeräte anpassen.

HomeMatic.rules

Eine einfache Automatisierung kann wie folgt hinzugefügt werden:

val Number MODE_OFF = 0
val Number MODE_STANDBY = 1
val Number MODE_ACTIVE = 2
val Number MODE_FINISHED = 3

rule "Washingmachine Consumption State Machine"
when
    Item hmSteckdose_KG_Heizungsraum_Washingmachine_POWER changed
then
    if (hmSteckdose_KG_Heizungsraum_Washingmachine_POWER.state < 0.2) {
        hmSteckdose_KG_Heizungsraum_Washingmachine_OpState.postUpdate(MODE_OFF)
        logInfo("INFO","Waschmaschine: MODE_OFF")
}
    else if (hmSteckdose_KG_Heizungsraum_Washingmachine_POWER.state > 10) {
        hmSteckdose_KG_Heizungsraum_Washingmachine_OpState.postUpdate(MODE_ACTIVE)
        logInfo("INFO","Waschmaschine: MODE_ACTIVE")
}
    else if (hmSteckdose_KG_Heizungsraum_Washingmachine_POWER.state < 4.5) {
        if (hmSteckdose_KG_Heizungsraum_Washingmachine_OpState.state == MODE_OFF) {
            hmSteckdose_KG_Heizungsraum_Washingmachine_OpState.postUpdate(MODE_STANDBY)
            logInfo("INFO","Waschmaschine: MODE_STANDBY")
}
        else if (hmSteckdose_KG_Heizungsraum_Washingmachine_OpState.state == MODE_ACTIVE) {
            hmSteckdose_KG_Heizungsraum_Washingmachine_OpState.postUpdate(MODE_FINISHED)
            logInfo("INFO","Waschmaschine: MODE_FINISHED")
}
}
end

rule "Washingmachine Notifications"
when
    Item hmSteckdose_KG_Heizungsraum_Washingmachine_OpState changed
then
    if (hmSteckdose_KG_Heizungsraum_Washingmachine_OpState.state == MODE_FINISHED) {
        Echo_Living_Room_TTS.sendCommand('Die Waschmaschine ist fertig.')
        Echo_Office_TTS.sendCommand('Die Waschmaschine ist fertig.')
        logInfo("INFO","Waschmaschine fertig")
}
end

Wenn die Waschmaschine fertig ist, wird entsprechend in die Log-Datei geschrieben und eine Status-Information per Alexa ausgegeben. Nachträglich habe ich noch eine Information per Telegram eingebaut.

Haus.sitemap

Nun müssen in der App und im Webclient noch die Ergebnisse visualisiert werden. Ein einfaches Beispiel kann so aussehen:

Frame label="Verbraucher" {
    Text label="Waschmaschine" item=hmSteckdose_KG_Heizungsraum_Washingmachine_OpState icon=whitegood
}

Ein paar Bilde für die “weiße Ware” können hier zur optischen Verbesserung auch noch verwendet werden: https://www.openhab.org/docs/configuration/iconsets/classic/

Fazit

Mit den zur Verfügung stehenden Informationen ist es recht einfach einen Verbraucher im Haushalt in das SmartHome zu integrieren. Das Beispiel mit openHAB, HomeMatic und Alexa ist recht einfach und schnell umgesetzt.

Welche Szenarien fallen euch bei der Leistungsüberwachung im SmartHome ein? Gibt es noch weitere Ideen und Verbesserungen für das Szenario?

1 Kommentar
  1. y0003146
    y0003146 sagte:

    Vielen Dank für die sehr gute Anleitung – es hat alles sofort geklappt!
    Die Rule hätte ich niemals alleine hinbekommen. Mit der Vorlage war es ein Kinderspiel…

    Nächstes Projekt wird die Automatisierung der Thermostate (AVM) mit Fenster-auf-Funktion (Aqara).

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.