Readings werden nach Neustart mit at nicht aktualisiert

Begonnen von dmq, 30 Juni 2021, 19:34:50

Vorheriges Thema - Nächstes Thema

dmq

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

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

dmq

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.