Was könnte denn hier falsch sein? Scheint doch zu funktionieren.
Warnung:
condition c01: Odd number of elements in anonymous hash
Internals:
DEF ([06:00-02:00,+:10] and
[du_anwesend] eq "present" and
({ReadingsAge("A51H","batteryPercent",99)} >600 or
{ReadingsAge("A51K","batteryPercent",99)} >600))
(set A51H statusrequest)
(set A51K statusrequest)
FUUID 5f806573-f33f-8098-5e3d-a0ff030026cc1340
MODEL FHEM
NAME DI_Handys_wecken
NOTIFYDEV du_anwesend,global
NR 58783
NTFY_ORDER 50-DI_Handys_wecken
STATE initialized
TYPE DOIF
VERSION 22913 2020-10-04 21:46:02
READINGS:
2020-10-09 16:04:34 cmd 0
2020-10-09 16:04:34 mode enabled
2020-10-09 16:04:34 state initialized
2020-10-09 16:04:35 timer_01_c01 10.10.2020 06:00:00
2020-10-09 16:04:35 timer_02_c01 10.10.2020 02:00:00
2020-10-09 16:04:35 timer_03_c01 09.10.2020 16:10:00
Regex:
accu:
cond:
du_anwesend:
0:
&STATE ^du_anwesend$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time($hash,0,1,$wday,$hms) and ::InternalDoIf($hash,'du_anwesend','STATE') eq "present" and ({ReadingsAge("A51H","batteryPercent",99)} >600 or {ReadingsAge("A51K","batteryPercent",99)} >600)
days:
do:
0:
0 set A51H statusrequest
1 set A51K statusrequest
1:
helper:
DEVFILTER ^global$|^du_anwesend$
NOTIFYDEV global|du_anwesend
globalinit 1
last_timer 3
sleeptimer -1
internals:
all du_anwesend:STATE
interval:
0 -1
1 0
intervalfunc:
2 ::DOIF_time($hash,0,1,$wday,$hms)
intervaltimer:
0 2
1 2
localtime:
0 1602302400
1 1602288000
2 1602252600
realtime:
0 06:00:00
1 02:00:00
2 16:10:00
time:
0 06:00:00
1 02:00:00
2 +:10
timeCond:
0 0
1 0
2 0
timer:
0 0
1 0
2 0
timers:
0 0 1 2
triggertime:
1602252600:
localtime 1602252600
hash:
1602288000:
localtime 1602288000
hash:
1602302400:
localtime 1602302400
hash:
uiState:
uiTable:
Attributes:
do always
room Wohnung->Wohnzimmer
Im Log erscheint auch der Fehler
2020.10.09 15:32:54 1: PERL WARNING: Odd number of elements in anonymous hash at (eval 322041) line 1.
2020.10.09 15:32:54 3: eval: DI_Handys_wecken: warning in condition c01
Warum hast du geschweifte Klammern um die ReadingsAge-Funktion gesetzt? Die Bedingungen im DOIF-FHEM-Modus sind bis auf Dinge in eckigen Klammern schon Perl.
Danke für den Tipp. Wusste ich nicht. Das war der Fehler von mir. Nun gehts.
Ist es sinnvoller, {ReadingsAge("A51H","batteryPercent",99) oder [?A51H:batteryPercent:sec] zu verwenden?
Zitat von: Per am 03 März 2021, 22:45:44
Ist es sinnvoller, {ReadingsAge("A51H","batteryPercent",99) oder [?A51H:batteryPercent:sec] zu verwenden?
Das dürfte ziemlich egal sein, hinter beiden Angaben verbergen sich die gleichen Perlfunktionen zur Berechnung der Zeit. Die zweite kann man direkt im FHEM-Ausführungsteil des DOIFs angeben, die erste muss man zuvor noch in Klammern verpacken: {(...)}
Im DOIF-Perl-Modus würde eher Perlfunktionen verwenden, wenn sie nicht triggern sollen.