Ich habe mal eine sehr grundlegende, und vermutlich einfache Frage, da ich in diversen Anleitungen im Netz immer wieder beides finde.
Was ist eigentlich der Unterschied zwischen set und setreading?
Mit set verändert man ja nur den state -richtig?
Mit setreading kann man auch weitere Readings ändern.
Was ist jetzt jedoch besser, (etwa in diesem Beispiel - beides geht): fhem("setreading Licht state $EVENT ;; setreading Licht power $EVENT")\
Entschuldigt, wenn die Frage zu simpel ist, doch das hab ich mich schon mehrfach gefragt und noch keine wirkliche Antwort gefunden - etwa was bevorzugt wird.
Das ist in der Befehlsreferenz sehr schön beschrieben: http://fhem.de/commandref_DE.html einfach auf die Begriffe klicken ;)
Mit "set" teilt man dem gesamten Device mit, etwas zu tun. Da können intern noch sehr viel andere Dinge passieren, die zum ordnungsgemäßen Betrieb des Gerätes notwendig sin.
Mit setreading wird ein beliebiger Wert in einem reading des devices gefüllt. Für mich ist setreading ein Kommanda, das eigentlich gar nicht für den Einsatz durch den Benutzer vorgesehen ist und für mich auch völlig kontraproduktiv ist, wenn man sich einmal vor Augen führt, was ein reading eigentlich ist: Es ist ein Zustand eines devices, der vom device selbst festgestellt und dokumentiert wurde.
"set" ist also ein Befehl an das device, etwas zu tun tun, wofür das device vorgesehen ist.
Beispiel: "set licht on" teilt dem device "licht" mit, alles zu tun, was notwendig ist, das Licht anzuschalten.
Mit "setreading licht state on" schreibst Du zwar "on" in den Status des device, das heißt aber noch lange nicht, dass die Lampe wirklich brennt. Denn das device selbst bekommt von einem "setreading" überhaupt nichts mit, damit wird lediglich von fhem selbst eine Variable mit einem anderen (möglicherweise völlig sinnlosen) Wert gefüllt.
Danke, das war eine sehr schöne Veranschaulichung und hat mir sehr weiter geholfen.
In der Regel arbeite ich mit set - nur bei Dummys manchmal mit setreading.
Es gibt eigentlich auch bei dummys keinen Grund, mit setreading zu arbeiten.
Zumindest nicht, wenn man die commandref Dokumentation zu dummy gelesen und verstanden hat.