FHEM > Automatisierung

[erledigt] Strom, Verbrauch berechnen

(1/3) > >>

Salvi5:
Moin,
ich hoffe ich bin im richtigen Forum.
Normalerweise bitte ich bei Problemen nur um einen kleinen Schubs in die richtige Richtung, aber dieses Mal bin ich wirklich zu blöd.
Ich habe meinen Stromzähler mit einem IR-Lesegerät ausgerüstet. Funktioniert Top!
Das Gerät liefert mir genau den aktuellen Zählerstand per MQTT. Dieser aktualisiert sich nicht nach einer bestimmten Zeitspanne, sondern immer nach 0,1 kW Verbrauch.
Ich habe seit gestern nachmittag aus meiner Sicht alles mögliche gesucht, getestet, probiert und zusammengefügt, ich weiß jedoch nicht, wie ich die Zeitspanne zwischen den 0,1 kW in eine Berechnung einfüge, um den aktuellen Verbrauch auszurechnen. In diesem Fall bitte ich um ein möglichst passendes Stück Code um genau das zu erreichen, denn ich bin mit meinem halbseidenen Programmierlatein am Ende.

Gruß Mike

Salvi5:
Nochmal Moin!
Der frische Schnee hat offenbar geholfen, ich habe das jetzt über ein DOIF gelöst:

--- Code: ---defmod Strom_IR_Lesekopf_ESP32_DOIF_1 DOIF ([Strom_IR_Lesekopf_ESP32:"^STROM_Total_inZ1:.*$"]) \
\
(setreading Strom_IR_Lesekopf_ESP32 lastValue [Strom_IR_Lesekopf_ESP32:STROM_Total_inZ1])\
({ fhem "setreading Strom_IR_Lesekopf_ESP32 Verbrauch_Wh ".(100/(time()-ReadingsNum("Strom_IR_Lesekopf_ESP32","Timestamp",0))*3600) })\
({ fhem "setreading Strom_IR_Lesekopf_ESP32 Timestamp ".time_str2num(ReadingsTimestamp("Strom_IR_Lesekopf_ESP32", "STROM_Total_inZ1",0)) })
attr Strom_IR_Lesekopf_ESP32_DOIF_1 do always

setstate Strom_IR_Lesekopf_ESP32_DOIF_1 initialized
setstate Strom_IR_Lesekopf_ESP32_DOIF_1 2022-01-05 08:31:45 Device Strom_IR_Lesekopf_ESP32
setstate Strom_IR_Lesekopf_ESP32_DOIF_1 2022-01-05 08:31:42 cmd 0
setstate Strom_IR_Lesekopf_ESP32_DOIF_1 2022-01-05 08:31:45 e_Strom_IR_Lesekopf_ESP32_events Laufzeit: 0
setstate Strom_IR_Lesekopf_ESP32_DOIF_1 2022-01-05 08:31:42 mode enabled
setstate Strom_IR_Lesekopf_ESP32_DOIF_1 2022-01-05 08:31:42 state initialized

--- Ende Code ---

Ich hatte erst ein wait von einer Sekunde vor dem dritten Ausführungsteil, das habe ich jetzt mal rausgenommen, um das Ergebnis nicht zu sehr zu verfälschen. Wenns nicht funktioniert, mache ich es wieder rein.

Es funktioniert ja jetzt so weit, aber wenn hier irgend jemand eine ordentliche Lösung hätte, wäre ich trotzdem dankbar...

Gruß Mike

Beta-User:
Aus der commandref zum readingFnAttribut "event-aggregator":
--- Zitat ---One would typically use the linear method with the mean function for quantities continuously varying over time like electric power consumption, temperature or speed.
--- Ende Zitat ---

Damian:
Das sieht mir unnötig kompliziert aus.

Ich würde erstmal setzen:


--- Code: ---attr Strom_IR_Lesekopf_ESP32 oldreadings STROM_Total_inZ1
--- Ende Code ---

und dann definieren:


--- Code: ---DOIF {[Strom_IR_Lesekopf_ESP32:STROM_Total_inZ1];set_State(100/::OldReadingsAge("Strom_IR_Lesekopf_ESP32","STROM_Total_inZ1",0)*3600)}
--- Ende Code ---

Im Status sollte der errechnete Verbrauch stehen.

Frank_Huber:
Die Frage ist ja auch, wie oft muss/will man den Verbrauch in KWh loggen?

Ich logge die aktuelle Leistung W mit. Alles älter 3 Tage wird aus der DB gelöscht.

Die KWh logge ich einmal am Tag kurz vor der Geisterstunde mittels dummy.
(im Dummy ist immer der KWh Wert des Vortages drin. aktell minus Vortag = Tagesverbrauch.)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln