Hallo. Ich wollte gern wenn ich den TV abschalte in der Woche, dass der Status auf gotosleep wechselt. Aber auch nur bei der Person, die wirklich zuhause ist. Nachdem ich mehrere Varianten ausprobiert habe, habe ich mich für folgende entschieden zu posten. Das wird wahrscheinlich die verwirrteste sein, aber so sieht es im Moment auch in meinem Kopf aus. Kann mir jemand einen Stoß in die richtige Richtung geben? Und ja, ich habe noch keine Ahnung wie und was regex, event, reading usw sind und wie ich es anwende, aber ich versuche es zu lernen. Danke
Internals:
DEF ([TV] eq "absent" and [21:30-23:00|01234] and ([$DEVICE:?rr_Lydia] or [$DEVICE:?rr_Manuel] eq "home")) (set $DEVICE gotosleep)
NAME di_Bewohner_sleep
NR 102
NTFY_ORDER 50-di_Bewohner_sleep
STATE initialized
TYPE DOIF
Readings:
2016-12-11 14:52:15 cmd 0
2016-12-11 14:52:15 state initialized
2016-12-11 14:52:15 timer_01_c01 11.12.2016 21:30:00|01234
2016-12-11 14:52:15 timer_02_c01 11.12.2016 23:00:00|01234
Condition:
0 InternalDoIf($hash,'TV','STATE') eq "absent" and DOIF_time($hash,0,1,$wday,$hms,"01234") and (EventDoIf('$DEVICE',$hash,'rr_Lydia',1) or EventDoIf('$DEVICE',$hash,'rr_Manuel',1) eq "home")
Days:
0 01234
1 01234
Devices:
0 TV
all TV
Do:
0:
0 set $DEVICE gotosleep
Helper:
globalinit 1
last_timer 2
sleeptimer -1
Internals:
0 TV:STATE
all TV:STATE
Interval:
0 -1
1 0
Itimer:
Localtime:
0 1481488200
1 1481493600
Realtime:
0 21:30:00
1 23:00:00
Regexp:
All:
State:
Time:
0 21:30:00
1 23:00:00
Timecond:
0 0
1 0
Timer:
0 0
1 0
Timers:
0 0 1
Trigger:
all $DEVICE $DEVICE
Triggertime:
1481488200:
localtime 1481488200
Hash:
1481493600:
localtime 1481493600
Hash:
Attributes:
$DEVICE ist ein Ersatzname für das Reading "Device" im DOIF. Das Reading enthält den Namen des triggernden Gerätes, nach dem es getriggert hat. Das Siehst Du daran, dass DOIF das Reading noch nicht im Listing auftaucht. Vorher weiss DOIF nicht welches Gerät Du mit $DEVICE meinst. Du müsstest schon den richtigen Gerätenamen angeben.
Da dein TV das Event sendet ($DEVICE), wirst du nie einen User darin finden.
Mittels Filter (http://fhem.de/commandref_DE.html#devspec) kannst du aber alle gewünschten finden und setzen.
Deine Variante würde, wenn die Syntax berichtigt ist, dazu führen, dass wenn jemand nach Hause kommt und der TV ist aus, sofort auf "gotosleep" gesetzt würde.