FHEM Tutorial-Reihe - Part 33: Energiekosten im Überblick
In diesem Teil möchte ich einmal auf meine Lösung eingehen, welche ich mir ausgedacht habe um möglichst genau für alle Geräte im Haus (welche einzeln gemessen werden) die entsprechenden Energiekosten zu speichern und anzuzeigen. Dabei habe ich ein neues Dummy-Device angelegt, welches mir einen Umrechnungfaktor speichert und diesen dann nutzt um die genauen Kosten pro Gerät auszurechnen.
Was wird benötigt?
- Eine FHEM-Installation
- Ein paar Geräte, welche Energiekosten / Verbrauchswerte sammeln
Video
Befehle
Damit ihr nicht alles aus dem Video abtippen müsst, hier mein Define. Bitte nicht einfach in die fhem.cfg kopieren, sondern über die Oberfläche anlegen.
define KO_Stromkosten dummy
attr KO_Stromkosten userattr kWhPreis
attr KO_Stromkosten alias Stromkosten
attr KO_Stromkosten group Kosten
attr KO_Stromkosten icon euro
attr KO_Stromkosten kWhPreis 0.2507
attr KO_Stromkosten room 93_Kosten
attr KO_Stromkosten stateFormat Gestern: Gesamtkosten
defmod at_KO_collect at *23:59:00 {
my $kWhPreis = AttrNum("KO_Stromkosten", "kWhPreis", 0);
fhem("get KU_Spuelmaschine meter");
my $spuelmaschineKWh = ReadingsNum("KU_Spuelmaschine", "energy", 0);
fhem("setreading KO_Stromkosten KU_Spuelmaschine " . ($spuelmaschineKWh * $kWhPreis));
fhem("set KU_Spuelmaschine meterReset");
fhem("get KU_Warmwasserspeicher meter");
my $wasserspeicherKWh = ReadingsNum("KU_Warmwasserspeicher", "energy", 0);
fhem("setreading KO_Stromkosten KU_Warmwasserspeicher " . ($wasserspeicherKWh * $kWhPreis));
fhem("set KU_Warmwasserspeicher meterReset");
my $rackKWh = ReadingsNum("BU_Steckdosenleiste", "Today", 0);
fhem("setreading KO_Stromkosten BU_Steckdosenleiste " . ($rackKWh * $kWhPreis));
my $gesamtKWh = $spuelmaschineKWh + $wasserspeicherKWh + $rackKWh;
fhem("set WEB_Pushover msg 'Energiekosten' 'Kosten heute: " . sprintf("%.2f", $gesamtKWh * $kWhPreis) . "€'");
fhem("setreading KO_Stromkosten Gesamtkosten " . ($gesamtKWh * $kWhPreis));
}
Am Ende des Videos zeige ich dann noch, wie man mit einer ReadingsHistory die letzten Werte eines bestimmten Readings auflisten kann. Meiner Meinung nach nicht unbedingt die sinnvollste Variante in diesem Szenario, aber in jedem Fall ein praktischer Gerätetype. Bitte beachtet, dass die einzelnen Readings erst dann auftauchen, wenn die Events dafür gefeuert wurden - die Daten werden also nicht automatisch aus dem Log gelesen o.ä.
define KO_Historie readingsHistory KO_Stromkosten:Gesamtkosten
attr KO_Historie alias Kosten der vergangenen Tage
attr KO_Historie room 93_Kosten
attr KO_Historie rows 5
attr KO_Historie timestampFormat %d.%m.