Hallo zusammen.
Ich hab seit längerem ein paar Shellys am laufen zum Stromzählen.
u.a. einen Shelly 3EM an der Hauptleitung.
hab ein Userreading angelegt, EnergyCalc_2 monotonic {sprintf('%.2f',ReadingsVal($name,"relay_0_energy","0")/60)}
Das Funktionierte auch alles sehr gut, bis ich einen Durchlauferhitzer bekommen habe.
Dieser Stromfresser braucht dezente 10-20KW.
was zur folge hat, das jetzt meine errechneten werte z.b. für den Tagesverbrauch nicht mehr stimmen. vorher war ich bei 5-10KWH und jetzt bin ich bei 10-20KWH.
Ich benutze aber den Durchlauferhitzer nur 10-20 Minuten am Tag.
Zahlen von heute: 5 Minuten 8KW+ Durchschnittlich 18Stunden 150Watt =18.4KW Tagesverbrauch.....Wenn ich in Mathe nicht nur gepennt hab errechne ich ~3,4KWH
ich denke das die Monotonic etwas "grob" zählt. kann man das einstellen?
MFG
Michael
Warum benutzt du nicht das Modul ElectricityCalculator? Das wertet den Shelly 3EM bei mir aus, mit sehr zufriedenstellendem Ergebnis.
Wenn ich es richtig verstanden habe, ist das Modul ElectricityCalculator für einen Stromzähler, der impulse(Ticks) ausgibt.
und die dann umrechnet zu den passenden Werten.
Das hab ich nicht. Ich hab ja einen Shelly, der gibt ja schon "richtige" werte aus.
Deswegen Monotonic. Funktioniert ja auch Super. nur eben meine 5 Minuten Spannungsspitzen von 8000Watt Verträg es nicht.
ich als Laie denke, das die Monotonic alle paar Minuten/Sekunden den aktuellen wer nimmt und den dann umrechnet zu KWH usw...
Meine Hoffnung wäre, das man einfach die Zeit runtersetzt, so das es genauer/öfter Rechnet.
Oder bin ich total auf dem Holzweg!?
Zitat von: micmuec am 21 Juli 2022, 19:04:44
ich denke das die Monotonic etwas "grob" zählt. kann man das einstellen?
Hallo Michael,
ich denke eher es liegt an Dir :)
Vorschlag
EnergyCalc_2 monotonic {ReadingsVal($name,"relay_0_energy_Total","0")/60},
Anzeige_EnergyCalc_2 {sprintf "%.2f",ReadingsVal($name,'EnergyCalc_2','')}
Unter der Annahme, das Du einen Zähler xxx_Total hast. Bei mir zeigt ENERGY die Momentanleistung, die kann man so nicht summieren.
Und erst runden und dann monotonic ist die falsche Reihenfolge :)
Edit: ja ich denke Du bist auf dem Holzweg. Zeig mal ein list von deinem Shelly.
Gruß Otto
Hallo Otto.
Danke für deine Hilfe!
Zitatich denke eher es liegt an Dir :)
Das hab ich schon befürchtet, das ich wieder schuld bin ::)
Zitat
EnergyCalc_2 monotonic {ReadingsVal($name,"relay_0_energy_Total","0")/60},
Anzeige_EnergyCalc_2 {sprintf "%.2f",ReadingsVal($name,'EnergyCalc_2','')}
Deinen Vorschlag werde ich gleich mal Testen.
ZitatUnter der Annahme, das Du einen Zähler xxx_Total hast. Bei mir zeigt ENERGY die Momentanleistung, die kann man so nicht summieren.
Und erst runden und dann monotonic ist die falsche Reihenfolge :)
Ja total gibt es.
Hier mein list:
Internals:
CFGFN
CID shellyem3_BCFF4DFD1B77
DEF shellyem3_BCFF4DFD1B77
FUUID 62d70833-f33f-9f64-c2f2-969293fd9e6d44a4
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.178.108_28606
MQTT2_FHEM_Server_MSGCNT 459101
MQTT2_FHEM_Server_TIME 2022-07-21 21:57:13
MSGCNT 459101
NAME MQTT2_shellyem3_BCFF4DFD1B77
NR 1233
STATE ???
TYPE MQTT2_DEVICE
eventCount 459171
Helper:
DBLOG:
emeter_0_power:
DBLogging:
TIME 1658433431.7796
VALUE 223.13
emeter_0_total:
DBLogging:
TIME 1658433432.10317
VALUE 4936.6
emeter_1_power:
DBLogging:
TIME 1658433432.26424
VALUE 311.13
emeter_1_total:
DBLogging:
TIME 1658433432.58633
VALUE 5518.7
emeter_2_power:
DBLogging:
TIME 1658433432.74725
VALUE 32.65
emeter_2_total:
DBLogging:
TIME 1658433433.06906
VALUE 3191.7
emeter_energy_sum:
DBLogging:
TIME 1658433421.67308
VALUE 558
statEnergyCalc_0Year:
DBLogging:
TIME 1658433433.15564
VALUE 26864.54000000000087
statEnergyCalc_1Year:
DBLogging:
TIME 1658433433.15564
VALUE 42989.41
statEnergyCalc_2Year:
DBLogging:
TIME 1658433433.15564
VALUE 27205.61
READINGS:
2022-07-21 21:57:13 EnergyCalc_0 26868.42
2022-07-21 21:57:13 EnergyCalc_1 42994.53
2022-07-19 21:39:15 EnergyCalc_1Price 0.0002846
2022-07-21 21:57:13 EnergyCalc_2 27206.15
2022-07-19 21:38:27 IODev MQTT2_FHEM_Server
2022-07-21 21:57:11 emeter_0_current 1.14
2022-07-21 21:57:01 emeter_0_energy 224
2022-07-21 21:57:11 emeter_0_pf 0.86
2022-07-21 21:57:11 emeter_0_power 223.13
2022-07-21 21:57:01 emeter_0_returned_energy 0
2022-07-21 21:57:12 emeter_0_total 4936.6
2022-07-21 21:57:12 emeter_0_total_returned 0.0
2022-07-21 21:57:12 emeter_0_voltage 228.30
2022-07-21 21:57:12 emeter_1_current 1.48
2022-07-21 21:57:01 emeter_1_energy 301
2022-07-21 21:57:12 emeter_1_pf 0.92
2022-07-21 21:57:12 emeter_1_power 311.13
2022-07-21 21:57:01 emeter_1_returned_energy 0
2022-07-21 21:57:12 emeter_1_total 5518.7
2022-07-21 21:57:12 emeter_1_total_returned 9013.6
2022-07-21 21:57:12 emeter_1_voltage 227.69
2022-07-21 21:57:12 emeter_2_current 0.64
2022-07-21 21:57:01 emeter_2_energy 33
2022-07-21 21:57:12 emeter_2_pf 0.22
2022-07-21 21:57:12 emeter_2_power 32.65
2022-07-21 21:57:01 emeter_2_returned_energy 0
2022-07-21 21:57:13 emeter_2_total 3191.7
2022-07-21 21:57:13 emeter_2_total_returned 0.0
2022-07-21 21:57:12 emeter_2_voltage 230.88
2022-07-21 21:57:01 emeter_energy_sum 558
2022-07-21 21:57:11 relay_0 off
2022-07-21 21:57:13 statEnergyCalc_0 Hour: 27.00000000000000 Day: 8880.00000000000000 Month: 26864.54000000000087 Year: 26864.54000000000087 (since: )
2022-07-21 21:57:13 statEnergyCalc_0Day 8880.00000000000000
2022-07-20 23:59:56 statEnergyCalc_0DayLast 17983.22000000000116
2022-07-21 21:57:13 statEnergyCalc_0Hour 27.00000000000000
2022-07-21 20:59:55 statEnergyCalc_0HourLast 1199.00000000000000
2022-07-21 20:59:55 statEnergyCalc_0Last Hour: 1199.00000000000000 Day: 17983.22000000000116 Month: - Year: - (since: )
2022-07-21 21:57:13 statEnergyCalc_0Month 26864.54000000000087
2022-07-21 21:57:13 statEnergyCalc_0Year 26864.54000000000087
2022-07-21 21:57:13 statEnergyCalc_1 Hour: 261.00 Day: 18848.00 Month: 42989.41 Year: 42989.41 (since: )
2022-07-21 21:57:13 statEnergyCalc_1Day 18848.00
2022-07-20 23:59:56 statEnergyCalc_1DayLast 24132.34
2022-07-19 21:39:15 statEnergyCalc_1DayLastPrice 0.0002846
2022-07-19 21:39:15 statEnergyCalc_1DayPrice 0.0002846
2022-07-21 21:57:13 statEnergyCalc_1Hour 261.00
2022-07-21 20:59:55 statEnergyCalc_1HourLast 3432.00
2022-07-21 20:59:55 statEnergyCalc_1Last Hour: 3432.00 Day: 24132.34 Month: - Year: - (since: )
2022-07-21 21:57:13 statEnergyCalc_1Month 42989.41
2022-07-19 21:39:15 statEnergyCalc_1MonthPrice 0.0002846
2022-07-21 21:57:13 statEnergyCalc_1Year 42989.41
2022-07-19 21:39:15 statEnergyCalc_1YearPrice 0.0002846
2022-07-21 21:57:13 statEnergyCalc_2 Hour: 2117.00 Day: 13280.00 Month: 27205.61 Year: 27205.61 (since: )
2022-07-21 21:57:13 statEnergyCalc_2Day 13280.00
2022-07-20 23:59:56 statEnergyCalc_2DayLast 13919.58
2022-07-21 21:57:13 statEnergyCalc_2Hour 2117.00
2022-07-21 20:59:55 statEnergyCalc_2HourLast 3182.00
2022-07-21 20:59:55 statEnergyCalc_2Last Hour: 3182.00 Day: 13919.58 Month: - Year: - (since: )
2022-07-21 21:57:13 statEnergyCalc_2Month 27205.61
2022-07-21 21:57:13 statEnergyCalc_2Year 27205.61
helper:
_98_statistics myStatDevice
Attributes:
DbLogExclude .*
DbLogInclude emeter_energy_sum,emeter_0_total,emeter_1_total,emeter_2_total,emeter_0_power,emeter_1_power,emeter_2_power,VerbrauchDayKW,VerbrauchDayLastKW,VerbrauchMonthKW,VerbrauchYearKW,statEnergyCalc_2Year,statEnergyCalc_1Year,statEnergyCalc_0Year
alias Shelly_3EM
readingList shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/0/power:.* emeter_0_power
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/0/pf:.* emeter_0_pf
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/0/current:.* emeter_0_current
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/0/voltage:.* emeter_0_voltage
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/0/total:.* emeter_0_total
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/0/total_returned:.* emeter_0_total_returned
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/1/power:.* emeter_1_power
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/1/pf:.* emeter_1_pf
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/1/current:.* emeter_1_current
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/1/voltage:.* emeter_1_voltage
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/1/total:.* emeter_1_total
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/1/total_returned:.* emeter_1_total_returned
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/2/power:.* emeter_2_power
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/2/pf:.* emeter_2_pf
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/2/current:.* emeter_2_current
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/2/voltage:.* emeter_2_voltage
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/2/total:.* emeter_2_total
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/2/total_returned:.* emeter_2_total_returned
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/relay/0:.* relay_0
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/0/energy:.* emeter_0_energy
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/0/returned_energy:.* emeter_0_returned_energy
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/1/energy:.* emeter_1_energy
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/1/returned_energy:.* emeter_1_returned_energy
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/2/energy:.* emeter_2_energy
shellyem3_BCFF4DFD1B77:shellies/shellyem3-BCFF4DFD1B77/emeter/2/returned_energy:.* emeter_2_returned_energy
room Shelly
userReadings EnergyCalc_0 monotonic {sprintf('%.2f',ReadingsVal($name,"emeter_0_energy","0"))},
EnergyCalc_1 monotonic {sprintf('%.2f',ReadingsVal($name,"emeter_1_energy","0"))},
EnergyCalc_2 monotonic {sprintf('%.2f',ReadingsVal($name,"emeter_2_energy","0"))},
emeter_energy_sum:emeter_2_energy:.* {return ReadingsVal("$name","emeter_0_energy",0)
+ ReadingsVal("$name","emeter_1_energy",0)+ ReadingsVal("$name","emeter_2_energy",0);}
ok MQTT2
Bei mir sieht das so aus:
relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum("$name","relay_0_energy",0)}
Aber irgendwie gibt es bei Dir kein relay_0_energy ?
Gruß Otto
Zitat von: Otto123 am 21 Juli 2022, 22:20:50
ok MQTT2
Bei mir sieht das so aus:
[code]relay_0_energy_total:relay_0_energy:.* monotonic {ReadingsNum("$name","relay_0_energy",0)}
[/code]
Aber irgendwie gibt es bei Dir kein relay_0_energy ?
Gruß Otto
Das relais_0_energy wird von einem Beispiel für einen Shelly 2.5 sein. Er hat einen em3 :-)
Zitat von: micmuec am 21 Juli 2022, 19:04:44
hab ein Userreading angelegt, EnergyCalc_2 monotonic {sprintf('%.2f',ReadingsVal($name,"relay_0_energy","0")/60)}
Das Funktionierte auch alles sehr gut, bis ich einen Durchlauferhitzer bekommen habe.
Dieser Stromfresser braucht dezente 10-20KW.
Naja die ursprüngliche Idee war nicht von mir - hat ja angeblich funktioniert ::)
Also ich weiss je nicht, was bei euch der 3EM unter "energy" anzeigt.
Bei mir sieht es so aus, als ob das ein Durchschnittswert der letzten ??Minute(n) von "power" ist. Also für diesen Zweck eigentlich ungeeignet.
Warum benutzt du nicht "total". Das ist von sich aus fortlaufend und resistent gegen Stromausfall und.
Andere generelle Frage auf die ich noch keine Antwort gefunden habe. Muss ich eigentlich "_returned" wieder abziehen, um auf den wirklichen Verbrauch zu kommen.
Zitat von: DetlefR am 24 Juli 2022, 17:49:29
Also ich weiss je nicht, was bei euch der 3EM unter "energy" anzeigt.
Bei mir sieht es so aus, als ob das ein Durchschnittswert der letzten ??Minute(n) von "power" ist. Also für diesen Zweck eigentlich ungeeignet.
Warum benutzt du nicht "total". Das ist von sich aus fortlaufend und resistent gegen Stromausfall und.
Deswegen besser andersherum vorgehen aus kWh kW bestimmen, siehe: https://forum.fhem.de/index.php/topic,97959.msg1225965.html#msg1225965
Da jetzt jeder mal sagt was er gerade so denkt, mach ich auch mit:
Bei meinem PlugS zeigt energy die aufgelaufenen Wattminuten. Dieser Wert wird bei Stromverlust zurückgesetzt. Deswegen war die ursprüngliche Frage nach einem Zähler mit monotonic :o
Nachzulesen in der Shelly Doku https://shelly-api-docs.shelly.cloud/gen1/#shelly-plug-plugs-mqtt
Was der 3EM so für Werte liefert kann man hier nachlesen https://shelly-api-docs.shelly.cloud/gen1/#shelly-3em-mqtt
Der hat einen Zähler in einem nichtflüchtigem Speicher - damit braucht den monotonic nicht. Aber energy enthält auch dort die aufgelaufenen Wattminuten.
Den Wert für die Momentanleistung liefern die Shellies, den braucht man nicht zurück rechnen. Den Einwand von Damian hab ich nicht verstanden. ::)
Zitat von: Otto123 am 24 Juli 2022, 22:21:31
Da jetzt jeder mal sagt was er gerade so denkt, mach ich auch mit:
Bei meinem PlugS zeigt energy die aufgelaufenen Wattminuten. Dieser Wert wird bei Stromverlust zurückgesetzt. Deswegen war die ursprüngliche Frage nach einem Zähler mit monotonic :o
Nachzulesen in der Shelly Doku https://shelly-api-docs.shelly.cloud/gen1/#shelly-plug-plugs-mqtt
Was der 3EM so für Werte liefert kann man hier nachlesen https://shelly-api-docs.shelly.cloud/gen1/#shelly-3em-mqtt
Der hat einen Zähler in einem nichtflüchtigem Speicher - damit braucht den monotonic nicht. Aber energy enthält auch dort die aufgelaufenen Wattminuten.
Den Wert für die Momentanleistung liefern die Shellies, den braucht man nicht zurück rechnen. Den Einwand von Damian hab ich nicht verstanden. ::)
Das Ermitteln von Gesamtenergie aus Leistung dürfte in den meisten Fällen nicht sinnvoll sein, da nicht zuverlässig genug. Es reicht ja schon, wenn das Messgerät mal kurz offline ist . Jeder Energie/Leistungsmesser hat einen Zähler für Energie, aus der man Durchschnittsleistung gut ermitteln kann (mein Link). Den Vorteil habe ich im verlinkten Thread bereits erklärt. Eine momentane Leistung ist nicht so aussagekräftig (sie kann nächste Sekunde schon anders sein), wie eine durchschnittliche Leistungsaufnahme zwischen zwei Sendezeitpunkten (das Sendeintervall ist meisten mehr als eine Sekunde). Zweitens, wenn man mehrere Zähler in einem Device wie z. B. Tasmota realisiert, dann wünscht man sich eine Synchronisation der Leistungsaufnahmen, sonst kann es passieren, dass man angeblich mehr verbraucht als z. B. von der PV-Anlage produziert wird und das sieht in Diagrammen nicht schön aus :)
Hi
Vielen Dank an Otto und natürlich an den Rest auch für eure Hilfe.
so wie es ausschaut, Funktioniert es jetzt so wie es soll.
Hab das Shelly Device ein paar mal löschen und neu anlegen müssen.
Nachdem ich dann am Shelly auch alle Werte gelöscht habe, und das userreading so angelegt habe:
EnergyCalc_0 monotonic {ReadingsVal($name,"emeter_0_power","0")/60},
Anzeige_EnergyCalc_0 {sprintf "%.2f",ReadingsVal($name,'EnergyCalc_0','')}
Sind endlich Werte herausgekommen die auch der Wirklichkeit entsprechen.
ZitatZitat von: micmuec am 21 Juli 2022, 19:04:44
hab ein Userreading angelegt, EnergyCalc_2 monotonic {sprintf('%.2f',ReadingsVal($name,"relay_0_energy","0")/60)}
Das Funktionierte auch alles sehr gut, bis ich einen Durchlauferhitzer bekommen habe.
Dieser Stromfresser braucht dezente 10-20KW.
Naja die ursprüngliche Idee war nicht von mir - hat ja angeblich funktioniert ::)
Stimmt so nicht ganz. Das Reading war von einem anderen Shelly :-) aber vom aufbau her sind die bei mir alle gleich...relay_0_energy gibt ja nicht bei 3EM. sorry da hab ich nicht aufgepasst.
ZitatAndere generelle Frage auf die ich noch keine Antwort gefunden habe. Muss ich eigentlich "_returned" wieder abziehen, um auf den wirklichen Verbrauch zu kommen.
So wie ich das sehe ja. zu mindestens wird es bei mir nicht abgezogen.
ZitatDer hat einen Zähler in einem nichtflüchtigem Speicher - damit braucht den monotonic nicht. Aber energy enthält auch dort die aufgelaufenen Wattminuten.
Das Sagst du jetzt wo es wieder geht... :o ??? 8) ;D
MFG
Michael
Zitatshellies/shellyem3-<deviceid>/emeter/<i>/power instantaneous active power in Watts
Ich habe keine Vorstellung was dabei rauskommt, wenn man die Momentanleistung mit monotonic aufsummiert. ::)
Die jemals "gezählte" Energie sollte in shellies/shellyem3-<deviceid>/emeter/<i>/total_returned stehen.
ZitatCode: [Auswählen]
EnergyCalc_0 monotonic {ReadingsVal($name,"emeter_0_power","0")/60},
Anzeige_EnergyCalc_0 {sprintf "%.2f",ReadingsVal($name,'EnergyCalc_0','')}
Sind endlich Werte herausgekommen die auch der Wirklichkeit entsprechen.
Wenn du dein eigenes Beispiel aus dem ersten Post nimmst, konstant 150W über den ganzen Tag. Dann steht dort nicht 24*0.15 sondern 0 weil sich "power" nie geändert hat.
Wie Otto schon richtig geschrieben hatte. Wenn Tagesverbrauch dann mit "total-total_returned" und das ganze nicht mit monotonic. Sondern am Tagesende merken und diesen Wert vom laufenden Wert abziehen. Oder ins Log schreiben und als Diagramm darstellen.
moin
ZitatDie jemals "gezählte" Energie sollte in shellies/shellyem3-<deviceid>/emeter/<i>/total_returned stehen.
Ich glaub das das eher die minus energy ist, also wenn man z.b. Solar hat. so schaut das zumindestens bei mir aus.
ZitatWie Otto schon richtig geschrieben hatte. Wenn Tagesverbrauch dann mit "total-total_returned" und das ganze nicht mit monotonic. Sondern am Tagesende merken und diesen Wert vom laufenden Wert abziehen. Oder ins Log schreiben und als Diagramm darstellen.
klingt plausibel und ist bestimmt auch eine gute Lösung. leider hab ich vom programmieren zu wenig Ahnung um das zu realisieren. was mich ein bisschen zwingt, fertige Lösungen zu nehmen.
Zitatklingt plausibel und ist bestimmt auch eine gute Lösung. leider hab ich vom programmieren zu wenig Ahnung um das zu realisieren.
Dafür hast du ja das Forum hier. ;)
Zitatwas mich ein bisschen zwingt, fertige Lösungen zu nehmen.
Ja, aber dann eine wirkliche Lösung.
Vorschlag. Installiere deine Lösung mal für alle drei Phasen und vergleiche das mit dem was der Stromzähler sagt.