Wie kann ich meinen Gaszählerstand korrigieren. Durch einen Stromausfall in der Strasse hat sich der Wert verändert. Von Zählerstand als Beispiel 27600 auf 25783. Damit stimmt die Auswertung nicht mehr. Hier ein list Gas
Internals:
BasicFeePerMonth 0
CODE 9
CUL868_MSGCNT 1135
CUL868_RAWMSG E03093D100004001000
CUL868_RSSI -84.5
CUL868_TIME 2022-03-13 20:14:37
CostPerUnit 0
DEF 9 0.005 0.005
FUUID 5c44de89-f33f-33d2-9d2f-8d229c9ece573d2a
IODev CUL868
LASTInputDev CUL868
MSGCNT 1135
NAME Gas
NR 32
STATE CNT: 61 CUM: 25551.570 5MIN: 0.020 TOP: 0.938
TYPE CUL_EM
corr1 0.005
corr2 0.005
READINGS:
2022-03-13 20:14:37 RAW CNT: 61 CUM: 16 5MIN: 4 TOP: 16
2022-03-13 19:59:35 basis 15434898
2022-03-13 00:01:55 cum_day CUM_DAY: 8.675 CUM: 25544.430 COST: 0.00
2022-03-09 19:17:38 cum_month CUM_MONTH: 186.715 CUM: 25514.075 COST: 0.00
2022-03-13 20:14:37 current 0.02
2022-03-13 20:14:37 current_cnt 4
2022-03-13 20:14:37 peak 0.9375
2022-03-13 20:14:37 peak_cnt 16
2022-03-13 20:14:37 seqno 61
2022-03-13 20:14:37 state CNT: 61 CUM: 25551.570 5MIN: 0.020 TOP: 0.938
2022-03-13 20:14:37 total 25551.57
2022-03-13 20:14:37 total_cnt 16
2022-03-13 20:14:37 tsecs 1647198877
Attributes:
CounterOffset -51623,75
IODev CUL868
room Gas,CUL_EM
Es gibt im Webview einen Punkt "attr Gas state format". Bei der Beschreibung komme ich aber ins schleudern. Ist wahrscheinlich nicht der richtige Ansatz.
PS: In welchem thread ist das Thema ab Besten aufgehoben?
Ich würde es mit einem userReading ändern
attr Gas userReading Verbrauch_korregiert {ReadingsNum($name, "total", 0) + 12345}
dazu gibt es das Attribut counteroffset. Steht auch in der help. ::)
Nimm den GasCalculator, dann hast Du das Problem nicht mehr und Statistikwerte.
Grüße Markus
Mit dem Couteroffset habe ich Probleme mit meiner def. Der steht auf -51623,75 aber von was?? Der tatsächliche Zählerstand ist jetzt die 27600. Waren das mal Werte aus der Urzeit der Aufzeichnung? Ich weis es nicht mehr. Ich muss mich ja an dem aktuellen Wert in der Tabelle orientieren und da z.B. +1817 eintragen um auf die 27600 zu kommen. Das klappt aber nur mit der def von "9 1 1" und nicht mit "9 0.005 0.005".
Hmm, dann noch ein Faktor 200 ? :-\
ZitatNimm den GasCalculator, dann hast Du das Problem nicht mehr
Da muss ich mich erst einlesen. Auf Anhieb ist mir noch nicht klar, woher der calculator seine Werte bezieht.
aus dem EM-device. ;)
Allerdings habe ich gerade in meiner def gesehen, dass es leider doch nicht direkt Dein Problem löst. Denn die Verknüpfung ist der regexp auf total
defmod StatGasZaehler GasCalculator GasZaehler:total:.*
:'( Ggfs. könntest Du das über das bereits vorgeschlagene userreadings lösen.
Noch mal zu userReading
attr Gas userReading Verbrauch_korregiert {ReadingsNum($name, "total", 0) + 12345}
Bedeutet das in meinem Fall
attr Gas userReading Verbrauch_korregiert {ReadingsNum($name, "25783", 0) + 1817}
Oder steh ich auf den Schlauch
etwas angepasstattr Gas userReadings Verbrauch_korrigiert:total {ReadingsNum($name, "total",0) + 1817}
bedeutet: zusätzliches reading Verbrauch_korrigiert durch user erstellt und berechnet. Neuberechnung, wenn total aktualisiert wird. Inhalt des neuen readings = aktueller Wert des readings Gas:total + 1817(Sollte total nicht vorhanden sein[was aber schon durch :total ausgeschlossen wird] liefert ReadungsNum den Wert 0)
Verstanden ?
Ich habs zwar begriffen, aber trotzdem ändert sich "total" nicht :-(
total ändert sich ja auch nicht!
Es gibt (wie ja schon mal geschrieben wurde) ein NEUES Reading Verbrauch_korrigiert wo dann der korrekte Wert drin stehen sollte...
EDIT: wenn dir Verbrauch_korrigiert nicht gefällt, nenn es anders... ;)
Gruß, Joachim
Da brauche ich nochmal Hilfe: Wo finde ich dieses userreading um im Plot darauf zugreifen zu können?
Bestimmt nachzulesen in der commandref oder Wiki...
Also: wenn sich das Reading total in deinem Device ändert und (somit hoffentlich) einen Event erzeugt, wird das (darauf lauschende) userReadings "ausgewertet" und das NEUE Reading AM SELBEN Device "erzeugt" oder eben aktualisiert wo dann der KORRIGIERTE Wert drin stehen sollte/müsste.
Dieses Reading nimmst du einfach als "Trigger" für dein FileLog oder was auch immer fertig...
Gruß, Joachim
Der trigger war m.E. zu eingeschränkt:
attr Gas userReadings Verbrauch_korrigiert:total:.* {ReadingsNum($name, 'total',0) + 1817}
Prinzipiell würde ich aber überlegen, ob das nicht als "monotonic" angelegt werden kann und dann einfach der Initialwert gesetzt wird.
Etwas stimmt nicht Wenn ich euch richtig interpretiere müsste ich im Eventmanager ein Ereignis sehen, dass irgend etwas mit userReading; Gas; Total; oder meiner Zahl(27xxx) zu tun hat. Ich seh aber nix.
Ah, sorry mit dem "neuen"
attr Gas userReadings Verbrauch_korrigiert:total:.* {ReadingsNum($name, 'total',0) + 1817}
sehe ich es bei den Readings im Device. Jetzt muss es NUR noch in das logfile, damit ich es im svg plot auch auswählen kann.
Zitat von: stgeran am 16 März 2022, 13:51:37
Etwas stimmt nicht Wenn ich euch richtig interpretiere müsste ich im Eventmanager ein Ereignis sehen, dass irgend etwas mit userReading; Gas; Total; oder meiner Zahl(27xxx) zu tun hat. Ich seh aber nix.
Dann poste doch mal ein aktuelles list und Auszüge aus dem Eventmonitor (nicht Eventmanager ;) )...
Gruß, Joachim
...das Problem dürfte https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/15_CUL_EM.pm#L195 (https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/15_CUL_EM.pm#L195) (etc.) sein: Da wird nicht readingsBulkUpdate() aufgerufen, sondern direkt in den Hash geschrieben...
Würde ggf. Sinn machen, einen neuen (ausnahmsweise!) Thread in SlowRF aufzumachen und Rudi zu bitten, sich das mal anzusehen.
An sich dürften die erforderlichen Modifikationen nicht allzu schwierig sein, ggf. selbst mal an einem patch versuchen? (Da wird aber auch irgendwas mit den Timings drumrum gemacht, so dass ich hier keinen Vorschlag machen mag...)
Nachtrag - Hier hatten wir mal ein ähnliches Problem: https://forum.fhem.de/index.php/topic,123210.0.html => https://svn.fhem.de/trac/changeset/25094/