Keine Ahnung ob sich irgendwann in FHEm was geändert hat.
Ich verwende FS20 Funkmodule und um die Funklimits einzuhalten prüfe ich immer vorher den Status ab um ein unnötigen Schaltbefehl zu vermeiden.
Mein Device hat nach der Definition ein Internal "STATE" und ein userreading "state".
Verwende ich set device on/off so ist alles OK und STATE und state werden in sync gehalten. Verwende ich allerdings
setstate device on/off so wird lediglich STATE gesetzt und der sync auf state wird nicht gemacht.
Dies ist mir unerklärlich und auch nicht so dokumentiert bei setstate. Fehler ?
Da ich um den Status zu ermitteln ein ReadingsVal( dev, "state", default ) ist dies so nicht lustig . Müsste wohl dann Value( device) nehmen
Aber erst wäre es gut zu wissen ob dies nicht ein Fehler bei setstate ist .
setstate wirft kein Event. Das sollte so eigentlich nie geklappt haben.
HAbe ich was von Event gesagt ? Es geht um STATE und userreading state sync
Hi,
ist auch gut dokumentiert:
Zitatsetstate
[EN DE]
setstate <devspec> <value>
Set the STATE entry for the device specified by <devspec>, which is used for displaying the device state in different frontends. No signals will be sent to the device, no events will be generated, and no eventMap or stateFormat translation will be done either. This command is also used in the statefile. See the Device specification section for details on <devspec>.
Examples:
setstate lamp on
Es gibt keinen "sync" von STATE zu state. Dieses "sync" ist per default andersrum und auch gut dokumentiert:
ZitatstateFormat
Modifies the STATE of the device, shown by the list command or in the room overview in FHEMWEB. If not set, its value is taken from the state reading. If set, then every word in the argument is replaced by the value of the reading if such a reading for the current device exists. If the value of this attribute is enclused in {}, then it is evaluated. This attribute is evaluated each time a reading is updated.
The "set magic" described here is also applied.
Hat sich mit ziemlicher Sicherheit die letzten 4 Jahre nicht geändert :)
Gruß Otto
userReadings braucht ein Event vom Device sonst passiert gar nix. Und setstate gibt kein Event.
wie so oft wäre ein list vom Device etwas gegen weiteres Rätseln :)
da geht gerade einiges durcheinander.
STATE wird nicht gesetzt bzw. sollte nicht von einem modul gesetzt werden.
state ist normalerweise kein user reading
der sync erfolgt von state zu STATE und kann mit stateFormat beeinflusst werden
setstate sollte von keinem anweder verwendet werden. es setz nur ein reading und löst kein kommando aus.
wenn du vor dem schalten prüfen möchtest ist das meist am einfachstem mit FILTER. z.b.: set <name>:FILTER=state!=on on oder set <name>:FILTER=state=on off
Ich wollte nicht fragen. Es gibt immer noch einige Module die state als Reading nicht setzen. Ging davon aus das es bei FS20 auch so ist da es so klang als gebe es da kein state Reading beim Fragenden.