Problem bei userReadings / Trigger

Begonnen von Cybers, 04 März 2021, 08:45:41

Vorheriges Thema - Nächstes Thema

Cybers

Hallo,

aktuell verzweifle ich ich bei einem userReading. Problem: das Reading wird nicht aktualisiert wenn das Reading aus dem Hautpdevice gesetzt wird, sondern erst wenn das Device, wo das userReading drin ist, geschaltet wird.

So ist das Device "Garagentor-Schalter" angelegt:
defmod EnO_01879635 EnOcean 01879635
attr EnO_01879635 IODev ESP3
attr EnO_01879635 alias Garagentor
attr EnO_01879635 devStateIcon .*:control_on_off
attr EnO_01879635 eventMap on-for-timer:on-for-timer BI:off B0:on
attr EnO_01879635 genericDeviceType garage
attr EnO_01879635 group Schaltaktor FSR61/8-24V UC
attr EnO_01879635 homebridgeMapping CurrentDoorState:Status,values=off:CLOSED;;on:OPEN TargetDoorState:CurrentDoorState,cmds=OPEN:on;;CLOSED:off
attr EnO_01879635 icon fts_garage
attr EnO_01879635 manufID 00D
attr EnO_01879635 room Garage,Homekit,Schaltschrank
attr EnO_01879635 stateFormat {ReadingsVal("EnO_FEFA7CE5","Status",0)}
attr EnO_01879635 subDef FFD6FC81
attr EnO_01879635 subType switch
attr EnO_01879635 switchMode pushbutton
attr EnO_01879635 userReadings Status { if(ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed") {return "offen";;} else {return "geschlossen";;} }
attr EnO_01879635 webCmd :


Das heißt, der Wert im Reading "Status" vom Garagentor-Schalter soll aus dem Reading "state" vom Device "EnO_FEFA7CE5" übernommen werden. Das passiert aber nicht wenn sich das reading im Device "EnO_FEFA7CE5" ändert, sondern erst wenn ich den Garagentor-Schalter mit on, off oder on-for-timer bediene. Scheinbar wird das Attribut "userreading" nur über den Garagentor-Schalter getriggert.

Hier noch der Code von dem Sensor "EnO_FEFA7CE5":
defmod EnO_FEFA7CE5 EnOcean FEFA7CE5
attr EnO_FEFA7CE5 IODev ESP3
attr EnO_FEFA7CE5 alias Garagentor Sensor oben
attr EnO_FEFA7CE5 eep F6-10-00
attr EnO_FEFA7CE5 eventMap pressed:offen released:geschlossen
attr EnO_FEFA7CE5 manufID 00D
attr EnO_FEFA7CE5 model Eltako_FTS12
attr EnO_FEFA7CE5 room Garage
attr EnO_FEFA7CE5 stateFormat { if(ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed") {return "offen";;} else {return "geschlossen";;} }
attr EnO_FEFA7CE5 subType switch
attr EnO_FEFA7CE5 teachMethod RPS
attr EnO_FEFA7CE5 userReadings Status { if(ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed") {return "offen";;} else {return "geschlossen";;} }
attr EnO_FEFA7CE5 webCmd :


Hat da vielleicht jemand eine Idee? Außer mit "do if" oder "notify"...
Oder läßt sich das wirklich nur mit  "do if" oder "notify" umsetzen? :-(

Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

DeeSPe

userReadings werden nur im eigenen Device getriggert.
Wenn Du Werte von einem anderen Device in dem Device setzen willst, dann geht das nur über notify oder doif.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Otto123

Sollte man diesen Satz in der Doku optisch präsenter positionieren?
ZitatDiese benutzerdefinierte Readings werden bei jeder Aktualisierung der Gerätereadings gesetzt, indem das spezifizierte perl code { <perl code> } ausgeführt wird, und dessen Wert dem Reading zugewiesen wird.

Aber ein setreading auf ein ANDERES Device darf man doch in einem userReadings machen? Das wird zumindest nicht verhindert. Erzeugt ja auch keine Schleife.

Also im userReadings in EnO_FEFA7CE5 einfach ein setreading EnO_01879635  ... machen?
Hoffentlich verhaut mich jetzt keiner :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Cybers

ich hatte es auch so im Kopf und mir gedacht. Manchmal weiß man ja aber auch nicht immer was sich so getan hat.

Dennoch läuft es noch nicht so ganz. (Pearl und Klammern sind bei mir noch ein wenig hakelig.)
Das habe ich jetzt im userReading meines Sensors um das reading meines Schalters zu setzen:
{ if(ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed") (setreading EnO_01879635 Status offen) else (setreading EnO_01879635 Status geschlossen) }

Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

TomLee

In deinem Fall geht das auch ohne viel Klammern.

Google "Perl ternärer Operator" im ersten Ergebnis wird der beschrieben und auch die korrekte Syntax zu deinem jetzigem if/else.

Gruß

Thomas

Cybers

Danke, aber so recht hat mir das nicht weiter geholfen oder ich habe einen falschen Beitrag gelesen. Vielleicht wäre ja dennoch jemand so nett mir den richtigen Ansatz zu geben.

Ich verstehe, daß manch einer möchte, daß sich die User mit dem Thema auseinandersetzen und lieber Lesetips geben. Allerdings bin ich jetzt nicht erst seit gestern hier, beschäftige mich selbst ersteinmal mit meinen Problemen und schreibe wenn ich selbst nicht mehr weiter weiß. Umso mehr freut man sich wenn jemand einem aktiv hilft - das mache ich andersrum genauso bei Themen bei denen ich helfen kann.

Gruß, Sascha
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

DeeSPe

Zitat von: Cybers am 04 März 2021, 18:22:17
Danke, aber so recht hat mir das nicht weiter geholfen oder ich habe einen falschen Beitrag gelesen. Vielleicht wäre ja dennoch jemand so nett mir den richtigen Ansatz zu geben.

Ich verstehe, daß manch einer möchte, daß sich die User mit dem Thema auseinandersetzen und lieber Lesetips geben. Allerdings bin ich jetzt nicht erst seit gestern hier, beschäftige mich selbst ersteinmal mit meinen Problemen und schreibe wenn ich selbst nicht mehr weiter weiß. Umso mehr freut man sich wenn jemand einem aktiv hilft - das mache ich andersrum genauso bei Themen bei denen ich helfen kann.

Gruß, Sascha

Er meint wohl so:
{ ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed" ? (setreading EnO_01879635 Status offen) : (setreading EnO_01879635 Status geschlossen) }

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Otto123

funktioniert doch nicht ohne fhem("")  ???
{ ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed" ? fhem("setreading EnO_01879635 Status offen") : fhem("setreading EnO_01879635 Status geschlossen") }
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Cybers

Danke, aber da scheint immer noch etwas nicht ganz zu passen. Das Reading wird nicht gesetzt.

defmod EnO_FEFA7CE5 EnOcean FEFA7CE5
attr EnO_FEFA7CE5 IODev ESP3
attr EnO_FEFA7CE5 alias Garagentor Sensor oben
attr EnO_FEFA7CE5 eep F6-10-00
attr EnO_FEFA7CE5 eventMap pressed:offen released:geschlossen
attr EnO_FEFA7CE5 manufID 00D
attr EnO_FEFA7CE5 model Eltako_FTS12
attr EnO_FEFA7CE5 room Garage
attr EnO_FEFA7CE5 stateFormat { if(ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed") {return "offen";;} else {return "geschlossen";;} }
attr EnO_FEFA7CE5 subType switch
attr EnO_FEFA7CE5 teachMethod RPS
attr EnO_FEFA7CE5 userReadings { ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed" ? fhem("setreading EnO_01879635 Status offen") : fhem("setreading EnO_01879635 Status geschlossen") }
attr EnO_FEFA7CE5 webCmd :
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

Otto123

#9
weil da der Name des Userreading fehlt!
attr EnO_FEFA7CE5 userReadings { ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed" ? fhem("setreading EnO_01879635 Status offen") : fhem("setreading EnO_01879635 Status geschlossen") }
Von mir aus Willi :)

attr EnO_FEFA7CE5 userReadings willi { ReadingsVal($name,"state",0) eq "pressed" ? fhem("setreading EnO_01879635 Status offen") : fhem("setreading EnO_01879635 Status geschlossen") }

Hat das gerät noch etwas Besseres als state worauf man triggern könnte? So rammelt das userReadings bei jeder Änderung im state los und state selbst steht wieder nicht im event :(
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

DeeSPe

Zitat von: Otto123 am 04 März 2021, 18:42:53
funktioniert doch nicht ohne fhem("")  ???

Die Syntax sah mir so nach doif oder sowas aus!
Und da ich mich damit nicht auskenne, habe ich es einfach so gelassen. ;)

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Cybers

Danke für eure Hilfe, jetzt läuft es! Der Name des Userreadings ist mir beim letzten Einfügen "verloren" gegangen.  :-[
Alternativ könnte man noch auf das Reading "buttons" triggern.
Hier mal ein list von dem Device:
Internals:
   DEF        FEFA7CE5
   ESP3_DestinationID FFFFFFFF
   ESP3_MSGCNT 25
   ESP3_PacketType 1
   ESP3_RSSI  -91
   ESP3_ReceivingQuality bad
   ESP3_RepeatingCounter 0
   ESP3_SubTelNum 3
   ESP3_TIME  2021-03-04 19:05:34
   FGW14_USB_MSGCNT 24
   FGW14_USB_TIME 2021-03-04 19:05:34
   FUUID      5c473d3a-f33f-e675-bdcb-dc8782697288bbe9
   IODev      ESP3
   LASTInputDev FGW14_USB
   MSGCNT     25
   NAME       EnO_FEFA7CE5
   NR         556
   NTFY_ORDER 50-EnO_FEFA7CE5
   STATE      offen
   TYPE       EnOcean
   OLDREADINGS:
   READINGS:
     2021-03-04 19:05:34   buttons         pressed
     2021-03-04 19:05:34   state           pressed
     2018-07-11 20:36:37   teach           RPS teach-in accepted EEP F6-10-00 Manufacturer: no ID
   helper:
Attributes:
   IODev      ESP3
   alias      Garagentor Sensor oben
   eep        F6-10-00
   eventMap   pressed:offen released:geschlossen
   manufID    00D
   model      Eltako_FTS12
   room       Garage
   stateFormat { if(ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed") {return "offen";} else {return "geschlossen";} }
   subType    switch
   teachMethod RPS
   userReadings Status { ReadingsVal("EnO_FEFA7CE5","state",0) eq "pressed" ? fhem("setreading EnO_01879635 Status offen") : fhem("setreading EnO_01879635 Status geschlossen") }
   webCmd     :
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel

Otto123

#12
Besser !
buttons         pressed
Wahrscheinlich so? ;)
attr EnO_FEFA7CE5 userReadings Status:buttons:.* { ReadingsVal($name,"buttons",0) eq "pressed" ? fhem("setreading EnO_01879635 Status offen") : fhem("setreading EnO_01879635 Status geschlossen") }
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Zitatbeschäftige mich selbst ersteinmal mit meinen Problemen

Mein Ebus-Raspi liegt seit mehr als 2 Jahren provisorisch mit 2 verdrillten Adern angeschlossen auf meinem Heizkessel, heute war der Tag an dem ich neue Leitungen (230V Leitung für Steckdose und Ebusleitung) sauber verlegt/installiert habe, neben meiner eigentlichen Arbeit und meinen Problemen.
In einer 5-minütigen Pause hab ich dir geantwortet, habs nur gut gemeint und kurz helfen wollen.

Cybers

Zitat von: TomLee am 04 März 2021, 19:28:32
Mein Ebus-Raspi liegt seit mehr als 2 Jahren provisorisch mit 2 verdrillten Adern angeschlossen auf meinem Heizkessel, heute war der Tag an dem ich neue Leitungen (230V Leitung für Steckdose und Ebusleitung) sauber verlegt/installiert habe, neben meiner eigentlichen Arbeit und meinen Problemen.
In einer 5-minütigen Pause hab ich dir geantwortet, habs nur gut gemeint und kurz helfen wollen.

Meine Antwort war auch nicht böse gemeint. Ich lerne ja auch immer gerne dazu und bin auch lesewillig.  :)
FHEM 6.3 auf Raspberry PI 4 / Smartvisu
Eltako Serie 14: FAM14, FGW14-USB, FSB14, FSR14-4x, FSR14-2x, FDG14, FTS14-EM in Kombination mit Jung F50 24V Tastern
1-Wire Temperatursensoren
aus alter Zeit:
Gott sei Dank nur noch 3 Homematic Jalousie- & Schaltaktoren! Wer sich mit Funk auskennt, legt Kabel