OldReadingsVal auch bei Nicht-Änderung setzen

Begonnen von teichtaucher, 07 Oktober 2024, 10:59:56

Vorheriges Thema - Nächstes Thema

teichtaucher

Hallo,
ich lese meine Stromdaten über den Stromzähler mittels Tasmota aus. Ich habe ein eigenes Reading angelegt, um bei neuen Werten die gemittelte Gesamtleistung zu ermitteln.

attr MQTT2_DVES_B5AEEF userReadings P_Avg {((ReadingsVal("MQTT2_DVES_B5AEEF","SM_1_8_0","0")
-OldReadingsVal("MQTT2_DVES_B5AEEF","SM_1_8_0",ReadingsVal("MQTT2_DVES_B5AEEF","SM_1_8_0","0"))
-ReadingsVal("MQTT2_DVES_B5AEEF","SM_2_8_0","0")
+OldReadingsVal("MQTT2_DVES_B5AEEF","SM_2_8_0",ReadingsVal("MQTT2_DVES_B5AEEF","SM_2_8_0","0")))*12)}

Das Ganze läuft auch gut, aber teilweise sehe ich große Sprünge und Verschiebungen in P_Avg. Deshalb habe ich heute mal geschaut, wo das Problem liegen könnte. Teilweise liefert OldReadingsVal("MQTT2_DVES_B5AEEF","SM_2_8_0";0) alte Werte zurück, und ändert sich nicht auf den aktuellen Wert von SM_2_8_0 (SM_2_8_0 liefert die Einspeisung zurück).
Ich habe jetzt schon rumprobiert und

SM_2_8_0 auf onUpdateReading gesetzt, um ein Event zu generieren. Trotzdem wird der aktuelle Wert nicht bei OldReadings übernommen. Woran kann das liegen?

Gisbert

Hallo teichtaucher,

bist du sicher, dass du damit die Gesamtleistung mittelst oder doch so was wie Gesamtenergie? So ganz habe ich deine Definition nicht verstanden.

Es gibt Module wie statistics oder ElectricityCalculator, die dir die Arbeit abnehmen. Vielleicht wirst du dort fündig.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

betateilchen

Mein Bauchgefühl sagt mir, dass in MQTT2_DVES_B5AEEF irgendwelche sinnfreien event-on-irgendwas Attribute gesetzt sind, die eine ordnungsgemäße Aktualisierung aller readings verhindern.

Aber da man uns das komplette list des devices MQTT2_DVES_B5AEEF vorenthält, ist das natürlich nichts weiter als eine Vermutung.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

teichtaucher

Hier ein List von MQTT2_DVES_B5AEEF

Internals:
   CID        DVES_B5AEEF
   DEF        DVES_B5AEEF
   FUUID      641b54ca-f33f-2bd4-6213-b7030d0e1bb166ef
   IODev      gl.gw.mqttBroker
   LASTInputDev gl.gw.mqttBroker
   MSGCNT     21458
   NAME       MQTT2_DVES_B5AEEF
   NR         315
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 17433
   gl.gw.mqttBroker_CONN gl.gw.mqttBroker_192.168.178.52_56535
   gl.gw.mqttBroker_MSGCNT 21458
   gl.gw.mqttBroker_TIME 2024-10-07 14:34:46
   OLDREADINGS:
     2024-10-07 13:47:50   SM_1_8_0        6843463.68603000
     2024-10-07 12:52:50   SM_2_8_0        1272215.98067000
   READINGS:
     2024-09-19 17:54:32   Command         Error
     2024-10-07 14:32:50   Heap            17
     2024-10-06 09:44:12   IODev           gl.gw.mqttBroker
     2024-09-19 19:25:08   Info1_FallbackTopic cmnd/DVES_B5AEEF_fb/
     2024-09-19 19:25:08   Info1_GroupTopic cmnd/tasmotas/
     2024-09-19 19:25:08   Info1_Module    Generic
     2024-09-19 19:25:08   Info1_Version   14.2.0(tasmota)
     2024-09-19 19:25:08   Info2_Hostname  tasmota-B5AEEF-3823
     2024-09-19 19:25:08   Info2_IPAddress 192.168.178.52
     2024-09-19 19:25:08   Info2_WebServerMode Admin
     2024-09-19 19:25:08   Info3_BootCount 6
     2024-09-19 19:25:08   Info3_RestartReason Software/System restart
     2024-10-06 09:44:37   LWT             Online
     2024-10-07 14:32:50   LoadAvg         19
     2024-10-07 14:32:50   MqttCount       5
     2024-10-06 09:44:37   POWER           
     2024-10-07 14:34:46   P_Avg           1603.80875999015
     2024-09-20 10:12:11   SML_CMD         restart
     2024-10-07 14:32:50   SM_16_7_0       245.83
     2024-10-07 14:32:50   SM_1_8_0        6843599.41575000
     2024-10-07 14:32:50   SM_1_8_1        0.00000000
     2024-10-07 14:32:50   SM_1_8_2        0.00000000
     2024-10-07 14:32:50   SM_2_8_0        1272218.05966000
     2024-10-07 14:32:50   SM_32_7_0       239.3
     2024-10-07 14:32:50   SM_36_7_0       38.17
     2024-10-07 14:32:50   SM_52_7_0       238.5
     2024-10-07 14:32:50   SM_56_7_0       100.01
     2024-10-07 14:32:50   SM_72_7_0       239.1
     2024-10-07 14:32:50   SM_76_7_0       107.65
     2024-10-07 14:32:50   SM_96_1_0       1EBZ0101616191
     2024-10-07 14:32:50   Sleep           50
     2024-10-07 14:32:50   SleepMode       Dynamic
     2024-10-06 09:44:37   Subscribe       pvleistung,inverter/total/P_AC/#
     2024-10-07 14:32:50   Time            2024-10-07T13:32:49
     2024-10-07 14:32:50   Uptime          17T19:07:46
     2024-10-07 14:32:50   UptimeSec       1537666
     2024-09-19 19:18:07   Vcc             3.065
     2024-10-07 14:34:46   WebSend         Done
     2024-10-07 14:32:50   Wifi_AP         1
     2024-10-07 14:32:50   Wifi_BSSId      7C:FF:4D:2B:42:27
     2024-10-07 14:32:50   Wifi_Channel    1
     2024-10-07 14:32:50   Wifi_Downtime   0T00:00:03
     2024-10-07 14:32:50   Wifi_LinkCount  1
     2024-10-07 14:32:50   Wifi_Mode       11n
     2024-10-07 14:32:50   Wifi_RSSI       80
     2024-10-07 14:32:50   Wifi_SSId       FetzNetz
     2024-10-07 14:32:50   Wifi_Signal     -60
     2024-10-06 09:44:37   bat             0
     2024-10-06 09:44:37   btn_1           0
     2024-10-06 09:44:37   btn_10          0
     2024-10-06 09:44:37   btn_11          0
     2024-10-06 09:44:37   btn_12          0
     2024-10-06 09:44:37   btn_13          0
     2024-10-06 09:44:37   btn_14          0
     2024-10-06 09:44:37   btn_15          0
     2024-10-06 09:44:37   btn_16          0
     2024-10-06 09:44:37   btn_17          0
     2024-10-06 09:44:37   btn_18          0
     2024-10-06 09:44:37   btn_19          0
     2024-10-06 09:44:37   btn_2           0
     2024-10-06 09:44:37   btn_20          0
     2024-10-06 09:44:37   btn_21          0
     2024-10-06 09:44:37   btn_22          0
     2024-10-06 09:44:37   btn_23          0
     2024-10-06 09:44:37   btn_24          0
     2024-10-06 09:44:37   btn_25          0
     2024-10-06 09:44:37   btn_26          0
     2024-10-06 09:44:37   btn_27          0
     2024-10-06 09:44:37   btn_28          0
     2024-10-06 09:44:37   btn_29          0
     2024-10-06 09:44:37   btn_3           0
     2024-10-06 09:44:37   btn_30          0
     2024-10-06 09:44:37   btn_31          0
     2024-10-06 09:44:37   btn_32          0
     2024-10-06 09:44:37   btn_4           0
     2024-10-06 09:44:37   btn_5           0
     2024-10-06 09:44:37   btn_6           0
     2024-10-06 09:44:37   btn_7           0
     2024-10-06 09:44:37   btn_8           0
     2024-10-06 09:44:37   btn_9           0
     2024-10-06 09:44:37   dn              TM_SmartMeter
     2024-10-06 09:44:37   dslp            0
     2024-10-06 09:44:37   fn_1            Tasmota
     2024-10-06 09:44:37   ft              %prefix%/%topic%/
     2024-10-06 09:44:37   hn              tasmota-B5AEEF-3823
     2024-10-06 09:44:37   if              0
     2024-10-06 09:44:37   ip              192.168.178.52
     2024-10-06 09:44:37   lk              0
     2024-10-06 09:44:37   lt_st           0
     2024-10-06 09:44:37   mac             7C87CEB5AEEF
     2024-10-06 09:44:37   md              Generic
     2024-10-06 09:44:37   ofln            Offline
     2024-10-06 09:44:37   onln            Online
     2024-10-06 09:44:37   rl_1            0
     2024-10-06 09:44:37   rl_10           0
     2024-10-06 09:44:37   rl_11           0
     2024-10-06 09:44:37   rl_12           0
     2024-10-06 09:44:37   rl_13           0
     2024-10-06 09:44:37   rl_14           0
     2024-10-06 09:44:37   rl_15           0
     2024-10-06 09:44:37   rl_16           0
     2024-10-06 09:44:37   rl_17           0
     2024-10-06 09:44:37   rl_18           0
     2024-10-06 09:44:37   rl_19           0
     2024-10-06 09:44:37   rl_2            0
     2024-10-06 09:44:37   rl_20           0
     2024-10-06 09:44:37   rl_21           0
     2024-10-06 09:44:37   rl_22           0
     2024-10-06 09:44:37   rl_23           0
     2024-10-06 09:44:37   rl_24           0
     2024-10-06 09:44:37   rl_25           0
     2024-10-06 09:44:37   rl_26           0
     2024-10-06 09:44:37   rl_27           0
     2024-10-06 09:44:37   rl_28           0
     2024-10-06 09:44:37   rl_29           0
     2024-10-06 09:44:37   rl_3            0
     2024-10-06 09:44:37   rl_30           0
     2024-10-06 09:44:37   rl_31           0
     2024-10-06 09:44:37   rl_32           0
     2024-10-06 09:44:37   rl_4            0
     2024-10-06 09:44:37   rl_5            0
     2024-10-06 09:44:37   rl_6            0
     2024-10-06 09:44:37   rl_7            0
     2024-10-06 09:44:37   rl_8            0
     2024-10-06 09:44:37   rl_9            0
     2024-09-19 17:54:41   sho_1           0
     2024-09-19 17:54:41   sho_2           0
     2024-09-19 17:54:41   sho_3           0
     2024-09-19 17:54:41   sho_4           0
     2024-09-19 17:54:41   sht_1_1         0
     2024-09-19 17:54:41   sht_1_2         0
     2024-09-19 17:54:41   sht_1_3         0
     2024-09-19 17:54:41   sht_2_1         0
     2024-09-19 17:54:41   sht_2_2         0
     2024-09-19 17:54:41   sht_2_3         0
     2024-09-19 17:54:41   sht_3_1         0
     2024-09-19 17:54:41   sht_3_2         0
     2024-09-19 17:54:41   sht_3_3         0
     2024-09-19 17:54:41   sht_4_1         0
     2024-09-19 17:54:41   sht_4_2         0
     2024-09-19 17:54:41   sht_4_3         0
     2024-10-06 09:44:37   sn_SM_16_7_0    0.00
     2024-10-06 09:44:37   sn_SM_1_8_0     0.00000000
     2024-10-06 09:44:37   sn_SM_1_8_1     0.00000000
     2024-10-06 09:44:37   sn_SM_1_8_2     0.00000000
     2024-10-06 09:44:37   sn_SM_2_8_0     0.00000000
     2024-10-06 09:44:37   sn_SM_32_7_0    0.0
     2024-10-06 09:44:37   sn_SM_36_7_0    0.00
     2024-10-06 09:44:37   sn_SM_52_7_0    0.0
     2024-10-06 09:44:37   sn_SM_56_7_0    0.00
     2024-10-06 09:44:37   sn_SM_72_7_0    0.0
     2024-10-06 09:44:37   sn_SM_76_7_0    0.00
     2024-10-06 09:44:37   sn_SM_96_1_0    ␅
161619

     2024-10-06 09:44:37   sn_Time         2024-10-06T08:44:36
     2024-10-06 09:44:37   so_11           0
     2024-10-06 09:44:37   so_114          0
     2024-10-06 09:44:37   so_117          0
     2024-10-06 09:44:37   so_13           0
     2024-10-06 09:44:37   so_17           0
     2024-10-06 09:44:37   so_20           0
     2024-10-06 09:44:37   so_30           0
     2024-10-06 09:44:37   so_4            0
     2024-10-06 09:44:37   so_68           0
     2024-10-06 09:44:37   so_73           0
     2024-10-06 09:44:37   so_82           0
     2024-10-06 09:44:37   state_1         OFF
     2024-10-06 09:44:37   state_2         ON
     2024-10-06 09:44:37   state_3         TOGGLE
     2024-10-06 09:44:37   state_4         HOLD
     2024-10-06 09:45:11   subscriptions   cmnd/DVES_B5AEEF_fb/# cmnd/tasmota_B5AEEF/# cmnd/tasmotas/# inverter/total/P_AC/#
     2024-10-06 09:44:37   sw              14.2.0
     2024-10-06 09:44:37   swc_1           -1
     2024-10-06 09:44:37   swc_10          -1
     2024-10-06 09:44:37   swc_11          -1
     2024-10-06 09:44:37   swc_12          -1
     2024-10-06 09:44:37   swc_13          -1
     2024-10-06 09:44:37   swc_14          -1
     2024-10-06 09:44:37   swc_15          -1
     2024-10-06 09:44:37   swc_16          -1
     2024-10-06 09:44:37   swc_17          -1
     2024-10-06 09:44:37   swc_18          -1
     2024-10-06 09:44:37   swc_19          -1
     2024-10-06 09:44:37   swc_2           -1
     2024-10-06 09:44:37   swc_20          -1
     2024-10-06 09:44:37   swc_21          -1
     2024-10-06 09:44:37   swc_22          -1
     2024-10-06 09:44:37   swc_23          -1
     2024-10-06 09:44:37   swc_24          -1
     2024-10-06 09:44:37   swc_25          -1
     2024-10-06 09:44:37   swc_26          -1
     2024-10-06 09:44:37   swc_27          -1
     2024-10-06 09:44:37   swc_28          -1
     2024-10-06 09:44:37   swc_3           -1
     2024-10-06 09:44:37   swc_4           -1
     2024-10-06 09:44:37   swc_5           -1
     2024-10-06 09:44:37   swc_6           -1
     2024-10-06 09:44:37   swc_7           -1
     2024-10-06 09:44:37   swc_8           -1
     2024-10-06 09:44:37   swc_9           -1
     2024-10-06 09:44:37   t               tasmota_B5AEEF
     2024-10-06 09:44:37   tp_1            cmnd
     2024-10-06 09:44:37   tp_2            stat
     2024-10-06 09:44:37   tp_3            tele
     2024-10-06 09:44:37   ty              0
     2024-10-06 09:44:37   ver             1
Attributes:
   event-on-change-reading .*
   event-on-update-reading SM_2_8_0
   oldreadings SM_1_8_0,SM_2_8_0
   readingList DVES_B5AEEF:tele/tasmota_B5AEEF/LWT:.* LWT
DVES_B5AEEF:cmnd/tasmota_B5AEEF/POWER:.* POWER
DVES_B5AEEF:tele/tasmota_B5AEEF/INFO1:.* { json2nameValue($EVENT) }
DVES_B5AEEF:tele/tasmota_B5AEEF/INFO2:.* { json2nameValue($EVENT) }
DVES_B5AEEF:tele/tasmota_B5AEEF/INFO3:.* { json2nameValue($EVENT) }
DVES_B5AEEF:tele/tasmota_B5AEEF/SENSOR:.* { json2nameValue($EVENT) }
DVES_B5AEEF:tele/tasmota_B5AEEF/STATE:.* { json2nameValue($EVENT) }
DVES_B5AEEF:tasmota/discovery/7C87CEB5AEEF/config:.* { json2nameValue($EVENT) }
DVES_B5AEEF:tasmota/discovery/7C87CEB5AEEF/sensors:.* { json2nameValue($EVENT) }
DVES_B5AEEF:stat/tasmota_B5AEEF/RESULT:.* { json2nameValue($EVENT) }
   room       Global,Keller,MQTT2_DEVICE
   userReadings P_Avg {((ReadingsVal("MQTT2_DVES_B5AEEF","SM_1_8_0","0")
-OldReadingsVal("MQTT2_DVES_B5AEEF","SM_1_8_0",ReadingsVal("MQTT2_DVES_B5AEEF","SM_1_8_0","0"))
-ReadingsVal("MQTT2_DVES_B5AEEF","SM_2_8_0","0")
+OldReadingsVal("MQTT2_DVES_B5AEEF","SM_2_8_0",ReadingsVal("MQTT2_DVES_B5AEEF","SM_2_8_0","0")))*12)}

Die beiden event-on-change-reading und event-on-update-reading habe ich erst eingeführt nachdem es nicht mehr zuverlässig lief.

betateilchen

Zitat von: teichtaucher am 07 Oktober 2024, 14:36:49Die beiden event-on-change-reading und event-on-update-reading habe ich erst eingeführt nachdem es nicht mehr zuverlässig lief.

Dir ist hoffentlich klar, dass die beiden Attribute dafür gedacht sind, events zu reduzieren, nicht dafür, um welche zu erzeugen? Meine Empfehlung: weglassen, solange man nicht verstanden hat, wie diese Attribute wirken.

Ergänze mal testweise im Attribut oldreadings das Schlüsselwort "oldreadingsAlways" am Ende.

attr MQTT2_DVES_B5AEEF oldreadings SM_1_8_0,SM_2_8_0 oldreadingsAlways
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

teichtaucher

ZitatDir ist hoffentlich klar, dass die beiden Attribute dafür gedacht sind, events zu reduzieren, nicht dafür, um welche zu erzeugen? Meine Empfehlung: weglassen, solange man nicht verstanden hat, wie diese Attribute wirken.
Mir ist schon klar, wie das funktioniert. Ich habe auf dem Tasmota (was den Smartmeter ausliest) noch ein skript laufen, was Daten an die Wallbox schickt. Deshalb wird WebSend die ganze Zeit aktualisiert. Deshalb wird auch P_Avg mit aktualisiert. Ich dachte erst, das hätte was damit zu tun.

ZitatErgänze mal testweise im Attribut oldreadings das Schlüsselwort "oldreadingsAlways" am Ende.
Werde ich mal testen. Ich berichte, wenn es geklappt hat.

teichtaucher

Geht immer noch nicht. Ich habe gerade mal den Wert für 2_8_0 vor dem Update aufgeschrieben: 1272332.58109000. OldReadingsVal von 2_8_0 vor und nach dem Update ist immer noch 1272331.40441000.
Für mich sieht es so aus als ob FHEM irgendwann mal die Änderung nicht mitbekommen hat und denkt jetzt dass der aktuelle Wert = OldReadingsValue ist. Seltsamerweise bringt da auch oldreadingsAlways keine Änderung.
Wenn ich Shutdown Restart mache, läuft es wieder. Aber irgendwann hängt es dann wieder.
Könnte das auch ein Bug sein? Ich überlege schon ob ich nicht einfach ein neues Reading spendiere, um den alten Wert kontrolliert zwischenzuspeichern.

teichtaucher

OK, es scheint jetzt zu laufen. Hier die Lösung für die Nachwelt: Nach Blicks ins Commandref muss bei oldReadings das oldreadingsAlways mit Komma getrennt ans Ende. So sieht es also aus:

attr MQTT2_DVES_B5AEEF oldReadings SM_1_8_0,SM_2_8_0,oldreadingsAlways

Und jetzt wird auch immer der OldValue übernommen. Ich werde das Verhalten beobachten. Falls es noch Unstimmigkeiten gibt, schreibe ich nochmal.