Hallo zusammen,
für meine "Bewohner" (Modul Roommate) soll jeweils ein Reading "WurdeBegruesst" hinzugefügt werden. Dieses Reading soll ausschließlich manuell (über ein doif/notify) gesetzt werden und besitzt erst mal keine Abhängigkeiten zu anderen readings.
Nur wie definiere ich das jetzt? Im Forum findet man nur Beispiele, in denen das userReading berechnet wird.
Ich habe es mal mit
WurdeBegruesst {}
und
WurdeBegruesst {return 0}
anhand eines dummys probiert. leider lässt sich das reading anschließend nicht setzen:
set dummy_test WurdeBegruesst 1
resultiert in "state WurdeBegruesst 1"
Bin ich gerade auf dem völlig falschen Weg? Oder fehlt mir hier lediglich etwas an der Syntax?
userReadings sind dafür da damit sie anhand eines Events des eigenen Devices getriggert und dann gesetzt werden.
Willst Du von extern (notify/DOIF) ein Readings setzten dann ist das kein userReading.
Von extern kannst Du z.B. mit:
setreading dummy_test WurdeBegruesst 1
ein Reading setzen.
Gruß
Dan
Hier mal ein Beispiel eines meiner Dummy's deren Readings ausschließlich von Extern (aus einer Perl funktion) gesetzt werden
Reading setzen beispielsweise mit
set stadtweg.tk.eg.eingang Battery low
state setzen mit
set stadtweg.tk.eg.eingang open
defmod stadtweg.tk.eg.eingang dummy
attr stadtweg.tk.eg.eingang userattr airaddress
attr stadtweg.tk.eg.eingang airaddress 5E1A
attr stadtweg.tk.eg.eingang devStateIcon .*closed:10px-kreis-gruen .*open:10px-kreis-rot
attr stadtweg.tk.eg.eingang group Türen
attr stadtweg.tk.eg.eingang readingList Battery Tamper Status unknownState
attr stadtweg.tk.eg.eingang room Türen,Control
Danke für die Hinweise! Da habe ich wohl wirklich in die falsche Richtung gedacht. Ich denke "setreading" ist in meinem Fall ein guter und vor allem einfacher Weg
Wenn Du das Attribut readinglist verwendest, sind die Readings kompatibel zum restlichen FHEM. Das setReading würde ich nur im Ausnahmefall nehmen, weil m.E. Diese Readings auch mal verschwinden können. Irgendwas war da, dass die einen Neustart nicht überleben o.ä.
Gesendet von iPhone mit Tapatalk
Zitat von: Waldmensch am 06 Dezember 2019, 15:07:46
Wenn Du das Attribut readinglist verwendest, sind die Readings kompatibel zum restlichen FHEM.
Das Attribut readingList gibt es aber nur bei dummy Geräten und (ich glaube noch) bei MQTT Geräten.
Und es nutzt auch nur etwas im Zusammenhang mit setList (bei dummy).
Warum das "mehr kompatibel" zum restlichen FHEM sein soll erschließt sich mir nicht.
Zitat von: Waldmensch am 06 Dezember 2019, 15:07:46
Das setReading würde ich nur im Ausnahmefall nehmen, weil m.E. Diese Readings auch mal verschwinden können. Irgendwas war da, dass die einen Neustart nicht überleben o.ä.
Das ist schlichtweg falsch!
Alle gesetzten Readings überleben einen Neustart, denn der letzte Zustand wird immer in der fhem.save gespeichert und nach dem Neustart wieder geladen. Es sei denn FHEM stürzt vor dem Speichern der fhem.save ab.
Der Befehl setreading ist genau der richtige (und empfohlene) FHEM-Befehl für User um Readings zu setzen, egal in welchem Device.
Gruß
Dan
Okay, wieder was gelernt. Dann sollte aber auch vor ,,set device reading wert" gewarnt werden, wenn das nicht der gewünschte Weg ist.
Gesendet von iPhone mit Tapatalk
Zitat von: Waldmensch am 06 Dezember 2019, 16:31:08
Okay, wieder was gelernt. Dann sollte aber auch vor ,,set device reading wert" gewarnt werden, wenn das nicht der gewünschte Weg ist.
Davor muss doch nicht gewarnt werden.
Wenn das Device einen entsprechenden set-Befehl anbietet oder dieser konfiguriert werden kann (dummy) ist das völlig in Ordnung.
Für alle anderen Fälle gibt es setreading.
Gruß
Dan