Device aus Reading zusammenbauen

Begonnen von abc2006, 02 September 2019, 13:30:45

Vorheriges Thema - Nächstes Thema

abc2006

Hallo,
ich habe ein DOIF, welches ein Reading "DEVICE" besitzt.
In diesem Reading ist der Name eines Aktors hinterlegt ("Aktor_Backofen").
Ich möchte gerne die aktuelle Leistung abfragen (Aktor_Backofen:power) ohne! dabei "Aktor_Backofen" zu verwenden.
attr DF_test DOIF_Readings pwr:([[$SELF:DEVICE]:power])

zum Beispiel.
Gibts dafür ne Lösung? Meine Ansätze scheinen nicht zu funktionieren ...
Auch mit

ReadingsVal("[$SELF:DEVICE]","power",9999)
ReadingsVal(\"[$SELF:DEVICE]\","power",9999)
ReadingsVal('[$SELF:DEVICE]',"power",9999)
ReadingsVal(\'[$SELF:DEVICE]\',"power",9999)


komme ich nicht weit.

Hat jemand nen Tipp für mich?

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Otto123

#1
Hallo Stephan,

Value aus Reading aus Name aus Reading - klingt für mich nach dem Ansatz:
ReadingsVal(ReadingsVal($SELF,"DEVICE",0),"power",0)

Hab's aber nicht getestet und weiß nicht wie und ob dein 1. Ansatz mit den eckigen Klammern funktionieren kann.

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

abc2006

Hallo Otto,
das ist ziemlich genial - warum bin ich da blos nicht selbst drauf gekommen.

Allerdings aktualisiert sich das DOIF-Reading jetzt nicht... soweit ich weiss, braucht es dafür die eckigen Klammern []. Hast du da auch noch einen Trick für mich?

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

Hier mein Device, falls benötigt:


Internals:
   CFGFN     
   DEF        ([$SELF:steuern] eq "on" && [$SELF:lastabwurf] eq "on")
(
set KNX13.O01_Aktor_Backofen on
)
DOELSE
(
set KNX13.O01_Aktor_Backofen off
)
   FUUID      5d6ce8c6-f33f-4040-5a71-04086108af74436e
   MODEL      FHEM
   NAME       DF_Aktor_Backofen
   NR         2960415
   NTFY_ORDER 50-DF_Aktor_Backofen
   STATE      cmd_1
   TYPE       DOIF
   VERSION    19786 2019-07-05 21:47:08
   DOIF_Readings:
     pwr        (ReadingsVal(ReadingsVal("DF_Aktor_Backofen","DEVICE",0),"power",9999))
   OLDREADINGS:
   READINGS:
     2019-09-02 12:56:45   DEVICE          KNX13.O01_Aktor_Backofen
     2019-09-02 14:11:11   cmd             1
     2019-09-02 14:11:11   cmd_event       DF_Aktor_Backofen
     2019-09-02 14:11:11   cmd_nr          1
     2019-09-02 14:11:11   e_DF_Aktor_Backofen_lastabwurf on
     2019-09-02 14:08:12   e_DF_Aktor_Backofen_steuern on
     2019-09-02 14:11:11   lastabwurf      on
     2019-09-02 12:21:21   mode            enabled
     2019-09-02 13:58:36   pwr             9 VA
     2019-09-02 14:11:11   state           cmd_1
     2019-09-02 14:08:12   steuern         on
   Regex:
     accu:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::ReadingValDoIf($hash,'DF_Aktor_Backofen','steuern') eq "on" && ::ReadingValDoIf($hash,'DF_Aktor_Backofen','lastabwurf') eq "on"
   devices:
     0           DF_Aktor_Backofen
     all         DF_Aktor_Backofen
   do:
     0:
       0           set KNX13.O01_Aktor_Backofen on
     1:
       0           set KNX13.O01_Aktor_Backofen off
   helper:
     DOIF_Readings_events
     event      lastabwurf: on
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   DF_Aktor_Backofen
     timerevent lastabwurf: on
     triggerDev DF_Aktor_Backofen
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: DF_Aktor_Backofen
       state: cmd_1
     timerevents:
       lastabwurf: on
       e_DF_Aktor_Backofen_lastabwurf: on
       cmd_nr: 1
       cmd: 1
       cmd_event: DF_Aktor_Backofen
       cmd_1
     timereventsState:
       lastabwurf: on
       e_DF_Aktor_Backofen_lastabwurf: on
       cmd_nr: 1
       cmd: 1
       cmd_event: DF_Aktor_Backofen
       cmd_1
     triggerEvents:
       lastabwurf: on
       e_DF_Aktor_Backofen_lastabwurf: on
       cmd_nr: 1
       cmd: 1
       cmd_event: DF_Aktor_Backofen
       cmd_1
     triggerEventsState:
       lastabwurf: on
       e_DF_Aktor_Backofen_lastabwurf: on
       cmd_nr: 1
       cmd: 1
       cmd_event: DF_Aktor_Backofen
       cmd_1
   internals:
   itimer:
   readings:
     0           DF_Aktor_Backofen:steuern DF_Aktor_Backofen:lastabwurf
     all         DF_Aktor_Backofen:steuern DF_Aktor_Backofen:lastabwurf
   trigger:
   uiState:
   uiTable:
Attributes:
   DOIF_Readings pwr:(ReadingsVal(ReadingsVal("$SELF","DEVICE",0),"power",9999))
   room       _doif,KNX,Solar_PV
   selftrigger all


FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Otto123

Zitat von: abc2006 am 02 September 2019, 14:03:52
Allerdings aktualisiert sich das DOIF-Reading jetzt nicht... soweit ich weiss, braucht es dafür die eckigen Klammern []. Hast du da auch noch einen Trick für mich?

Sorry hab ich nicht. Ich weiß nicht mal welche Bedingungen das DOIF triggern um diese Readings zu aktualisieren. Und Du aktualisierst ein Reading auf Grundlage eines anderen Devices!
Da hoffen wir mal auf die Gemeinde :)
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

Per

Zitat von: abc2006 am 02 September 2019, 14:03:52Allerdings aktualisiert sich das DOIF-Reading jetzt nicht... soweit ich weiss, braucht es dafür die eckigen Klammern [].
Das hast du richtig erkannt, bisher gibt es noch keine Lösung (ich hätte dafür nämlich auch Bedarf).

Damian

Indirekte Trigger gibt es tatsächlich noch nicht. Ich denke, dass es mit userReadings auch nicht funktioniert. Das einzige was mir einfällt, wäre das Attribut DOIF_Reading jedes Mal abhängig von DEVICE automatisiert neu zu setzen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF