Stromverbrauch Dummy setzt Jahreszähler nicht auf 0

Begonnen von B.Stromberg, 02 Januar 2023, 01:23:21

Vorheriges Thema - Nächstes Thema

B.Stromberg

Moin!
Zuerst einmal ein "Frohes neues Jahr in die elüstere Runde hier!"
Auf anraten des Forums, habe ich einen neuen Beitrag verfasst. Das Ganze fußt allerdings auf folgendem Thread:

https://forum.fhem.de/index.php/topic,115637.30.html

Sollte dies so nicht gewünscht sein, bitte die Beiträge zusammenlegen.

Nun zum Problem:

Ich erfasse meinen Stromverbrauch mit FHEM. Das klappt, auch dank eurer Hilfe, super.
Nur leider ist der Zähler  für den Jahresverbrauch bisher nicht auf "0" gesprungen. Sämtliche Readings sind meiner Ansicht nach korrekt:

Internals:
   FUUID      5edc1980-f33f-0855-fa44-917ad2b8c36a379e
   NAME       Strom
   NR         279
   STATE      Jahresverbrauch 0
   TYPE       dummy
   eventCount 414
   READINGS:
     2023-01-02 01:05:20   Jahresverbrauch 3766.06300003331
     2023-01-02 01:05:20   StromverbrauchStd 0.029
     2023-01-02 01:05:20   StromverbrauchTag 0.032
     2023-01-01 23:58:00   endDay_zaehler_jetzt 5.29100000028939
     2022-12-31 23:58:00   endMonth_zaehler_jetzt 505.59499986936
     2023-01-01 23:58:00   endWeek_zaehler_jetzt 51.5270000027194
     2022-12-31 23:58:00   endYear_zaehler_jetzt 2495.73599997036
     2023-01-01 23:59:00   lastDay         7.16
     2023-01-01 23:58:00   startDay_zaehler_jetzt 6261.76700000367
     2022-12-31 23:58:00   startMonth_zaehler_jetzt 6256.47600000338
     2023-01-01 23:58:00   startWeek_zaehler_jetzt 6261.76700000367
     2022-12-31 23:58:00   startYear_zaehler_jetzt 6256.47600000338
     2023-01-02 01:04:50   zaehler_jetzt   6261.79900000367
Attributes:
   event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
   readingList StromverbrauchStd StromverbrauchTag zaehler_vortag zaehler_jetzt
   room       Stromverbrauch
   userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)},
Jahresverbrauch {ReadingsVal($name,'zaehler_jetzt',0) - ReadingsVal($name,'endYear_zaehler_jetzt',0)}

State war hier ein Versuch von mir ein Reading zu ändern, irgendwie bekomme ich das auch mit delreading nicht mehr weg :(

Das Device hat pünktlich um 23:58h am 31.12.22 den Jahresendwert gesetzt.
Nur leider, wie gesagt, zählt der Zähler weiter hoch, anstatt am 01.01.23 zu nullen (s. Anhang)

Da das Ganze nur einmal im Jahr passiert, würde es mir ja schon reichen, wenn ich den Wert manuell mit einem setreading oder set Befehl für das jeweils neue Jahr auf "0" setzen könnte. Nur funktioniert das leider auch nicht bzw. mache ich es wohl falsch?

Hier nochmal die Raw Definition:

defmod Strom dummy
attr Strom event-on-change-reading StromverbrauchStd,StromverbrauchTag,zaehler_jetzt
attr Strom readingList StromverbrauchStd StromverbrauchTag zaehler_vortag zaehler_jetzt
attr Strom room Stromverbrauch
attr Strom userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)},\
Jahresverbrauch {ReadingsVal($name,'zaehler_jetzt',0) - ReadingsVal($name,'endYear_zaehler_jetzt',0)}

setstate Strom Jahresverbrauch 0
setstate Strom 2023-01-02 01:18:10 Jahresverbrauch 3766.06900003332
setstate Strom 2023-01-02 01:18:10 StromverbrauchStd 0.029
setstate Strom 2023-01-02 01:18:10 StromverbrauchTag 0.038
setstate Strom 2023-01-01 23:58:00 endDay_zaehler_jetzt 5.29100000028939
setstate Strom 2022-12-31 23:58:00 endMonth_zaehler_jetzt 505.59499986936
setstate Strom 2023-01-01 23:58:00 endWeek_zaehler_jetzt 51.5270000027194
setstate Strom 2022-12-31 23:58:00 endYear_zaehler_jetzt 2495.73599997036
setstate Strom 2023-01-01 23:59:00 lastDay 7.16
setstate Strom 2023-01-01 23:58:00 startDay_zaehler_jetzt 6261.76700000367
setstate Strom 2022-12-31 23:58:00 startMonth_zaehler_jetzt 6256.47600000338
setstate Strom 2023-01-01 23:58:00 startWeek_zaehler_jetzt 6261.76700000367
setstate Strom 2022-12-31 23:58:00 startYear_zaehler_jetzt 6256.47600000338
setstate Strom 2023-01-02 01:17:20 zaehler_jetzt 6261.80500000368


Kann mir jemand sagen, wo der Fehler ist?

Dieser dusselige "setstate Strom Jahresverbrauch 0" war ebenfalls mein manueller Versuch, hat aber nichts gebracht :(





OdfFhem

setstate setzt den STATE eines FHEM Gerätes; zusätzlich wird es "speziell" im Zusammenhang mit dem statefile verwendet.

setreading setzt ein Reading eines FHEM Gerätes.

Folgende Eingabe in der Kommandozeile sollte also zum gewünschten Ergebnis führen:

setreading Strom Jahresverbrauch 0


Verwendet man "Raw definition" u.a. zum Neusetzen von Readings, sollte man setreading immer hinter dem entsprechenden setstate verwenden; ansonsten überschreibt setstate den neuen Wert wieder mit dem alten Wert.

B.Stromberg

Zitat von: OdfFhem am 02 Januar 2023, 03:13:15
setstate setzt den STATE eines FHEM Gerätes; zusätzlich wird es "speziell" im Zusammenhang mit dem statefile verwendet.

setreading setzt ein Reading eines FHEM Gerätes.

Folgende Eingabe in der Kommandozeile sollte also zum gewünschten Ergebnis führen:

setreading Strom Jahresverbrauch 0


Bist ja genauso eine Nachteule wie ich...
Wenn mich ein Problem nervt, bekomme ich keinen Schlaf ;)


setreading Strom Jahresverbrauch 0


Funktioniert leider nicht :(

Habe mal ein Screenshot angefügt.
Könnte es sein, dass monotonic da irgendwie spinnt?




Verwendet man "Raw definition" u.a. zum Neusetzen von Readings, sollte man setreading immer hinter dem entsprechenden setstate verwenden; ansonsten überschreibt setstate den neuen Wert wieder mit dem alten Wert.

OdfFhem

Zitat von: B.Stromberg am 02 Januar 2023, 03:36:54
Bist ja genauso eine Nachteule wie ich...
Kommt schon mal vor ;-)


Genaueres Schauen hat ergeben, dass Jahresverbrauch ein userReading ist:

Jahresverbrauch {ReadingsVal($name,'zaehler_jetzt',0) - ReadingsVal($name,'endYear_zaehler_jetzt',0)}

setreading macht also eigentlich, was es soll, wird aber sofort wieder überschrieben.

Gemäß Formel musst Du eigentlich nur das endYear-Reading via setreading anpassen (ist jetzt wohl noch vom VorVorJahr) und dann sollte Jahresverbrauch autom. gesetzt werden ...

B.Stromberg

Zitat von: OdfFhem am 02 Januar 2023, 04:05:35

Gemäß Formel musst Du eigentlich nur das endYear-Reading via setreading anpassen (ist jetzt wohl noch vom VorVorJahr) und dann sollte Jahresverbrauch autom. gesetzt werden ...

Oh Mann, manchmal hat man aber auch wirklich Tomaten auf den Augen!
Top!
Das war es....

Jetzt müsste das nur noch automatisch gehen jedes Jahr, weil nächstes Jahr habe ich das garantiert wieder vergessen ;)

OdfFhem

Zitat von: B.Stromberg am 02 Januar 2023, 04:12:44
Jetzt müsste das nur noch automatisch gehen jedes Jahr, weil nächstes Jahr habe ich das garantiert wieder vergessen ;)

Mit dem gebräuchlichen at sollte das funktionieren ...

B.Stromberg

Zitat von: OdfFhem am 02 Januar 2023, 04:21:32
Mit dem gebräuchlichen at sollte das funktionieren ...

4:23h
Das "at" gehört ins Userreading?
Nur wohin?

Oder ist mir da beim Kopieren ein Fehler passiert, da mit dem Komma Schrägstrich vor Jahresverbrauch?

attr Strom userReadings zaehler_jetzt:StromverbrauchTag.* monotonic {ReadingsVal($name,'StromverbrauchTag',0)},\
Jahresverbrauch {ReadingsVal($name,'zaehler_jetzt',0) - ReadingsVal($name,'endYear_zaehler_jetzt',0)}


OdfFhem

Zitat von: B.Stromberg am 02 Januar 2023, 04:25:40
Das "at" gehört ins Userreading?

Nein, at ist ein eigener FHEM-Gerätetyp: https://wiki.fhem.de/wiki/At

Ein konkretes Beispiel für Deinen Fall ist dort nicht erwähnt, aber Dein "Problem" sollte lösbar sein ...

B.Stromberg

Hmm, denke aber der Hase liegt wo anders im Pfeffer.
Die Vortags, Wochen und Monatsreadings gehen ja auch...

Muss mir das noch einmal genau ansehen, aber die Welt geht dann nicht unter, wenn ich das einmal im Jahr per Hand setzen muss.

Alternative wäre ja noch Year end mit Year start zu ersetzen, der Zähler war korrekt....

OdfFhem

Zitat von: B.Stromberg am 02 Januar 2023, 12:10:16
Hmm, denke aber der Hase liegt wo anders im Pfeffer.

Könnte wirklich sein, da scheinbar alle start- sowie end-Readings regelmäßig gesetzt werden ...

Hast Du vielleicht schon ein at am Start, oder ein DOIF, oder ...

KölnSolar

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

B.Stromberg

Moin!
Bin halbwegs froh, dass ich das so zusammenkopiert am Laufen habe...

Das Wiki gibt über das statistics Modul nicht viel her und meine erste (vielleicht oberflächliche Suche) hat mir da auch nicht viel Input gebracht...

Es ist schwer für jemanden, der nicht Informatiker ist, den paar Zeilen im Wiki zum Modul zu folgen.
Aber vielleicht bin ich auch einfach nur noch aus dem Alter raus mich in sowas noch reinzufuchsen...

Damian

Zitat von: B.Stromberg am 02 Januar 2023, 22:14:46
Moin!
Bin halbwegs froh, dass ich das so zusammenkopiert am Laufen habe...

Das Wiki gibt über das statistics Modul nicht viel her und meine erste (vielleicht oberflächliche Suche) hat mir da auch nicht viel Input gebracht...

Es ist schwer für jemanden, der nicht Informatiker ist, den paar Zeilen im Wiki zum Modul zu folgen.
Aber vielleicht bin ich auch einfach nur noch aus dem Alter raus mich in sowas noch reinzufuchsen...

Hier habe ich etwas programmiert, was den täglichen, monatlichen und jährlichen Verbrauch berechnet und visualisiert. Man braucht dazu nur das Reading des Zählers anzugeben.

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


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

B.Stromberg

Zitat von: Damian am 02 Januar 2023, 22:24:06
Hier habe ich etwas programmiert, was den täglichen, monatlichen und jährlichen Verbrauch berechnet und visualisiert. Man braucht dazu nur das Reading des Zählers anzugeben.

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

Danke!
Das Ganze sieht sehr interessant aus, das schaue ich mir mal näher an.

Hast du das Ganze auch auf der Tablet UI laufen?

Damian

Zitat von: B.Stromberg am 02 Januar 2023, 22:31:42
Danke!
Das Ganze sieht sehr interessant aus, das schaue ich mir mal näher an.

Hast du das Ganze auch auf der Tablet UI laufen?

Nein, das läuft unter FHEMWEB.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF