Hauptmenü

Stromverbrauch per DOIF?

Begonnen von gestein, 14 Februar 2022, 16:47:37

Vorheriges Thema - Nächstes Thema

gestein

Das habe ich ja nun.
Aber wenn man einfach so startet wie ich und die Shellys schon länger laufen, dann hat das Reading "energy" mitunter schon einen sehr hohen Wert.
Damit wird dann am Anfang viel zu viel angezeigt.

lg, Gerhard

gestein

#61
Jetzt habe ich mal den Fernseher eingeschaltet.
Ich wusste ja, dass der relativ viel verbraucht, aber da bräuchte ich fast ein eigenes Kraftwerk  :)

energy    Anzeige kWh
148380           2464
148706           2790
148995           3079
149260           3344

Und das ca. jede Minute.#

lt. Forum gibt der Shelly über MQTT (so wie ich sie angelegt habe) die Energie-Werte in Wmin aus.
Und die Shellys resetten den Zählstand bei FW-Update oder Reboot.
https://forum.fhem.de/index.php/topic,116554.0.html

Daher habe ich das userReading "energy_total" angelegt.
Also wäre es besser, doch das UserReading für die Anzeige zu verwenden.

Aber wie müsste ich die Energiewerte umrechnen, damit sie im DOIF richtig angezeigt werden?

lg, Gerhard

Damian

Zitat von: gestein am 24 Januar 2023, 16:59:35
Aber wie müsste ich die Energiewerte umrechnen, damit sie im DOIF richtig angezeigt werden?

60 Wmin entspricht 1 Wh   :60 (Eine 60 Watt Lampe, die 1 Minute brennt, braucht genauso viel Energie wie eine 1 Watt Lampe, die 60 Minuten lang brennt)

1 Wmin entspricht 1/60 Wh

149260 Wmin entspricht dann 149260/60=2487,67 Wh und das sind 2,487 kWh

Also Reading in Wmin / 60000 ist der Verbrauch in kWh
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Das verstehe ich. Danke.

Aber wo würdest Du die Umrechnung am besten im DOIF einbauen, damit Rundungsfehler minimiert/vermieden werden?
Dein DOIF benötigt ja anscheinend kWh. Richtig?

Hier im Def-Teil etwa?
DEF TPL_stat (
  day_count_$1_$2 { ## bei einem Event des Zählers, wird der tägliche, monatliche und jährliche Verbrauch im jeweiligen Reading festgehalten
                    ##  $1 Zählerdevice, $2 Zählerreading

    my $diff = int(([$1:$2,0]-(get_Reading("$1.$2.last_counter",0)))*1000)/1000;
      set_Reading ("$1.$2.last_counter",[$1:$2,0]);
      set_Reading ("$1.$2.day",int(([$1:$2,0]-(get_Reading("$1.$2.day_counter",0)))*1000)/1000,1);
      set_Reading ("$1.$2.month",int(([$1:$2,0]-(get_Reading("$1.$2.month_counter",0)))*1000)/1000,1);
      set_Reading ("$1.$2.year",int(([$1:$2,0]-(get_Reading("$1.$2.year_counter",0)))*1000)/1000,1);
    }
)


Kleine Werte werden ja sonst gnadenlos auf 0 gekürzt, wenn ich das Reading "energy" selbst durch 60.000 teile.

Könntest Du mir da bitte noch helfen?

Vielen Dank im Voraus
lg, Gerhard

Damian

#64
hiernach

https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler

wird gar nichts umgerechnet, es wird in der Einheit dargestellt, in der das angegebene Reading ist.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Das Beispiel verwende ich ja  :)

Demnach hätte ich also in der Anzeige Wmin.
Klar geht das. Ist aber nicht sehr aussagekräftig.

Werde dann wohl extra Readings für die kWh im DOIF anlegen und entsprechend umrechnen.

Danke jedenfalls.
Lg, Gerhard

Damian

Zitat von: gestein am 24 Januar 2023, 20:48:12
Das Beispiel verwende ich ja  :)

Demnach hätte ich also in der Anzeige Wmin.
Klar geht das. Ist aber nicht sehr aussagekräftig.

Werde dann wohl extra Readings für die kWh im DOIF anlegen und entsprechend umrechnen.

Danke jedenfalls.
Lg, Gerhard

Üblicherweise benutzt man kWh, du kannst das Reading auf drei Nachkommastellen genau anzeigen, dann hast du die Genauigkeit von Wh - das reicht allemal. Das Umrechnen kannst du in dem DOIF-Device per DOIF_Readings machen oder z.B. über userReadings im Ursprungsdevice.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Das mit dem Umbau des DOIF ist keine gute Idee.
Besser ist es die Umrechnung in den Devices selbst vorzunehmen und überall das entsprechende Reading gleich zu nennen.
Anscheinend kommen sogar bei den einzelnen Shelly-Modellen die Werte unterschiedlich.

lg, Gerhard

gestein

Ich hätte eine Frage zu dem DOIF für die Berechnung des Stromverbrauchs.
https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler

Im Template TPL_stat wird eine Differenz-Variable definiert:
my $diff = int(([$1:$2,0]-(get_Reading("$1.$2.last_counter",0)))*1000)/1000;
Die wird aber dann nicht mehr weiter verwendet.
Sollte nicht eigentlich mit der Differenz weitergereichter werden?

Lg, Gerhard

Damian

Zitat von: gestein am 28 Januar 2023, 14:26:14
Ich hätte eine Frage zu dem DOIF für die Berechnung des Stromverbrauchs.
https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler

Im Template TPL_stat wird eine Differenz-Variable definiert:
my $diff = int(([$1:$2,0]-(get_Reading("$1.$2.last_counter",0)))*1000)/1000;
Die wird aber dann nicht mehr weiter verwendet.
Sollte nicht eigentlich mit der Differenz weitergereichter werden?

Lg, Gerhard
Ich habe die Definition mehrfach geändert, das scheint noch eine Altlast zu sein.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Zitat von: Damian am 28 Januar 2023, 15:11:49
Ich habe die Definition mehrfach geändert, das scheint noch eine Altlast zu sein.

Ich werde demnächst einen neuen Wiki-Beitrag zum Energieverbrauch liefern, siehe https://forum.fhem.de/index.php/topic,131479.msg1260669.html#msg1260669
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

gestein

Zitat von: Damian am 28 Januar 2023, 15:11:49
Ich habe die Definition mehrfach geändert, das scheint noch eine Altlast zu sein.

Kein Problem. Danke.

Da bin ich mal auf die neue Version gespannt.
Schaut sehr schön aus.
Lg, Gerhard

Damian

Hier ein Vorgeschmack der neuen Darstellung.

Im Anhang eine Gegenüberstellung der bisherigen Darstellung oben und der neuen unten.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

KyleK

@Damian Ich wollte mal die Verbrauchstatistik via DOIF (https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler) probieren, aber bei mir funktioniert das nicht.
Events des Quell-Devices (eine Steckdose mit Messfunktion) werden ignoriert.

Ich glaube die Ursache gefunden zu haben:
Meine Devicenamen enthalten Punkte, und bei so einem Device funktioniert es nicht.
Ich hab auch mit 2 Dummies probiert:
dummy_strom --> DOIF funktioniert
dummy.strom --> DOIF funktioniert nicht.

Ich habe den DOIF-Code komplett aus dem Wiki kopiert und lediglich die push Zeilen am Anfang, und die uiTable-Definitionen für die Devices angepasst.


Hat DOIF hier ein Problem mit Punkten in Gerätenamen?
FHEM on Raspberry Pi 3B+
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

Damian

ja, der Name des Readings geht in den Namen des DOIF-Blocks ein. Dort sind keine Punkte erlaubt.

Du kannst den Namen des Blocks in der Definition (rot) löschen, dann werden die Blöcke automatisch benannt:

Zitat day_count_$1_$2 { ## bei einem Event des Zählers, wird der tägliche, monatliche und jährliche Verbrauch im jeweiligen Reading festgehalten
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF