Moin,
ich habe endlich einigermaßen "Tages-, Monats- und Jahresstatistik für Strom-, Gas-, Wasserzähler und andere Zähler" aus dem Wiki ans Laufen bekommen. Ich nutze das nur für Strombezuf und -einspeisung, beide Datenquellen sind strukturell identisch (Kanal 1 und 2 vom HM-ES-TX-WM). Trotzdem funktioniert das Aktualisieren der Readings bei der Einspeisung nicht, obwohl es beim Bezug zu funktionieren scheint.
Konkret wird das Reading
HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour
nicht mit einem sinnvolen Wert befüllt, sondern bleibt bei "0" stehen, obwohl ich am Zeitstempel sehe, dass FHEM da dran geht.
In den beiden anderen Readings, aus denen nach meinem Verständnis nur die Differenz gebildet werden soll (.hour_counter, .last_counter) stehen sinnvolle Werte (1492.92, 1488.07) drin. Interessanterweise scheint die Aggregation im .day aber zu funktionieren, zumindest ist dieser Wert nicht 0.
Hat jemand eine Idee, woran es scheitert? Ist das irgendein Format-Konvertierungsfehler, dass am Ende doch auf 0 gerundet wird?
Sinnvoll wäre ein List vom DOIF, bis jetzt steht da nur ein Name...
Ein List von dem Doif hat gefühlt eine Million Zeilen, das ist nicht in einem Code-Block unterzubringen.
Gibt es irgendwas Spezielles, was ich posten kann, zwecks besserer Fehlersuche?
Interessant sind die Readings im DOIF, die etwas mit HWR_Stromzaehler_IEC_02.energyIEC_kWh zu tun haben.
Hier sind alle Readings:
READINGS:
2023-11-04 18:44:14 Device HWR_Stromzaehler_IEC_01
2023-11-04 18:00:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.day 3.06
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.day_counter 244.38
2023-11-04 18:44:14 HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour 0.02
2023-11-04 18:00:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour_counter 247.44
2023-11-04 18:44:14 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_counter 247.46
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_day 0
2023-11-04 18:00:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_hour 0.02
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_month 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_year 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.month 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.month_counter 244.38
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.year 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.year_counter 244.38
2023-11-04 18:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.day 4.9
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.day_counter 1488.07
2023-11-04 18:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour 0
2023-11-04 18:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour_counter 1492.97
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_counter 1488.07
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_day 0
2023-11-04 18:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_hour 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_month 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_year 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.month 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.month_counter 1488.07
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.year 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.year_counter 1488.07
2023-11-04 18:44:14 block_day_count_HWR_Stromzaehler_IEC_01_energyIEC_kWh executed
2023-11-04 18:00:00 block_hour executed
2023-11-04 01:32:52 block_init executed
2023-11-04 18:44:14 e_HWR_Stromzaehler_IEC_01_energyIEC_kWh 247.46
2023-11-04 01:32:52 mode enabled
2023-11-04 01:32:52 state initialized
2023-11-04 18:00:00 timer_01_c02 04.11.2023 19:00:00
2023-11-04 01:32:52 timer_02_c03 05.11.2023 00:01:00
Die erste Frage stellt sich mir, warum last_day um 01:32 Uhr bei dir gelaufen ist, lt. Programm sollte es um Mitternacht laufen. last_month wird nur zum Monatsende aktualiesiert, last_year dann zum Jahresende. Da musst du etwas warten.
Moin,
hier die aktuelle Fassung:
READINGS:
2023-11-05 12:13:54 Device HWR_Stromzaehler_IEC_01
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.day 3.91
2023-11-05 00:01:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.day_counter 247.89
2023-11-05 12:13:54 HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour 0
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour_counter 251.80
2023-11-05 12:13:54 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_counter 251.80
2023-11-05 00:01:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_day 3.48
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_hour 0.02
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_month 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_year 0
2023-11-05 00:01:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.month 3.509
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.month_counter 244.38
2023-11-05 00:01:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.year 3.509
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_01.energyIEC_kWh.year_counter 244.38
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.day 2.18
2023-11-05 00:01:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.day_counter 1493.02
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour 0
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour_counter 1495.20
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_counter 1488.07
2023-11-05 00:01:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_day 4.95
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_hour 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_month 0
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_year 0
2023-11-05 00:01:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.month 4.95
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.month_counter 1488.07
2023-11-05 00:01:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.year 4.95
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.year_counter 1488.07
2023-11-05 12:13:54 block_day_count_HWR_Stromzaehler_IEC_01_energyIEC_kWh executed
2023-11-05 12:00:00 block_hour executed
2023-11-04 01:32:52 block_init executed
2023-11-05 00:01:00 block_midnight executed
2023-11-05 12:13:54 e_HWR_Stromzaehler_IEC_01_energyIEC_kWh 251.80
2023-11-04 01:32:52 mode enabled
2023-11-04 01:32:52 state initialized
2023-11-05 12:00:00 timer_01_c02 05.11.2023 13:00:00
2023-11-05 00:01:00 timer_02_c03 06.11.2023 00:01:00
Hier die aktuelle Fassung, last_day um 1:32 war wohl bedingt dadurch, dass das die allererste Befüllung nach dem Einrichten war. Jetzt sieht es wieder anders aus. Aber nach wie vor keine Funktion bei
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour 0
hiernach stimmt es:
2023-11-05 12:13:54 HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour 0
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour_counter 251.80
2023-11-05 12:13:54 HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_counter 251.80
denn last_counter-hour.counter ist hour
Offenbar ist die Auflösung deines Readings mit zwei Nachkommastellen zu klein.
Hi,
das ist ja auch Bezug, der darf um diese Zeit ruhig 0 sein. Aber je nach Uhrzeit stehen da auch schon mal sinnvolle Werte. Aber nicht in HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour.
Und an der Auflösung des Readings habe ich nichts bewusst geändert, das ist so wie FHEM das per "Raw definition" angelegt hat.
Zitat von: tndx am 05 November 2023, 17:10:34Hi,
das ist ja auch Bezug, der darf um diese Zeit ruhig 0 sein. Aber je nach Uhrzeit stehen da auch schon mal sinnvolle Werte. Aber nicht in HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour.
Und an der Auflösung des Readings habe ich nichts bewusst geändert, das ist so wie FHEM das per "Raw definition" angelegt hat.
Solange die beiden Readings gleich sind, kann da ja nur Null stehen. Inkonsistenz wäre dann, wenn die Readings last_counter und hour.counter unterschiedlich wären und in hour Null stünde. Solange das nicht der Fall ist, funktioniert alles wie programmiert.
Ja, schon klar, aber genau das funktionert hier nicht:
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour 0
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour_counter 1495.20
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_counter 1488.07
Oder stehe ich auf dem Schlauch? ???
Zitat von: tndx am 05 November 2023, 18:40:01Ja, schon klar, aber genau das funktionert hier nicht:
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour 0
2023-11-05 12:00:00 HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour_counter 1495.20
2023-11-04 01:32:24 HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_counter 1488.07
Oder stehe ich auf dem Schlauch? ???
Ok, ich habe bei 01 geschaut.
Also hier sieht man, dass vom angegebenen Reading keine Events ankommen, denn last_counter ist von 01:32 Uhr müsste aber die Uhrzeit nach 12:00 Uhr haben und größer als 1495,20 sein.
OK, dann ist aber die Frage, warum nicht? Der Daycounter scheint ja zu funktionieren
Das kann ich dir nicht sagen. Das ist dann kein DOIF-Problem.
Ich denke aber schon, denn das entsprechende Reading im Device (HWR_Stromzaehler_IEC_02.energyIEC_kWh) wird aktualisiert, die Übertragung in Doif wird ja durch Doif gesteuert, auch das Anlegen des Readings. Irgendwo hier zwischen scheint es verloren zu gehen. Irgendeine Möglichkeit, das zu Debuggen?
Zitat von: tndx am 05 November 2023, 20:19:59Ich denke aber schon, denn das entsprechende Reading im Device (HWR_Stromzaehler_IEC_02.energyIEC_kWh) wird aktualisiert, die Übertragung in Doif wird ja durch Doif gesteuert, auch das Anlegen des Readings. Irgendwo hier zwischen scheint es verloren zu gehen. Irgendeine Möglichkeit, das zu Debuggen?
Du musst nur den Event-Log beobachten, dass die Readings existieren und per Timer Sachen berechnet werden, ist unabhängig davon ob es Events gibt oder nicht.
Gerade im Event-Log gehabt:
2023-11-05 23:58:27 DOIF di_counter_new HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour: 0.509
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_01 energyIEC: 2681055
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_01 powerIEC: 66000
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_01 energyIEC_kWh: 268.11
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_02 energyIEC: 14964234
Hieran sieht man, dass das Reading
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_02 energyIEC: 14964234
im Device aktualisiert wurde, damit auch das User-Reading
HWR_Stromzaehler_IEC_02 energyIEC_kWh
Aber im Doif wird nur
HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour
aktualisiert, warum?
P.S.: paar Minuten später kam das, offenbar timergesteuert:
2023-11-06 00:00:00 DOIF di_counter_new HWR_Stromzaehler_IEC_01.energyIEC_kWh.last_hour: 0.509
2023-11-06 00:00:00 DOIF di_counter_new HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour: 0
2023-11-06 00:00:00 DOIF di_counter_new HWR_Stromzaehler_IEC_01.energyIEC_kWh.day: 20.22
2023-11-06 00:00:00 DOIF di_counter_new HWR_Stromzaehler_IEC_02.energyIEC_kWh.last_hour: 0
2023-11-06 00:00:00 DOIF di_counter_new HWR_Stromzaehler_IEC_02.energyIEC_kWh.hour: 0
2023-11-06 00:00:00 DOIF di_counter_new HWR_Stromzaehler_IEC_02.energyIEC_kWh.day: 3.4
Zitat von: tndx am 06 November 2023, 00:06:59Gerade im Event-Log gehabt:
2023-11-05 23:58:27 DOIF di_counter_new HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour: 0.509
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_01 energyIEC: 2681055
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_01 powerIEC: 66000
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_01 energyIEC_kWh: 268.11
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_02 energyIEC: 14964234
Hieran sieht man, dass das Reading
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_02 energyIEC: 14964234
im Device aktualisiert wurde, damit auch das User-Reading
HWR_Stromzaehler_IEC_02 energyIEC_kWh
Aber im Doif wird nur
HWR_Stromzaehler_IEC_01.energyIEC_kWh.hour
aktualisiert, warum?
Mit
2023-11-05 23:58:27 CUL_HM HWR_Stromzaehler_IEC_02 energyIEC: 14964234
wurde nicht
HWR_Stromzaehler_IEC_02 energyIEC_kWh aktualisiert, sondern
HWR_Stromzaehler_IEC_02 energyIEC vom User-Reading sehe ich kein Event ;)
Dann kommen wir wohl dem Problem schon näher, aber noch kann ich nicht erkennen, warum das so ist. Beides sind User-Readings, das eine generiert ein Event, das andere nicht ???
Zugegeben, bei dem ersten User-Reading wird noch ein anderes Reading mit berechnet:
<HWR_Stromzaehler_IEC_01, also Bezug>
powerIEC_kWh {if(ReadingsVal($name,"powerIEC","???") < 1000000) {sprintf("%.2f",ReadingsVal($name,"powerIEC","???")/100000)} else{ sprintf("%.2f",(ReadingsVal($name,"powerIEC","???")-4294967295)/10000)}}, energyIEC_kWh {sprintf("%.2f",ReadingsVal($name,"energyIEC","???")/10000)}
Und vom "HWR_Stromzaehler_IEC_01 powerIEC_kWh" sehe ich auch kein Event ???
Bei dem zweiten wird nur ein Reading berechnet:
<HWR_Stromzaehler_IEC_02, also Einspeisung>
energyIEC_kWh {sprintf("%.2f",ReadingsVal($name,"energyIEC","???")/10000)}
Ich verstehe nur noch Bahnhof ???
Nun sehe ich ja ein, dass das offenbar nichts mehr mit Doif zu tun hat, aber vielleicht kannst du hier trotzdem noch weiterhelfen. Zur Erklärung: ich nutze die Userreadings, um die Werte in Kilowattstunden umzurechnen. Sicher kann ich das auch irgendwo im Doif machen, aber so sollte das ja auch funktionieren.
Um etwas überprüfen zu können, musst du schon die ganze Definition inklusive der User-Reading posten, am besten als Ausgabe von list. User-Readings gehören zu FHEM, also am besten das Problem im Automatisierungsboard posten.
die liste der userreadings soll komma getrennt sein.
deine liste wird durch komma plus leerzeichen getrennt.
in fhem.log gibt es keine meldungen?
powerIEC_kWh {if(ReadingsVal($name,"powerIEC","???") < 1000000) {sprintf("%.2f",ReadingsVal($name,"powerIEC","???")/100000)} else{ sprintf("%.2f",(ReadingsVal($name,"powerIEC","???")-4294967295)/10000)}}, energyIEC_kWh {sprintf("%.2f",ReadingsVal($name,"energyIEC","???")/10000)}
Komma plus Leerzeichen sollte wohl kein Problem sein, denn die Readings werden ja aktualisert. Trotzdem werde ich das auch noch bereinigen.
Aber ich denke, ich habe das Problem gefunden, es lag an den "event-on-change" Attributen in den Quell-Devices. Die waren zwar bei beiden gleich falsch, und trotzden hat das bei einem funktioniert, aber da gibt es noch andere Unterschiede. Nachdem ich die Readings explizit bei "event-on-change" aufgenommen habe, und "event-on-update" ganz entfernt habe, scheint es zu funktionieren, sowohl mit den Events als auch mit dem Doif.
Danke für eure Unterstützung!