[gelöst]Wie kann ich ein userReading verändern?

Begonnen von Paul, 20 Dezember 2018, 15:39:12

Vorheriges Thema - Nächstes Thema

Paul

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)}}

Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

marvin78

Ein Reading veränderst du mit setreading. Der Sinn eines userReadings, das von "außen" geändert wird erschließt sich mir nicht.

Paul

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.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Beta-User

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" }
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

marvin78

Das erklärt nicht warum es Sinn machen soll, das von außen zu machen. Ein notify wäre ggf. sinnvoller.

Beta-User

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).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Paul

@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.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Beta-User

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?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Paul

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.
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Paul

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.

Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic