Ich habe ein userReading erstellt, das funktioniert wenn sich die Werte im Device verändern.
Internals:
BTN 4
DEF 1234 4
IODev CUL_0
NAME SZ_FensterL
NR 222
STATE auf
TYPE UNIRoll
XMIT 1234
CODE:
1 1234 4
READINGS:
2018-12-20 15:02:23 FensterStatus Closedup
2018-12-20 15:02:23 state up
Attributes:
IODev CUL_0
devStateIcon zu:fts_shutter_100:auf auf:fts_shutter_10:zu
eventMap up:auf down:zu
fp_Grundriss 320,720,2,
model R_23700
room Rollo
userReadings FensterStatus { ReadingsVal("Kellertuer","Window",0). ReadingsVal("SZ_FensterL","state",0)}
webCmd auf:stop:zu
Wie kann ich aber das Reading von aussen z.B. mit einem notify verändern?
Meine ganzen Versuche bringen leider keinen Erfolg.
z.B.
CFGFN
DEF Kellertuer:Window:.* {attr SZ_FensterL FensterStatus { ReadingsVal("Kellertuer","Window",0). ReadingsVal("SZ_FensterL","state",0)}}
Ein Reading veränderst du mit setreading. Der Sinn eines userReadings, das von "außen" geändert wird erschließt sich mir nicht.
Das mit setreading hatte ich auch probiert.
DEF Kellertuer:Window:.* {setreading SZ_FensterL FensterStatus { ReadingsVal("Kellertuer","Window",0). ReadingsVal("SZ_FensterL","state",0)}}
bringt:
2018.12.20 15:49:26 3: SZRolloUeberwachung return value: Can't locate object method "FensterStatus" via package "Closedup" (perhaps you forgot to load "Closedup"?) at (eval 78924) line 1.
2018.12.20 15:49:26 1: ERROR evaluating my $EVTPART1='Closed';my $TYPE='CUL_FHTTK';my $SELF='SZRolloUeberwachung';my $EVENT='Window: Closed';my $NAME='Kellertuer';my $EVTPART0='Window:';{setreading SZ_FensterL FensterStatus { ReadingsVal("Kellertuer","Window",0). ReadingsVal("SZ_FensterL","state",0)}}: Can't locate object method "FensterStatus" via package "Closedup" (perhaps you forgot to load "Closedup"?) at (eval 78924) line 1.
Zitat von: marvin78 am 20 Dezember 2018, 15:42:08
Der Sinn eines userReadings, das von "außen" geändert wird erschließt sich mir nicht.
Ich benutze FTUI und möchte mit einem Icon sehen, ob Rollos runter/rauf und Fenster zu/auf. Dafür benötige ich ein Reading, welche beide Readings vereint.
Du mußt das für die notify-Variante vorher in eine Variable packen, hinten im Ausführungsteil also:
{my $content = ReadingsVal("Kellertuer","Window",0). ReadingsVal("SZ_FensterL","state",0);; fhem "setreading SZ_FensterL FensterStatus $content" }
Das erklärt nicht warum es Sinn machen soll, das von außen zu machen. Ein notify wäre ggf. sinnvoller.
Zitat von: marvin78 am 20 Dezember 2018, 16:08:01
Das erklärt nicht warum es Sinn machen soll, das von außen zu machen. Ein notify wäre ggf. sinnvoller.
Jep, das war auch als Ausführungsteil zu einem notify gedacht (so sah das hinter dem DEF im letzten Post aus), zumal das userreading ja nur akutalisiert werden würde, wenn ein Reading des zugehörigen Devices aktualisiert wird (also ggf. gar nicht oder sehr lange nicht getriggert wird).
@Beta-User tausend Dank
@marvin78
Zitat von: Paul am 20 Dezember 2018, 15:39:12
Wie kann ich aber das Reading von aussen z.B. mit einem notify verändern?
Wird ja jetzt mit dem notify richtig beschrieben.
Danke für die Rückmeldung und das [gelöst].
Hast du jetzt für eventuelle Nachahmer noch eine komplette Definition, die du zum Abschluß posten kannst von dem einen notify, das auf Events sowohl von der Kellertuer und dem SZ_FensterL reagiert?
Zitat von: Beta-User am 20 Dezember 2018, 21:08:08
Danke für die Rückmeldung und das [gelöst].
Hast du jetzt für eventuelle Nachahmer noch eine komplette Definition, die du zum Abschluß posten kannst von dem einen notify, das auf Events sowohl von der Kellertuer und dem SZ_FensterL reagiert?
Ich habe nur notify was auf Fenster Open/CLOSED triggert. ( also statt Kellertür, war nur zum Testen, da näher am Computer :) )
DEF Fenster_Schlafzimmer:Window:.* {my $content = ReadingsVal("Fenster_Schlafzimmer","Window",0). ReadingsVal("SZ_FensterL","state",0);; fhem "setreading SZ_FensterL FensterStatus $content" }
NAME SZRolloUeberwachung
NOTIFYDEV Fenster_Schlafzimmer
NR 495
NTFY_ORDER 50-SZRolloUeberwachung
REGEXP Fenster_Schlafzimmer:Window:.*
STATE 2018-12-20 22:13:52
TRIGGERTIME 1545340432.95518
TYPE notify
Für SZ_FensterL benötige ich kein notify, da es durch das UserReading geändert wird.
Sorry, aber das halte ich nicht für optimal.
Lieber ein notify, das auf beide Fenster hört und dann das eine Reading schreibt. Nicht die Funktionen verteilen, sonst verliert man gern den Überblick, wo was herkommt ;) .
Just my2ct.
Für mich ist es die Lösung.
Das userReading hat ja bereits richtig gearbeitet. Nur triggert es nicht, wenn sich das Reading von einem "fremden Device" ändert.
Das erledigt jetzt das notify.