mit DOIF den Homestatus ändern

Begonnen von Tabularasa, 11 Dezember 2016, 21:44:01

Vorheriges Thema - Nächstes Thema

Tabularasa

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:

Ellert

$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.

Per

Da dein TV das Event sendet ($DEVICE), wirst du nie einen User darin finden.
Mittels Filter 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.