Raw definition - setstate für readings?

Begonnen von fichtennadel, 26 August 2023, 16:23:05

Vorheriges Thema - Nächstes Thema

fichtennadel

Warum wird in die Raw definition für readings ein setstate genereriert?

Wenn ich den Wert im setstate dann ändere und ausführe, bewirkt das nichts, erst wenn ich aus dem setstate ein setreading mache.

Ein Beispiel:
define testSetStateSetReading dummy
#   CFGFN     
#   DEF       
#   FUUID      64ea0739-f33f-9021-d03a-f74d00e95c646a6d
#   NAME       testSetStateSetReading
#   NR         7842
#   STATE      ???
#   TYPE       dummy
#   eventCount 1
#   READINGS:
#     2023-08-26 16:08:22   dummy           123
#
setstate testSetStateSetReading 2023-08-26 16:08:22 dummy 123

Raw Definition:
defmod testSetStateSetReading dummy
setstate testSetStateSetReading 2023-08-26 16:08:22 dummy 124

Ausführen von "setstate testSetStateSetReading 2023-08-26 16:08:22 dummy 124" ändert den Wert des Readings nicht, erst ein setreading testSetStateSetReading dummy 124

In den Backups der Statefiles war das früher (~2019) auch so mit setreading, erst später sind dort setstate.

Ist das Absicht? Sollte in der Raw Defition nicht besser ein setreading stehen?
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP) | HTTPMOD (go-e)

betateilchen

Das ist schon alle ok so, keine Sorge.

setstate wird verwendet, weil damit beim Start von FHEM der vor dem Neustart bestehende Zustand der readings inkl. deren altem Timestamp wiederhergestellt wird.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fichtennadel

Beim Start klarerweise ok, da hatte ich ohnehin keine Sorgen ;-)


Aber in der Raw Definition ist es schon überraschend, wenn "Execute commands" wirkungslos ist, weil dort ein setstate statt setreading ist.
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP) | HTTPMOD (go-e)

betateilchen

Es ist nicht überraschend. Die raw definition ist exakt das, was bei einem "save config" abgespeichert würde.

Das setstate funktioniert sehr wohl. Du kannst das sehr einfach testen: kopiere die gesamte raw definition, lösche danach das device und führe dann die raw definition neu aus.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fichtennadel

Rein interessehalber: was spricht denn dagegen, in der Raw Definition setreading zu verwenden?
RasPi 2 B | JeeLink Classic [4x 30.3144it, 2x 30.3147it] | CUL 433 a-culfw V 1.04.01 [ IT-1500, ITM-100, Somfy Telis 1 RTS, BelFox ] | TCM ESP3 [ FSB61, FSB61NP, FT55, FMH4S, AP221 ] | Fronius | Modbus/TCP (Stiebel Eltron WP) | HTTPMOD (go-e)

Icinger

Setreading generiert ein Event, setstate tut dies nicht.
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

herrmannj

Zitat von: fichtennadel am 26 August 2023, 22:55:08Rein interessehalber: was spricht denn dagegen, in der Raw Definition setreading zu verwenden?
setreading und setstate sind in der cmdref dokumentiert.