Hallo,
ich habe eine Situation nach Neustarts (unplanmäßig, planmäßig) die ich mir momentan nicht erklären kann.
Ich setze fhem FL 6 im docker Image, Ver. 6.0-s22528_v2.2.4 ein.
Den StateFile setze ich alle 30 Minuten mit: +*00:30:00 {WriteStatefile}.
Bei einem Neustart, (Server inkl. Docker, OS etc.) kommt es vor, dass ein paar Readings, die ich per at bspw. im Tageswechsel schreibe, nicht aktualisiert werden. Das bringt bei mir viele Statistiken durcheinander.
Ein Beispiel:
das device at_em24_energy_export_yesterday_totalkwh (bzw. das darin zu aktualisierende userReading) wurde innerhalb von fhem unter Attributes, userReadings nicht mehr aktualisiert. Kalkulationen etc. die darauf zugriffen haben dann immer mit einem alten Wert gerechnet.
(u.a. nur ein Beispiel - dieses Reading hatte ich zwischenzeitlich auch bereits wieder manuell, als auch per at getriggert).
Internals:
COMMAND { fhem("setreading mqtt2_victron Energy_EM24_export_yesterday_totalkwh [mqtt2_victron:AC-Energy-Reverse]") }
DEF *23:53:37 { fhem("setreading mqtt2_victron Energy_EM24_export_yesterday_totalkwh [mqtt2_victron:AC-Energy-Reverse]") }
FUUID 60b38ca4-f33f-df05-66c3-57d46d2de43bce83
NAME at_em24_energy_export_yesterday_totalkwh
NR 253
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 23:53:37
TIMESPEC 23:53:37
TRIGGERTIME 1625090017
TRIGGERTIME_FMT 2021-06-30 23:53:37
TYPE at
READINGS:
2021-06-29 23:53:37 state Next: 23:53:37
Interessanterweise wird ein fileLog jedoch geschrieben:
Internals:
DEF ./log/em24_energy_import_yesterday_totalkwh-%Y-%m.log mqtt2_victron:Energy_EM24_import_yesterday_totalkwh:.*
FD 92
FUUID 60b38dd0-f33f-df05-e6f7-4fa6325ec6ec49dc
NAME filelog_em24_energy_import_yesterday_totalkwh
NOTIFYDEV mqtt2_victron
NR 256
NTFY_ORDER 50-filelog_em24_energy_import_yesterday_totalkwh
REGEXP mqtt2_victron:Energy_EM24_import_yesterday_totalkwh:.*
STATE active
TYPE FileLog
currentlogfile ./log/em24_energy_import_yesterday_totalkwh-2021-06.log
logfile ./log/em24_energy_import_yesterday_totalkwh-%Y-%m.log
READINGS:
2021-06-29 23:59:37 linesInTheFile 27
Auf der Basis des fileLogs kann ich natürlich wieder alles manuell "gerade ziehen" - aber ich will natürlich nicht manuell eingreifen. Wenn ich die Werte dann manuell in der Konsole mit "setreading" setze, funktioniert es im Anschluss auch wieder automatisch.
Das entsprechende device mqtt2_victron ist mit "event-on-update-reading .*" eingestellt.
Kann sich das jemand erklären? Ich hoffe das klingt nicht zu wirr :)
Danke vorab,
dmq
Edit: Anpassung Subject, Anpassung Inhalt -> userReading zu Reading
Hi,
doch es klingt wirr:
ich sehe keine userReadings - redest Du von dem Attribute oder von deinem setreading Befehl?
ZitatuserReadings
Komma getrennte Liste von benutzerdefinierten Readings. Jede Definition hat folgendes Format:
<reading>[:<trigger>] [<modifier>] { <perl code> }
Der Umweg nach Perl ist unnütz, das geht im at auch mit FHEM Befehlen direkt:
setreading mqtt2_victron Energy_EM24_export_yesterday_totalkwh [mqtt2_victron:AC-Energy-Reverse]
Du meinst Dein at wird nach einem Neustart von FHEM nicht ausgeführt obwohl laut FileLog das Reading geschrieben wurde?
Gruß Otto
Danke Otto.
Habe ich mir doch gedacht, dass es wirr klingt :)
Zitat von: Otto123 am 30 Juni 2021, 20:00:30
ich sehe keine userReadings - redest Du von dem Attribute oder von deinem setreading Befehl?
Ich rede von meinem setreading-Befehl.
Zitat von: Otto123 am 30 Juni 2021, 20:00:30
Du meinst Dein at wird nach einem Neustart von FHEM nicht ausgeführt obwohl laut FileLog das Reading geschrieben wurde?
userReading war nicht korrekt - es ist ein reading, welches ich (user) setze, aber kein userReading. Ich versuche es im Subject noch mal anzupassen.
Ja, richtig und auch viel kürzer und klarer ausgedrückt :) Andererseits muss es ja ausgeführt werden, da ja der FileLog geschrieben wird. Das Reading wird aber innerhalb des Devices nicht aktualisiert und bleibt auf dem Stand vom Vortag.
Danke auch für den Hinweis mit dem perl-Umweg. Ist dann unnötig kompliziert.