FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: kermitthefrog am 06 November 2018, 08:42:11

Titel: zeitgesteuertes DOIF versagt anscheinend beim Vergleich von Zeiten
Beitrag von: kermitthefrog am 06 November 2018, 08:42:11
Moin,

ich komme leider nicht mehr weiter. Ich möchte meine Dekobeleuchtung per DOIF zeitgesteuert ein/ausschalten lassen. Ich bin der festen Überzeugung, dass folgendes DOIF letztes Jahr noch einwandfrei lief.
Die Beleuchtung soll 4000 Sekunden vor Sonnenuntergang eingeschaltet und um 22:30h wieder ausgeschaltet werden. Zusätzlich soll morgens an Werktagen um 06:00h eingeschaltet werden, sofern dies zeitlich vor Sonnenaufgang + 3000 Sekunden liegt (dem dann auch anzusetzenden Ausschaltzeitpunkt). Abends funktioniert es wie es soll, morgens geht es nicht an.

Kann man dies sonst auch noch eleganter lösen?

Danke und Gruß!


Internals:
   DEF        ([{sunset_abs(-4000)}] or ([06:00|AT] and [06:00|AT]<=[{sunrise_abs(+3000)}])) (set Dekobeleuchtung on) DOELSEIF ([22:30] or [{sunrise_abs(+3000)}]) (set Dekobeleuchtung off)
   MODEL      FHEM
   NAME       di_DekobeleuchtungZeitsteuerung
   NR         258
   NTFY_ORDER 50-di_DekobeleuchtungZeitsteuerung
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-11-05 22:30:01   cmd             2
     2018-11-05 22:30:01   cmd_event       timer_5
     2018-11-05 22:30:01   cmd_nr          2
     2018-11-05 07:15:02   mode            enabled
     2018-11-05 22:30:01   state           cmd_2
     2018-11-05 22:58:30   timer_01_c01    06.11.2018 16:12:43
     2018-11-06 06:00:00   timer_02_c01    07.11.2018 06:00:00|AT
     2018-11-06 06:00:00   timer_03_c01    07.11.2018 06:00:00|AT
     2018-11-06 07:39:59   timer_04_c01    07.11.2018 07:41:46
     2018-11-05 22:58:30   timer_05_c02    06.11.2018 22:30:00
     2018-11-06 07:39:59   timer_06_c02    07.11.2018 07:41:46
   Regex:
   attr:
     waitdel:
   condition:
     0          ::DOIF_time_once($hash,0,$wday) or (::DOIF_time_once($hash,1,$wday,"AT") and ::DOIF_time_once($hash,2,$wday,"AT")<=::DOIF_time_once($hash,3,$wday))
     1          ::DOIF_time_once($hash,4,$wday) or ::DOIF_time_once($hash,5,$wday)
   days:
     1          AT
     2          AT
   devices:
   do:
     0:
       0          set Dekobeleuchtung on
     1:
       0          set Dekobeleuchtung off
     2:
   helper:
     event      timer_6
     globalinit 1
     last_timer 6
     sleeptimer -1
     timerdev   
     timerevent timer_6
     timereventsState
     triggerDev
     timerevents:
       timer_6
     triggerEvents:
       timer_6
   internals:
   interval:
   intervalfunc:
   itimer:
   localtime:
     0          1541517163
     1          1541566800
     2          1541566800
     3          1541572906
     4          1541539800
     5          1541572906
   perlblock:
   readings:
   realtime:
     0          16:12:43
     1          06:00:00
     2          06:00:00
     3          07:41:46
     4          22:30:00
     5          07:41:46
   time:
     0          {sunset_abs(-4000)}
     1          06:00:00
     2          06:00:00
     3          {sunrise_abs(+3000)}
     4          22:30:00
     5          {sunrise_abs(+3000)}
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          1
     5          1
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
   timers:
     0           0  1  2  3
     1           4  5
   triggertime:
     1541517163:
       localtime  1541517163
       hash:
     1541539800:
       localtime  1541539800
       hash:
     1541566800:
       localtime  1541566800
       hash:
     1541572906:
       localtime  1541572906
       hash:
   uiState:
   uiTable:
Attributes:
Titel: Antw:zeitgesteuertes DOIF versagt anscheinend beim Vergleich von Zeiten
Beitrag von: Morgennebel am 06 November 2018, 12:05:59
Was spricht gegen

([{sunset_abs(-4000)}-22:30] or [06:00-{sunrise_abs(+3000)}|AT])
   set Dekobeleuchtung on
DOELSE
   set Dekobeleuchtung off


Ciao, -MN
Titel: Antw:zeitgesteuertes DOIF versagt anscheinend beim Vergleich von Zeiten
Beitrag von: Ellert am 06 November 2018, 12:30:23
[06:00|AT]<=[{sunrise_abs(+3000)}] dieser Vergleich funktioniert nicht, weil [Zeit] nur logisch wahr oder falsch liefert.

so sollte es funktionieren
"06:00:00" le sunrise_abs(+3000)
Titel: Antw:zeitgesteuertes DOIF versagt anscheinend beim Vergleich von Zeiten
Beitrag von: Damian am 06 November 2018, 13:16:30
Bei der Funktion sunrise selbst kann man den Zeitbereich festlegen. Es gibt sogar Beispiele in der Commandref zu DOIF dazu.
Titel: Antw:zeitgesteuertes DOIF versagt anscheinend beim Vergleich von Zeiten
Beitrag von: kermitthefrog am 06 November 2018, 15:20:41
Zitat von: Morgennebel am 06 November 2018, 12:05:59
Was spricht gegen

([{sunset_abs(-4000)}-22:30] or [06:00-{sunrise_abs(+3000)}|AT])
   set Dekobeleuchtung on
DOELSE
   set Dekobeleuchtung off


Ciao, -MN

Sehr schön, werde ich so übernehmen... DANKE!
Titel: Antw:zeitgesteuertes DOIF versagt anscheinend beim Vergleich von Zeiten
Beitrag von: Ellert am 06 November 2018, 15:35:22
Falls bei dieser Bedingung [06:00-{sunrise_abs(+3000)}|AT] der Ausdruck {sunrise_abs(+3000)} eine Zeit vor 6 Uhr liefert, geht das Licht in der resultierenden Zeit Spanne an, z.B. {sunrise_abs(+3000)} liefert 05:00:00, dann geht das Licht um 6 Uhr an und am nächsten Tag um 5 Uhr aus.
Titel: Antw:zeitgesteuertes DOIF versagt anscheinend beim Vergleich von Zeiten
Beitrag von: Morgennebel am 06 November 2018, 16:54:10
Zitat von: Ellert am 06 November 2018, 15:35:22
Falls bei dieser Bedingung [06:00-{sunrise_abs(+3000)}|AT] der Ausdruck {sunrise_abs(+3000)} eine Zeit vor 6 Uhr liefert, geht das Licht in der resultierenden Zeit Spanne an, z.B. {sunrise_abs(+3000)} liefert 05:00:00, dann geht das Licht um 6 Uhr an und am nächsten Tag um 5 Uhr aus.

Bist Du da sicher? Ich hab so ähnliche Bedingungen schon lange im Einsatz und wenn der "Ausschaltpunkt" vor dem "Einschaltpunkt" liegt, passierte bisher nichts (oder hab ich das nur verschlafen?).

Ciao, -MN
Titel: Antw:zeitgesteuertes DOIF versagt anscheinend beim Vergleich von Zeiten
Beitrag von: Damian am 06 November 2018, 18:09:45
Zitat von: Morgennebel am 06 November 2018, 16:54:10
Bist Du da sicher? Ich hab so ähnliche Bedingungen schon lange im Einsatz und wenn der "Ausschaltpunkt" vor dem "Einschaltpunkt" liegt, passierte bisher nichts (oder hab ich das nur verschlafen?).

Ciao, -MN

Da hast du wohl etwas übersehen ;)

[19:00-07:00] ist von 19:00 Uhr bis 07:00 Uhr wahr und sonst nicht.