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
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
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
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
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 :)
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).
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.