Mit fhem, Harmony Hub und Sonoff Pow den Stromverbrauch senken (und messen)

Hier möchte ich euch mal mitteilen, wie ich meine Multimedia-Anlage dazu bringe, sich komplett ab- bzw. wieder einzuschalten, je nachdem, welche Aktivität in der Harmony gerade läuft oder eben nicht mehr läuft.

>>Kritik-Mode-ON<< Wie immer gibt es leider im fhem-wiki dazu nur uralt-Beiträge und auch das Forum ist nur bedingt hilfreich, weil man sich durch etliche Beiträge durchkämpfen muss, bevor man etwas brauchbares findet. >>Kritik-Mode-Off<<

Wie im Titel erwähnt, handelt es sich um einen Beitrag zur Hausautomatisierungssoftware „fhem“. Daher sind alle Befehle, die in diesem Beitrag stehen, fhem-spezifisch und es wird vorausgesetzt, dass beim Weiterlesen fhem-spezifische Begriffe (Device, DoIf, Readings etc…) verstanden werden. Das Prinzip kann aber sicherlich auf andere Hausautomatisierungssysteme übertragen werden.

Nun zum Thema.

Mein Hardware-Setup sieht folgendermaßen aus:

  • RaspberryPi 3 für fhem
  • Sonoff Pow (mit Tasmota)
  • Amazon Dash Button
  • Logitech Harmony Hub
  • Philips Ambilight TV
  • Onkyo-Receiver
  • Magnat Surround-Boxen (mit aktivem Subwoofer)

Lässt man mal den RaspberryPi und den Sonoff Pow weg, komme ich auf einen Stromverbrauch von etwa 160 W wenn der TV, der Receiver und der Subwoofer eingeschaltet sind. Im Standby verbrauchen diese etwa 52 W(!). Das liegt zum größten Teil am Onkyo und dem Subwoofer.

Also liegt es nahe, den Stromverbrauch auf ca. 0 W zu senken, wenn die Multimedia-Anlage nicht in Betrieb ist.

Voraussetzung im Harmony Hub

  • Ein zusätzliches dummy Gerät beliebiger Art ist angelegt (gebt einfach als Hersteller „dummy“ und als Modellnummer „dummy“ ein und legt das Gerät dann an. Hauptsächlich es kennt die Befehle „PowerOn“ und „PowerOff“).
  • Dem Gerät eine Einschaltverzögerung von ca. 15 sec. geben.
  • Die Betriebseinstellung für dieses Gerät auf „Immer eingeschaltet lassen“ stellen
  • In der Sequenz „Befehle für Aktionsstart“ aller Aktivitäten, dieses Gerät als erstes hinzufügen mit dem Befehl „Power On“
  • In der Sequenz „Befehle für Aktionsende“ aller Aktivitäten, dieses Gerät als letztes hinzufügen mit dem dem Befehl „Power Off“

Voraussetzung in fhem

  • harmony device (in meinem Fall „WZ.Harmony“ genannt)
  • Tasmota_Device (von Matthias Kleine) device (in meinem Fall „WZ.Multimedia“ genannt)
  • dash_dhcp Device für den Amazon dash_button (in meinem Fall „DashButton“ genannt)

Nun kann folgendes DoIf in fhem angelegt werden

([WZ.Harmony:currentActivity] eq "PowerOff" ) (sleep 20; set WZ.Multimedia OFF) 
DOELSEIF
([WZ.Harmony:currentActivity] ne "PowerOff" ) (set WZ.Multimedia ON)

Attribute, wie „do always“ etc. bitte weglassen!

Kurze Erklärung: Immer dann, wenn das Reading „currentActivity“ des Devices „WZ.Harmony“ den Wert „PowerOff“ bekommt, dann wartet fhem 20 Sekunden und sendet dann den Befehl „OFF“ an das Device „WZ.Multimedia“. Das gibt den an der Aktivität beteiligten Geräten genug Zeit, sich vernünftig in den StandBy-Betrieb zu schalten. Wenn das Reading „currentActivity“ nicht „PowerOff“ ist, dann wird direkt ein „ON“ an das Device „WZ.Multimedia“ gesendet. Die im Harmony-Gerät „Sonoff“ definierte Einschaltverzögerung, gibt den an der Aktivität beteiligten Geräten genug „Vorlaufzeit“, um auf den eigentlichen Einschaltbefehl in der Startsequenz reagieren zu können. Der Onkyo und der Philips TV brauchen halt eine gewisse Zeit, bis Sie auf Befehle des Harmony Hubs reagieren, nachdem Sie mit Strom versorgt werden.

Mit der Einschaltverzögerung und dem sleep-Wert im DoIf kann man sicher noch experimentieren.

Und wie spare ich nun Strom?

Erstmal reduziert sich der Stromverbrauch um etwa 50 W, wenn der Harmony Hub die Aktivität „PowerOff“ ausführt. Zudem schlafe ich sehr gerne vor der Glotze ein und dann wache ich morgens auf und die komplette Nacht hindurch hat die Anlage Strom verbraucht 🙁

Und jetzt kommt der DashButton ins Spiel:

Folgendes zusätzliches DoIf sorgt dafür, dass der Sleeptimer im Harmony Hub gesetzt wird, wenn ich den DashButton drücke:

([DashButton:"^dash1:.short$"]) (set WZ.Harmony sleeptimer 60)

Wichtig hierbei ist, dass im DoIf das Attribut „do“ auf „always“ gesetzt wird. Nur damit wird erreicht, dass bei einem erneuten Drücken des DashButtons, der Sleeptimer wieder auf 60 Minuten gesetzt wird. Während ich also zum ersten Mal den Button gedrückt habe, wird der Sleeptimer auf 60 Minuten gesetzt. Nach 60 Minuten wird die Aktivität „PowerOff“ gestartet und damit wird über den Sonoff nach weiteren 20 Sekunden die Anlage komplett abgeschaltet. Schaffe ich es, den Button innerhalb der 60 Minuten mindestens ein weiteres Mal zu drücken, bleibt die Anlage wieder für 60 Minuten an und der Vorgang wiederholt sich.

Und jetzt noch ein paar Worte außerhalb des eigentlichen Themas:

Vielen Dank an die fhem-Forum Benutzer Byte09, justme1968 sowie an Matthias Kleine für das Entwickeln des Tasmota_Device und die genialen Beiträge auf seiner Site und an alle fhem-Forum User, die mit konstruktiven Beiträgen im fhem-Forum behilflich sind, anderen Nutzern lösungsorientiert zu helfen. Kein Dank geht an Alle, die nur auf die angebliche Faulheit der fhem-Forum Benutzer schimpfen, sich selbst Wissen anzulesen und an diejenigen, die auf die CommandRef oder das fhem-Wiki verweisen, weil sie einfach nur mit ihren Wissensvorsprung angeben wollen und nicht wirklich daran interessiert sind, anderen Menschen zu helfen.