HomeMatic Funk-Steckdose mit Leistungsmessung: Dein Trockner ist fertig – 0.31 EUR

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

Im Artikel HomeMatic Funk-Steckdose mit Leistungsmessung: Deine Waschmaschine ist fertig wurde erläutert, wie man den Homematic Funk-Schaltaktor HM-ES-PMSw1-PI (Affiliate-Link) in Kombination mit einem FHEM-Server einsetzen kann, um eine Waschmaschine bei einem fertigen Waschgang automatisch vom Strom zu trennen und eine Mitteilung zu verschicken, welche über den abgeschlossenen Waschgang informiert. Die gemessenen Verbrauchswerte können aber noch für viele weitere sinnvolle Anwendungszwecke genutzt werden. Aufbauend auf dem bereits beschriebenen Szenario soll daher am Beispiel eines Wäschetrockners erklärt werden, wie die angesprochene Push-Benachrichtigung um die entstandenen Kosten für den gerade abgeschlossenen Trocknungsvorgang erweitert werden kann.

Energiebewusstsein schaffen

Steigende Energiekosten führen langfristig dazu, dass Verbraucher immer mehr auf den Energieverbrauch von Elektrogeräten achten, um nicht unnötig Geld aus dem Fenster zu werfen. Was kosten bspw. Haushaltsgeräte, wie Waschmaschine oder Wäschetrockner, die, wie in meinem Fall, alleine im Standby bis zu 5 Watt verbrauchen? Wann lohnt sich da beispielsweise die Neuanschaffung eines energieeffizienteren Geräts? Lässt sich mit relativ einfachen Mitteln ein Bewusstsein dafür schaffen, wieviel Energie welche Haushaltsgeräte konsumieren und damit an Kosten verursachen? Um diesen Fragen auf den Grund zu gehen, möchte ich in diesem und weiteren Artikeln versuchen die im FHEM-Server brachliegenden Informationen zu nutzen, um Aufschluss über die tatsächlichen Kosten einzelner Geräte zu erhalten und damit ein besseres Energiebewusstsein schaffen.

Anlernen des Funk-Aktors in FHEM

Genau wie im Artikel HomeMatic Funk-Steckdose mit Leistungsmessung: Deine Waschmaschine ist fertig im Punkt “Anlernen des Funk-Aktors in FHEM” beschrieben, wird auch hier der Homematic Funk-Schaltaktor HM-ES-PMSw1-PI (Affiliate-Link) als erstes an den FHEM-Server angelernt. Einziger Unterschied ist in diesem Beispiel, dass der Aktor nicht HR.Waschmaschine, sondern HR.Trockner genannt wird. Analog heißt der zusätzlich benötigte Channel nicht HR.Waschmaschine_Power, sondern HR.Trockner_Power.

fhem.cfg erweitern

Ist der Homematic Funk-Schaltaktor HM-ES-PMSw1-PI (Affiliate-Link) angelernt, wird für das weitere Vorgehen erstmal eine Instanz benötigt, welcher den Strompreis in Euro pro kWh beinhaltet. Dieser Wert kann recht einfach aus der Stromrechnung abgelesen werden und wird nachfolgend mit 0.3 festgelegt (also 30 Cent/kWh) und in den Dummy HA.EuroProKWH geschrieben:

#Dummy für Euro pro KWH definieren
define HA.EuroProKWH dummy
attr HA.EuroProKWH room Haus
set HA.EuroProKWH 0.3

Update vom 12.03.2014: Bis jetzt habe ich die Ermittlung des Verbrauchs manuell berechnet (rot markierter Text), was den Raspberry teilweise etwas träge gemacht hat, da er den Verbrauch errechnen musste. Das ist aber gar nicht notwendig, da der Verbrauch des HM-ES-PMSw1-PI (Affiliate-Link) direkt aus dem “Power”-Channel und dem dortigen Reading “energy” (Einheit Wh) ausgelesen werden kann. Danke an CarlMcCoy für den Tipp! Entsprechend habe ich den Blogpost angepasst und die ursprünglichen, nicht mehr notwendigen Inhalte rot markiert und durch die neuen, grün markierten Inhalte ergänzt. Dadurch hat man keinerlei Performanceeinbusen und erhält trotzdem zuverlässig den korrekten Verbrauchswert. Insgesamt könnte man das nachfolgende Beispiel jetzt noch weiter kürzen, indem man bspw. nur noch einen Dummy nutzt. Aus Gründen der Übersichtlichkeit und Nachvollziehbarkeit habe ich mich jedoch entschlossen, alle vorher genutzten Dummies auch weiter zu nutzen.

Der vom Aktor ausgelesene Verbrauchswert soll als nächstes in den Dummy HR.TrocknerWatt geschrieben werden, welche für eine spätere Auswertung im Logfile Filelog_HR.TrocknerWatt gespeichert werden:

#Dummy HR.TrocknerWatt für die Anzeige des aktuellen Watt-Verbrauchs definieren
define HR.TrocknerWatt dummy
attr HR.TrocknerWatt event-on-change-reading state
attr HR.TrocknerWatt room Hauswirtschaftsraum
define Filelog_HR.TrocknerWatt FileLog ./log/HRTrocknerWatt-%Y-%m.log HR.TrocknerWatt
attr Filelog_HR.TrocknerWatt logtype text
attr Filelog_HR.TrocknerWatt room Hauswirtschaftsraum

Jetzt der Dummy HR.TrocknerBetrieb, welcher den Arbeitszustand anzeigt und das Reading AktuellerBetriebEur verpasst bekommt, um die beim Betrieb entstehenden Kosten zu speichern bzw. anzuzeigen. Die Logik ist dabei, dass die ausgewiesenen Kosten auf 0 zurückgesetzt werden, sobald der Betrieb aufgenommen wird und ab diesem Zeitpunkt alle anfallenden Kosten aggregiert werden. Dabei wird immer beim Eintreffen eines neuen (aktuellen) Verbrauchswertes ein notify ausgelöst, welches den vorangegangenen Verbrauchswert mit der Zeitdifferenz (in Sekunden) zwischen neuem und altem Verbrauchswert (bzw. deren Timestamps) multipliziert, danach durch 3.600.000 teilt und schließlich mit dem im Dummy HA.EuroProKWH gespeicherten Wert (hier 0,3) multipliziert. Dadurch erhöht sich der Wert des Readings AktuellerBetriebEur kontinuierlich mit den exakten Kosten in Euro.

Beispiel zur Veranschaulichung:

Startwert des Dummies (in Euro): 0
ReadingsVal(“HR.TrocknerBetrieb”,”AktuellerBetriebEur”,”0″)

Zeitstempel des neuen Wertes: 2014-01-01 12:01:00
time_str2num(ReadingsTimestamp(“HR.Trockner_Power”,”state”,””))

Zeitstempel des alten Wertes: 2014-01-01 12:00:00
time_str2num(ReadingsTimestamp(“HR.TrocknerWatt”,”state”,””))

Neuer Verbrauchswert (in Watt): 1000
ReadingsVal(“HR.TrocknerWatt”,”state”,””)

Stromkosten pro kWh (in Euro): 0,3
ReadingsVal(“HA.EuroProKWH”,”state”,””)

Faktor, durch den geteilt werden muss: 3.600.000 (1000 * 3600)
1000, um von W auf kW und 3600, um von Sekunden auf Stunden zu kommen

Damit ergibt sich $eur = 0 + (60 * 1000 * 0,3 / 3.600.000) = 0,005 und folglich belaufen sich die Kosten für einen Verbraucher auf 0,5 Cent, welcher für 60 Sekunden 1000 Watt benötigt. Multipliziert man das Ergebnis mit 60, um die Kosten für eine Stunde zu erhalten, kommt man wieder auf 30 Cent, genau der hinterlegte Wert für 1 KWh (bzw. 1000 Wh) im Dummy HA.EuroProKWH.

#Dummy HR.TrocknerBetrieb definieren
define HR.TrocknerBetrieb dummy
attr HR.TrocknerBetrieb event-on-change-reading state
attr HR.TrocknerBetrieb room Hauswirtschaftsraum

#Dummy TrocknerAktuellerBetriebEur updaten und Dummy HR.TrocknerWatt mit Werten versorgen
define TrocknerAktuellerBetriebEurSet notify HR.Trockner_Power {my $eur=ReadingsVal(“HR.TrocknerBetrieb”,”AktuellerBetriebEur”,”0″) + (time_str2num(ReadingsTimestamp(“HR.Trockner_Power”,”state”,””)) – time_str2num(ReadingsTimestamp(“HR.TrocknerWatt”,”state”,””))) * ReadingsVal(“HR.TrocknerWatt”,”state”,””) * ReadingsVal(“HA.EuroProKWH”,”state”,””) / 3600000;; fhem (“setreading HR.TrocknerBetrieb AktuellerBetriebEur $eur”) sleep 1 my $power=ReadingsVal(“HR.Trockner_Power”,”power”,””);; fhem (“set HR.TrocknerWatt $power”)}

Bei meinem Trockner hat sich herausgestellt, dass 150 Watt ein guter Wert ist, von dem angenommen werden kann, dass ein Programmstart erfolgt ist. Wer sich nicht ganz sicher ist, kann diesen Wert erstmal nutzen und in oben angesprochenen Logfile nachsehen, welche Verbrauchswerte direkt nach einem Programmstart angezeigt werden und entsprechend den Schwellwert anpassen. Ebenso verhält es sich mit dem Schwellwert für das Programmende (hier 5 Watt). Wer weitere Informationen zu den nachfolgenden Befehlen benötigt, kann im Artikel HomeMatic Funk-Steckdose mit Leistungsmessung: Deine Waschmaschine ist fertig nachsehen. Die hier verwendeten Befehle sind lediglich ergänzt, um die entstandenen Kosten zu berücksichtigen. Die verwendeten MP3-Sprachdateien sind im zip-File geupdatet: Funkgong-Beispiel-mp3s.zip (11854 Downloads )

#Dummy HR.TrocknerBetrieb einschalten und AktuellerBetriebEur resetten bei Verbrauch größer 150 Watt
define HRTrocknerBetriebAn notify HR.Trockner_Power:power.* {fhem (“set HR.TrocknerBetrieb on setstate HRTrocknerAutoOff defined setreading HR.TrocknerBetrieb AktuellerBetriebEur 0”) if (ReadingsVal(“HR.Trockner_Power”,”power”,””) >= 150 && Value(“HR.TrocknerBetrieb”) ne “on”)}

#Dummy HR.TrocknerBetrieb einschalten bei Verbrauch größer 150 Watt
define HRTrocknerBetriebAn notify HR.Trockner_Power:power.* {fhem (“set HR.TrocknerBetrieb on setstate HRTrocknerAutoOff defined”) if (ReadingsVal(“HR.Trockner_Power”,”power”,””) >= 150 && Value(“HR.TrocknerBetrieb”) ne “on”)}

#Wert aus dem Reading “energy” von HR.Trockner_Power in das Reading “energy” von HR.TrocknerBetrieb schreiben sobald der Betrieb startet
define HRTrocknerBetriebEnergyAktualisieren notify HR.TrocknerBetrieb:on {my $power=ReadingsVal(“HR.Trockner_Power”,”energy”,”0″);; fhem (“setreading HR.TrocknerBetrieb energy $power”)}

#Dummy HR.TrocknerBetrieb ausschalten bei Verbrauch kleiner gleich 5 Watt
define HRTrocknerBetriebAus notify HR.Trockner_Power:power.* {fhem (“set HR.TrocknerBetrieb standby”) if (ReadingsVal(“HR.Trockner_Power”,”power”,””) <= 5 && Value(“HR.TrocknerBetrieb”) eq “on”)}

#HR.Trockner 15 Minuten nach dem letzten Trocknungsvorgang vom Strom trennen
define HRTrocknerAutoOff watchdog HR.TrocknerBetrieb:standby 00:15 HR.TrocknerBetrieb:on set HR.Trockner off set HR.TrocknerBetrieb off
attr HRTrocknerAutoOff regexp1WontReactivate 1
attr HRTrocknerAutoOff room Hauswirtschaftsraum

#Pushover-Notification bei abgeschlossenem Trocknungsvorgang verschicken inkl. auf maximal zwei Nachkommastellen gerundeten Kosten in Euro
define HRTrocknerTrocknungsvorgangAbgeschlossenPushoverJay notify HR.TrocknerBetrieb:standby {my $eur=ReadingsVal(“HR.TrocknerBetrieb”,”AktuellerBetriebEur”,””) my $eur_gerundet=int(100*$eur+0.5)/100;; system (“curl -s -F ‘token=am4uA61Gx2Jw9GA24rePRyMJw8B3hz‘ -F ‘user=u4zDygNRGFbQUSmcxXj6fGsWJl9d93‘ -F ‘device=Jays_iPhone’ -F ‘message=HauswirtschaftsraumnTrockner ist fertig – $eur_gerundet€’ https://api.pushover.net/1/messages.json”) if (Value(“HA.Anwesenheit_Jay”) eq “on”)}

#Verbrauchswerte aktualisieren und Pushover-Notification bei abgeschlossenem Trocknungsvorgang verschicken inkl. auf maximal zwei Nachkommastellen gerundete Kosten in Euro
define HRTrocknerTrocknungsvorgangAbgeschlossenPushoverJay notify HR.TrocknerBetrieb:standby {my $aktuellerbetriebeur=(ReadingsVal(“HR.Trockner_Power”,”energy”,”0″)-ReadingsVal(“HR.TrocknerBetrieb”,”energy”,”0″))/1000*ReadingsVal(“HA.EuroProKWH”,”state”,””) my $aktuellerbetriebeur=int(100*$aktuellerbetriebeur+0.5)/100;; fhem(“setreading HR.TrocknerBetrieb AktuellerBetriebEur $aktuellerbetriebeur”);; system (“curl -s -F ‘token=am4uA61Gx2Jw9GA24rePRyMJw8B3hz‘ -F ‘user=u4zDygNRGFbQUSmcxXj6fGsWJl9d93‘ -F ‘device=Jays_iPhone’ -F ‘message=HauswirtschaftsraumnTrockner ist fertig – $aktuellerbetriebeur€’ https://api.pushover.net/1/messages.json”) if (Value(“HA.Anwesenheit_Jay”) eq “on”)}

#Sprachausgabe bei abgeschlossenem Trocknungsvorgang wiedergeben – “Trockner ist fertig”
define HRTrocknerTrocknungsvorgangAbgeschlossenMP3 notify HR.TrocknerBetrieb:standby set FL.GongMP3 playTone 017

#Sprachausgabe wiedergeben sobald der Trockner ausgeschaltet wird – “Trockner wird ausgeschaltet”
define WRTrocknerWirdAusgeschaltetMP3 notify HR.TrocknerBetrieb:off set FL.GongMP3 playTone 018

Aus meinem täglichen Leben

Der Homematic Funk-Schaltaktor HM-ES-PMSw1-PI (Affiliate-Link) bietet durch seine Leistungsmessung und die Erweiterbarkeit des FHEM-Servers die perfekte Möglichkeit, entstandene Kosten zu ermitteln und ein Verständnis davon zu entwickeln, welche Kosten durch welche Elektrogeräte bzw. Vorgänge entstehen.
Dieses Beispiel wird mein Wasch- bzw. Trockenverhalten zwar nicht kurzfristig ändern, kann aber sicher bei der Frage helfen, ob eingesetzte Geräte zu viel Strom verbrauchen oder nicht. In meinem Fall benötigt ein Waschvorgang mit einer relativ alten Waschmaschine LG intellowasher WD-1271FB (7 kg) bei 40 Grad ca. 20 Cent, bei 60 Grad ca. 30 Cent. Ein Trocknungsvorgang mit einem moderneren Wäschetrockner AEG Öko-Lavatherm 59880 benötigt ca. 20-30 Cent (Schranktrocken).
Wer seine Werte beisteuern möchte, kann dies gerne per Kommentarfunktion tun.

38 Kommentare
  1. Hallo Jörg

    Habe Problem mit dem Versand der Push Nachrichten über pushover
    mal wird eine Nachricht verschickt mal wieder nicht.
    Eine manuelles versenden fünktioniert dagegen
    wie “set HR.TrocknerBetrieb on” dort bekomme ich dann die Kosten zugeschickt
    nur sind es dann die gesamtkosten die vom der aktuellen Trocknung allerdings
    nicht…..Vieleicht hast du ja ein tip für mich.

    1. Hi Inesa,
      puh, vermutlich hat sich bei deinem Code irgendwo ein Syntaxfehler eingeschlichen. Ohne die entsprechenden Programmzeilen kann ich leider nur mutmaßen. Kontrollier die entsprechenden Zeilen doch mal (gerade die, die über ein notify die Push-Mitteilungen absetzen sollen) und poste deine Codezeilen, sofern es nicht klappt.
      Grüße
      Jörg

  2. Hallo Jörg,
    Variante 2 (GRÜN) funktioniert bei mir auch nicht. Die Funksteckdose schaltet sich nicht automatisch aus. Die Wattwerte werden nicht resettet, sondern zu den vorherigen Werten addiert.Eine Pushoverbenachrichtigung erfolgt auch nicht…..

    Ich versuche jetzt mal Variante (Rot) Was mir dabei auf Anhieb besser gefällt ist, dass der aktuelle Verbrauch sofort angezeigt wird.

    VG Frank

    1. Hi Frank, ich kann die grüne Variante morgen selbst testen. Denke, dass sich das Problem schnell lösen lässt. Ich werde mich wieder melden…

    2. Hallo Jörg,
      Variante Rot schaltet zumindest den Schalter off. Pushoverbenachrichtigung funktioniert hierbei leider auch nicht. Ich habe bei zwei anderen Geräten die Pushoverbenachrichtigung ohne Curl eingerichtet, das ganze funktioniert…

      Danke fürs Testen 😉

  3. Hallo Jörg
    Mit dem Pushnachrichten funktioniert es jetzt warum auch immer. Habe eigentlich nur über das Webfrontend die DEV’s neu
    eingetragen.Kann es sein das eine halbe
    Stunde kurzwaschgang nur Kosten von 4cent
    verursacht.Wäre es möglich noch irgendwas
    einzubauen was die Gesamtkosten speichert?

    1. Hi Inesa,
      die entstehenden Kosten bei einem Waschgang können aufgrund verschiedener Waschtemperaturen stark variieren. 4 Cent für eine halbe Stunde ist da schon drin, sofern die Temperatur gering ist.
      Die Gesamtkosten sollten relativ einfach aggregiert werden können durch ein zusätzliches Reading, welches beim Ende des Waschgangs zu den bestehenden Kosten (am Anfang natürlich noch 0) die aktuellen Kosten addiert.

  4. Hallo Jörg
    Im Webfrontend wird mir ein Wert bei HR.Waschmachine_Power angezeigt
    10300 was ist das für ein Wert kann mit
    diesen nicht einfach die Kosten errechnen

    1. Wenn du vom Reading “energy” sprichst, ist das die von der Funksteckdose übermittelte, aggregierte Stromverbrauch in Wh. Dieser Wert kann durch 1000 geteilt und mit dem Preis pro Kilowattstunde (z.B. 0,30 Euro) multipliziert werden. Dadurch werden die Kosten berechnet, seitdem du die Funksteckdose in Betrieb genommen hast.
      Grüße
      Jörg

  5. Hallo Jörg,
    habe es jetzt mit Hilfe Deiner Anleitung (rot) hinbekommen, eine Benachrichtigung zu erhalten, wenn der Trockenvorgang abgeschlossen ist. Allerdings erfolgt die Meldung 11 Mal hintereinander. Der entsprechende Dummy Trocknerbetrieb hat aber “event-on-change-reading state”.
    Hast vielleicht noch eine Idee?

    1. Und der Dummy HR.TrocknerBetrieb wechselt sicher auch nur ein Mal auf standby und nicht zwischenzeitlich wieder auf einen anderen Wert? Mach dir doch mal nen Filelog und kontrolliere das bitte:

      define Filelog_HR.TrocknerBetrieb FileLog ./log/HRTrocknerBetrieb-%Y-%m.log HR.TrocknerBetrieb
      attr Filelog_HR.TrocknerBetrieb logtype text
      attr Filelog_HR.TrocknerBetrieb room Hauswirtschaftsraum

      Grüße
      Jörg

  6. Hallo Jörg
    Bekomme es einfach nicht hin mir die Geamtkosten anzeigen zu lassen oder per Pushover zu verschicken
    Hier mein code was kann da falsch sein:

    define HR.WaschmaschineGesamtkosten notify HR.WaschmaschineBetrieb:on {my $euro=ReadingsVal(“HR.WaschmaschineBetrieb”,”energy”,”0″) /1000 * ReadingsVal(HA.EuroProKWH “,” state”,”);;fhem (“setreading HR.WaschmaschineBetrieb Gesamteuro $euro”)}

    attr HR.WaschmaschineGesamtkosten room Badezimmer

    und mit Pushover
    define HR.WaschmaschineGesamtkostenPushover notify HR.WaschmaschineBetrieb:standby {my $gesamtbetriebeur=ReadingsVal(“HR.WaschmaschineBetrieb”,”energy”,”0″) /1000 * ReadingsVal(HA.EuroProKWH”,”state”,”);; fhem(“setreading HR.WaschmaschineBetrieb GesamtBetriebEur $gesamtbetriebeur”);; system(“curl -s -F ‘token=atVUuCHNqVpceGE3Q9o36xxxxkbZQh’ -F ‘user=uiG9jabCJSGRZErTueHBnM8wNxxxxi’ -F ‘message=Badezimmer\nBetriebskosten betragen -$gesamtbetriebeur ‘https://api.pushover.net/1/messages.json”)}

    attr HR.WaschmaschineGesamtkostenPushover room Badezimmer

    1. Hi Inesa,
      bei der Email-Benachrichtigung habe ich es leider auch nicht geschafft Variablen korrekt zu übermitteln und bin deshalb auch gleich zum Pushover-Dienst gewechselt.
      Grüße
      Jörg

  7. Habs jetzt so hinbekommen Pushnachrichten werden verschickt mit den Gesamtkosten.
    Nur beim email Versand happert es noch es werden mir keine Kosten mit übermittelt

    define HR.WaschmaschineGesamtkosten notify HR.WaschmaschineBetrieb:on {my $euro=ReadingsVal(“HR.Waschmaschine_Power”,”energy”,”0″) /1000 * 0.28 ;;fhem (“setreading HR.WaschmaschineBetrieb Gesamteuro $euro”);; system (“curl -s -F ‘token=atVUuCHNqVpceGE3Q9o36Erexxxxxh’ -F ‘user=uiG9jabCJSGRxxxxxxxM8wNTJ85i’ -F ‘message=Badezimmer\nBisherige Gesamtkosten in Euro – $euro€’ https://api.pushover.net/1/messages.json”);;DebianMail(‘adolfocurade@@gmail.com’,’Waschmaschine’,’Euro Gesamt:’, ‘$euro’)}

  8. Toller Blog, ich verfolge ihn schon seit mehreren Wochen zur Umsetzung meiner Hausautomation!

    Auch dieses Szenario habe ich umgesetzt – für die Waschmaschine funktioniert das ganz gut, für den Trockner leider nicht – dieser hat einen Knitterschutz und dreht nach Ende des Programms alle 30 Sekunden nochmal 2-3 Runden.
    Hast du ne Idee wie man das lösen könnte, dass zumindest die Meldung “Trockner fertig” bei Programmende gesendet wird?
    Wenn man die Wäsche dann abholt und den Trockner händisch ausstellt, sollte ja trotzdem nach 5 Minuten der Schaltaktor ausgehen, da die 5W Schwelle unterschritten ist – richtig?

    1. Hi Sepp,
      das Problem lässt sich mit einem zusätzlichen Watchdog relativ einfach lösen. Erklärt ist das im Blogpost https://meintechblog.de/2014/01/homematic-funk-steckdose-mit-leistungsmessung-deine-waschmaschine-ist-fertig/ unter “#Wenn der Verbrauchswert für mindestens 5 Minuten bei laufendem Betrieb unter obigem Schwellwert (5 Watt) verbleibt, wird angenommen, dass der Waschvorgang tatsächlich abgeschlossen ist”. Dabei musst du den Schwellwert wahrscheinlich hochsetzen von 5 auf 50 Watt. So läuft das auch bei meinem Trockner sehr gut. Hoffe das hilft dir weiter!
      Grüße
      Jörg

    2. Hi!

      Leider ist es so einfach nicht, beim 2-3 drehen habe ich wattwerte z.T. Über 180W. Es handelt sich um einen sehr neuen effizienten Trockner, aber das finde ich etwas unnötig. Dieser Knitterschutz deaktiviert sich nach 60min. von selbst, dann meldet FHEM auch korrekt, aber das finde ich, ist pure Energieverschwendung, wenn man eh zuhause ist und den Trockner leer räumen könnte… Wäre es eine Möglichkeit über einen Mittelwert bspw. der letzten 10 Minuten zu arbeiten?

    3. Das lässt sich mit FHEM sicherlich realisieren. Ich werde mal versuchen meine Ansätze zu verbessern, dass diese für Geräte, deren Verbrauchswerte stärker schwanken, genutzt werden können. Am besten regelmäßig mal hier vorbeischauen… 🙂

  9. Somit werden auch die Kosten per email übermittelt
    HR.WaschmaschineBetrieb:standby {my $aktuellerbetriebeur=(ReadingsVal(“HR.Waschmaschine_Power”,”energy”,”0″)-ReadingsVal(“HR.WaschmaschineBetrieb”,”energy”,”0″))/1000*ReadingsVal(“HA.EuroProKWH”,”state”,””); my $aktuellerbetriebeur=int(100*$aktuellerbetriebeur+0.5)/100 ; fhem(“setreading HR.WaschmaschineBetrieb AktuellerBetriebEur $aktuellerbetriebeur”); system (“curl -s -F ‘token=axxxxxxxxxxxxxxxx’ -F ‘user=xxxxxxxxxxxxxxx’ -F ‘message=Badezimmer\nEinmal Waschen Trocknen kostet – $aktuellerbetriebeur€’ https://api.pushover.net/1/messages.json”);DebianMail(‘axxxxxx@@gmail.com’,’Trockner’,’Trockner ist fertig -Los zum Trocknen aufhaengen: ‘.$aktuellerbetriebeur.’€’)}

  10. Vielen Dank für diesen tollen Blog!
    Prima Inspiration und Lösungsvorschläge.
    Das meiste hier habe ich auch 1:1 so umgesetzt.
    Das mit den Push-Benachrichtigungen habe ich allerdings mit einer kostenlosen Alternative zu Pushover gelöst und zwar der App Pushbullet und folgendem Aufruf in fhem:

    system (“curl -u : -X POST https://api.pushbullet.com/v2/pushes –header ‘Content-Type: application/json’ –data-binary ‘{\”type\”: \”note\”, \”title\”: \”HWR\”, \”body\”: \”Trockner ist fertig – $aktuellerbetriebeur €\”}'”)

    = findet man, wenn man sich unter Pushbullet.com anmeldet und dann unter Account Settings

    Gruß
    René

  11. Leider wurden die größer/kleiner-Zeichen nicht angezeigt, deshalb noch mal:

    system (“curl -u TOKEN: -X POST https://api.pushbullet.com/v2/pushes –header ‘Content-Type: application/json’ –data-binary ‘{\”type\”: \”note\”, \”title\”: \”HWR\”, \”body\”: \”Trockner ist fertig – $aktuellerbetriebeur €\”}'”)

    TOKEN = findet man, wenn man sich unter Pushbullet.com anmeldet und dann unter Account Settings

    Gruß
    René

  12. Hi Jörg,

    ich verfolge seit “Jahren” deinen Blog voller Begeisterung… hab auch schon viel von dir gelernt 😉 ich hab ein Problem bzw ich bekomms nicht ganz im Kopf zusammen, wie ich das am einfachsten lösen kann, da ich mit den watchdogs und notifies noch nicht so ganz klar komme…

    Mein gewünschtes Szenario:
    Ich hab die von dir benutzte Steckdose in meinem Wohnzimmer verbaut, dort hängt mein Mediacenter/TV dran..
    Gesetztenfalls die Steckdose ist an -> dann wollte ich gern einrichten, dass sobald ein gewisser Strom anliegt (alles wurde ausgeschaltet und somit im Standby-Modus..) die Steckdose einen Timer (Watchdog) beginnt von 5 min, nach dem sie (es sei denn jemand schaltet zwischenzeitlich wieder eine der Komponenten ein, was ja durch den erhöhten Strom erkennbar sein sollte) aus gehen soll… das sollte doch einfach machbar sein oder?

    kannst du mir da vielleicht helfen?
    Dank dir und Grüße
    Dom

    1. Hi Dom,
      das freut mich sehr! 🙂
      Dein Vorhaben sollte funktionieren, klar. Ist ja im Prinzip nichts anders als das hier beschriebene Szenario mit dem Trockner bzw. mit der Waschmaschine. Nimm dir einfach das Beispiel 1:1 und benenne der Reihe nach die Komponenten so um, wie du es brauchst. Auch die Verbrauchswerte und Zeiten des Watchdogs kann du dann so einstellen, wie du es brauchst. Hoffe das hilft dir weiter.
      Grüße und viel Erfolg dabei
      Jörg

  13. Hallo zusammen und frohes neues Ihr 2015 noch.

    Ich habe Probleme und komme leider nicht weiter.
    Es soll eine Auflistung der Wasch- /Trockengänge pro Jahr geben.
    Dies habe ich mit dem wie folgt gelöst:

    define Anzahl_Waeschen HourCounter HR.WaschmaschineBetrieb:on HR.WaschmaschineBetrieb:off
    attr Anzahl_Waeschen room Info´s,Waschkeller

    define Anzahl_Trocknerdurchgaenge HourCounter HR.TrocknerBetrieb:on HR.TrocknerBetrieb:off
    attr Anzahl_Trocknerdurchgaenge room Info´s,Waschkeller

    Scheint auch im Trockentest per set zu funktionieren. Ist diese „Abfrage“ so sinnvoll oder müsste ich diese anders lösen?

    Zudem komme ich mit den Kosten pro Waschgang, Trocknung und der jeweiligen Gesamtkosten nicht weiter. Was genau bedeuten die folgenden Ausdrücke in Euren Codezeilen : “setreading HR.TrocknerBetrieb AktuellerBetriebEur $aktuellerbetriebeur“
    und “setreading HR.WaschmaschineBetrieb Gesamteuro $euro“?
    Kann ich die Kostenanzeige manuell auslösen oder direkt im FHEM anzeigen lassen?

    define HRTrocknerTrocknungsvorgangAbgeschlossenPushover notify HR.TrocknerBetrieb:standby {my $aktuellerbetriebeur=(ReadingsVal(“KG_TrocknerSensor”,“energy”,”0“)-ReadingsVal(“HR.TrocknerBetrieb”,”energy”,”0″))/1000*ReadingsVal(“HA.EuroProKWH”,”state”,””);; my $aktuellerbetriebeur=int(100*$aktuellerbetriebeur+0.5)/100 ;; fhem(“setreading HR.TrocknerBetrieb AktuellerBetriebEur $aktuellerbetriebeur”);; system (“curl -s -F ‚token=xxx’ -F ‚user=xxx’ -F ‘message=Waschkeller\nTrockner ist fertig – $aktuellerbetriebeur€’ https://api.pushover.net/1/messages.json“)}

    Danke und Entschuldigung dass ich mit so scheinbar einfachen Sachen nicht weiter komme.

    Alex

  14. Hi!

    Danke für den tollen Beitrag. Habe das ganze schon seit nem halben Jahr am Laufen. Hat bisher immer sehr gut funktioniert. Jetzt musste ich ein Update von FHEM machen und seitdem funktioniert das Notify nicht mehr. Ich bekomme im Log folgenden Fehler:
    PERL WARNING: “my” variable $aktuellertrockenbetriebeur masks earlier declaration in same scope at (eval 96511) line 1.
    2015.05.01 11:54:56 3: eval: {my $aktuellertrockenbetriebeur=(ReadingsVal(“Trockner_Power”,”energy”,”0″)-ReadingsVal(“TrocknerBetrieb”,”energy”,”0″))/1000*ReadingsVal(“EuroProKWH”,”state”,””); my $aktuellertrockenbetriebeur=int(100*$aktuellertrockenbetriebeur+0.5)/100 ; fhem(“setreading TrocknerBetrieb AktuellerBetriebEur $aktuellertrockenbetriebeur”); system (“curl -s -F ‘token=XXX’ -F ‘user=XXX’ -F ‘message=Kueche\nTrockner ist fertig – $aktuellertrockenbetriebeur EUR’ https://api.pushover.net/1/messages.json”)}

    Kann das jemand nochvollziehen?

    1. Hi Philipp,
      ich bin leider kein Profi in Perl, aber versuche doch einfach mal in den verschiedenen notify-Befehlen die Variable “aktuellertrockenbetriebeur” jeweils unterschiedlich zu benennen. Vielleicht ist das Perl-Warning dann weg und es funktioniert wieder. *daumendrück*

      Grüße
      Jörg

  15. Super Beitrag und wurde sofort umgesetzt. Kann ich irgendwie einen Dummy erstellen, der mir die kosten addiert wie zb der

    HR.Waschmaschine_Power ? Der Zeigt mir ja an was die Wama bisher verbraucht hat.?

    Danke Liebe Grüße

    1. Hi,
      mein HomeMatic-Aktor liefert in FHEM mit HR.Trockner_Pwr direkt ein passendes Reading mit, welches (so glaube ich) den kumulierten Wh-Wert anzeigt. Dieser kann dann einfach zur Berechnung der Kosten herangezogen und in einen Dummy (oder ein weiteres Reading) geschrieben werden. Hoffe die Info hilft erstmal weiter.

      Grüße
      Jörg

    2. Ok- ja er rechnet es mir auch um und schickt mir den Preis/Kosten per Push- will aber ein Reading das mir die Summe immer für alle Wasch/Trocken Gängen aufsumiert. Damit ich am ende vom Jahr eine Gesamtsumme habe. Wie mach ich das ?

  16. Hat jemand eine Empfehlung für eine Alternative für die o.g. HomeMatic Funksteckdose als EnOcean, die ich für das gleiche Szenario gut nutzen kann? Wichtig ist Schaltung des hohen Stromes, gute Reichweite, zuverlässige Wattangabe und natürlich problemloses Zusammenspiel mit FHEM. Herzlichen Dank schon jetzt für eine Empfehlung.

    1. Vielen Dank Jörg!
      Ich denke ich nutze dann lieber zusätzlich den HomeMatic usb-adapter und ebenfalls den HomeMatic Zwischenstecker. Spätestens ab 2 Steckdosen bin ich so günstiger. Ansonsten käme noch ein unterputz Gerät, welches die Zuleitung der Steckdose misst/schaltet in Frage – falls das kostengünstiger sein sollte.

  17. Hallo Jörg,

    vielen Dank für die super Anleitungen und tolle Begleitung in diesem Thema.

    Mit der Waschmaschine habe ich das Problem, dass Sie vom Status “standby” nicht in “OFF” geht und somit die Benachrichtigung nicht funktioniert. Wenn ich die befehle (set Waschmaschine off set WaschmaschineBetrieb off) einzeln absetze, funktioniert die Benachrichtigung.

    Beim Trockner habe ich das gleiche Spiel. Hier funktioniert aber die Benachrichtigung nicht und der LOG zum Dummy ist leer.

    Hättest Du vieleicht eine Idee dazu?

    #Dummy WaschmaschineWatt für die Anzeige des aktuellen Watt-Verbrauchs definieren
    define WaschmaschineWatt dummy
    attr WaschmaschineWatt group WaschenTrocknen
    attr WaschmaschineWatt room 3.7_Hauswirtschaftsraum

    #Dummy WaschmaschineWatt mit Werten versorgen
    define WaschmaschineWattSet notify Waschmaschine_Power {my $power =ReadingsVal(“Waschmaschine_Power”,”power”,””);; fhem (“set WaschmaschineWatt $power”)}
    attr WaschmaschineWattSet room 3.7_Hauswirtschaftsraum

    #Dummy WaschmaschineBetrieb definieren
    define WaschmaschineBetrieb dummy
    attr WaschmaschineBetrieb event-on-change-reading state
    attr WaschmaschineBetrieb group WaschenTrocknen
    attr WaschmaschineBetrieb room 0.0_All,0.3_EG,3.7_Hauswirtschaftsraum

    #Dummy WaschmaschineBetrieb einschalten bei Verbrauch größer 30 Watt
    define WaschmaschineBetriebAn notify Waschmaschine_Power:power.* {fhem (“set WaschmaschineBetrieb on;; setstate WaschmaschineAutoOff defined”) if (ReadingsVal(“Waschmaschine_Power”,”power”,””) >= 30 && Value(“WaschmaschineBetrieb”) ne “on”)}
    attr WaschmaschineBetriebAn room 3.7_Hauswirtschaftsraum

    #Dummy WaschmaschineHoherVerbrauch definieren
    define WaschmaschineHoherVerbrauch dummy
    attr WaschmaschineHoherVerbrauch event-on-change-reading state
    attr WaschmaschineHoherVerbrauch group WaschenTrocknen
    attr WaschmaschineHoherVerbrauch room 3.7_Hauswirtschaftsraum

    #Dummy WaschmaschineHoherVerbrauch einschalten bei Verbrauch größer 5 Watt bei laufendem Betrieb
    define WaschmaschineHoherVerbrauchAn notify Waschmaschine_Power:power.* {fhem (“set WaschmaschineHoherVerbrauch on;; setstate WaschmaschineAutoStandby defined”) if (ReadingsVal(“Waschmaschine_Power”,”power”,””) > 5 && Value(“WaschmaschineBetrieb”) eq “on”)}
    attr WaschmaschineHoherVerbrauchAn room 3.7_Hauswirtschaftsraum

    #Dummy WaschmaschineHoherVerbrauch ausschalten bei Verbrauch kleiner gleich 5 Watt bei laufendem Betrieb
    define WaschmaschineHoherVerbrauchAus notify Waschmaschine_Power:power.* {fhem (“set WaschmaschineHoherVerbrauch off”) if (ReadingsVal(“Waschmaschine_Power”,”power”,””) = 150 && Value(“TrocknerBetrieb”) ne “on”)}
    attr TrocknerBetriebAn room 3.7_Hauswirtschaftsraum

    #Wert aus dem Reading “energy” von Trockner_Power in das Reading “energy” von TrocknerBetrieb schreiben sobald der Betrieb startet
    define TrocknerBetriebEnergyAktualisieren notify TrocknerBetrieb:on {my $power=ReadingsVal(“Trockner_Power”,”energy”,”0″) fhem (“setreading TrocknerBetrieb energy $power”)}
    attr TrocknerBetriebEnergyAktualisieren room 3.7_Hauswirtschaftsraum

    #Dummy TrocknerBetrieb ausschalten bei Verbrauch kleiner gleich 5 Watt
    define TrocknerBetriebAus notify Trockner_Power:power.* {fhem (“set TrocknerBetrieb standby”) if (ReadingsVal(“Trockner_Power”,”power”,””) <= 5 && Value("TrocknerBetrieb") eq "on")}
    attr TrocknerBetriebAus room 3.7_Hauswirtschaftsraum

    #Trockner 15 Minuten nach dem letzten Trocknungsvorgang vom Strom trennen
    define TrocknerAutoOff watchdog TrocknerBetrieb:standby 00:15 TrocknerBetrieb:on set Trockner off ;; set TrocknerBetrieb off
    attr TrocknerAutoOff group WaschenTrocknen
    attr TrocknerAutoOff regexp1WontReactivate 1
    attr TrocknerAutoOff room 3.7_Hauswirtschaftsraum

    #Verbrauchswerte aktualisieren und Pushover-Notification bei abgeschlossenem Trocknungsvorgang verschicken inkl. auf maximal zwei Nachkommastellen gerundete Kosten in Euro
    define TrocknerTrocknungsvorgangAbgeschlossenPushoverJay notify TrocknerBetrieb:standby {my $aktuellerbetriebeur=(ReadingsVal("Trockner_Power","energy","0")-ReadingsVal("TrocknerBetrieb","energy","0"))/1000*ReadingsVal("HA.EuroProKWH","state","") my $aktuellerbetriebeur=int(100*$aktuellerbetriebeur+0.5)/100 fhem("setreading TrocknerBetrieb AktuellerBetriebEur $aktuellerbetriebeur") system ("curl -s -F 'token=xxxxxxxxxxxxxxxxxxxxx' -F 'user=xxxxxxxxxxxxxxxxxxxx' -F 'device=Jays_iPhone' -F 'message=HauswirtschaftsraumnTrockner ist fertig – $aktuellerbetriebeur€' https://api.pushover.net/1/messages.json") if (Value("HA.Anwesenheit_Jay") eq "on")}
    attr TrocknerTrocknungsvorgangAbgeschlossenPushoverJay room 3.7_Hauswirtschaftsraum

    #Trockner Zusatz TroknerWatt2

    #Dummy TrocknerWatt2 für die Anzeige des aktuellen Watt-Verbrauchs definieren
    define TrocknerWatt2 dummy
    attr TrocknerWatt2 event-on-change-reading state
    attr TrocknerWatt2 room 3.7_Hauswirtschaftsraum
    define Filelog_TrocknerWatt2 FileLog ./log/TrocknerWatt2-%Y-%m.log TrocknerWatt2
    attr Filelog_TrocknerWatt2 logtype text
    attr Filelog_TrocknerWatt2 room 3.7_Hauswirtschaftsraum

    #Dummy TrocknerAktuellerBetriebEur updaten und Dummy TrocknerWatt2 mit Werten versorgen
    define TrocknerAktuellerBetriebEurSet notify Trockner_Power {my $eur=ReadingsVal("TrocknerBetrieb","AktuellerBetriebEur","0") + (time_str2num(ReadingsTimestamp("Trockner_Power","state","")) – time_str2num(ReadingsTimestamp("TrocknerWatt2","state",""))) * ReadingsVal("TrocknerWatt2","state","") * ReadingsVal("HA.EuroProKWH","state","") / 3600000 fhem ("setreading TrocknerBetrieb AktuellerBetriebEur $eur") sleep 1 my $power=ReadingsVal("Trockner_Power","power","") fhem ("set TrocknerWatt2 $power")}
    attr TrocknerAktuellerBetriebEurSet room 3.7_Hauswirtschaftsraum

  18. Hallo Jörg,

    ergänzend noch der fehler im LOG.

    2015.11.15 21:43:13 1: PERL WARNING: Bareword found where operator expected at (eval 236) line 1, near “3600000 fhem”
    2015.11.15 21:43:13 3: eval: {my $eur=ReadingsVal(“TrocknerBetrieb”,”AktuellerBetriebEur”,”0″) + (time_str2num(ReadingsTimestamp(“Trockner_Power”,”state”,””)) – time_str2num(ReadingsTimestamp(“TrocknerWatt2″,”state”,””))) * ReadingsVal(“TrocknerWatt2″,”state”,””) * ReadingsVal(“HA.EuroProKWH”,”state”,””) / 3600000 fhem (“setreading TrocknerBetrieb AktuellerBetriebEur $eur”) sleep 1 my $power=ReadingsVal(“Trockner_Power”,”power”,””) fhem (“set TrocknerWatt2 $power”)}
    2015.11.15 21:43:13 1: PERL WARNING: Bareword found where operator expected at (eval 236) line 1, near “) fhem”
    2015.11.15 21:43:13 3: eval: {my $eur=ReadingsVal(“TrocknerBetrieb”,”AktuellerBetriebEur”,”0″) + (time_str2num(ReadingsTimestamp(“Trockner_Power”,”state”,””)) – time_str2num(ReadingsTimestamp(“TrocknerWatt2″,”state”,””))) * ReadingsVal(“TrocknerWatt2″,”state”,””) * ReadingsVal(“HA.EuroProKWH”,”state”,””) / 3600000 fhem (“setreading TrocknerBetrieb AktuellerBetriebEur $eur”) sleep 1 my $power=ReadingsVal(“Trockner_Power”,”power”,””) fhem (“set TrocknerWatt2 $power”)}
    2015.11.15 21:43:13 3: TrocknerAktuellerBetriebEurSet return value: syntax error at (eval 236) line 1, near “3600000 fhem “

    1. Versuch mal zwischen “600000 fhem” zwei Kommata zu setzen -> “600000;; fhem”
      und noch zwischen “) fhem” damit es so aussieht -> “);; fhem”
      und dann noch zwischen “3600000 fhem ” -> “3600000;; fhem”

      Grüße
      Jörg

    2. Ich habe den Blogpost jetzt auch entsprechend angepasst. Da war es – aus welchem Grund auch immer – ebenfalls ohne Kommata…
      Sollte jetzt hoffentlich passen.

      Grüße
      Jörg

  19. Hallo Jörg,

    lese deinen Blog als Fhem Anfänger schon eine Weile mit Begeisterung mit. Durch deine Anleitungen habe ich mir die Temperatursensoren sowie die Waschmaschine eingerichtet. Diese Anleitung habe ich in die Waschmaschine integriert. Nach setzen von Status on/off habe ich auch die gewünschte Pushmittelung erhalten. Wert natürlich 0,00€. Werden die Gesamtverbrauchsdaten auch erfasst für Jahresverbrauchsdaten und wie bekomme ich es hin die Anzahl der Waschgänge zu zählen?. Ich habe einen Dummy AnzahlWaschmaschinen mit einem Notify: {\my$wert=Value(“AnzahlWaschmaschinen”);my$neuerwert=$wert+1;\fhem(“set AnzahlWaschmaschinen $neuerwert”)\} per Pushover bekomme ich darauf hin ??? angezeigt. Die definition habe ich mit my $wert=Value(“AnzahlWaschmaschinen”) erweitert.

    Grüße
    Jörg

Schreibe einen Kommentar

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

Das könnte dir auch gefallen