FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: m8ichael am 14 März 2016, 17:11:12

Titel: Warum löst Ereignis aus?
Beitrag von: m8ichael am 14 März 2016, 17:11:12
Hallo,

ich habe das folgende DOIF definiert:


Internals:
   DEF        ([06:45-{sunrise_abs("REAL")}] and [dmArbeitstag] eq "1" and {sunrise_abs("REAL")} gt "06:45:00") ((set eg.fl.Eingang.Licht,eg.fl.Licht on))
DOELSE
((set eg.fl.Eingang.Licht,eg.fl.Licht off))

   NAME       di.Flurbeleuchtung
   NR         139
   NTFY_ORDER 50-di.Flurbeleuchtung
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-03-14 04:00:00   Device          dmArbeitstag
     2016-03-14 06:45:00   cmd_event       timer_1
     2016-03-14 06:45:00   cmd_nr          1
     2016-03-14 04:00:00   e_dmArbeitstag_STATE 1
     2016-03-14 06:45:00   state           cmd_1
     2016-03-14 06:41:02   timer_1_c1      14.03.2016 06:45:00
     2016-03-14 06:41:02   timer_2_c1      15.03.2016 06:38:42
   Condition:
     0          DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and InternalDoIf($hash,'dmArbeitstag','STATE','','',AttrVal($hash->{NAME},'notexist',undef)) eq "1" and {sunrise_abs("REAL")} gt "06:45:00"
   Days:
   Devices:
     0           dmArbeitstag
     all         dmArbeitstag
   Do:
     0:
       0          (set eg.fl.Eingang.Licht,eg.fl.Licht on)
     1:
       0          (set eg.fl.Eingang.Licht,eg.fl.Licht off)
   Helper:
     event      timer_1
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev
     timerevent timer_1
     triggerDev
     timerevents:
       timer_1
     triggerEvents:
       timer_1
   Internals:
     0           dmArbeitstag:STATE
     all         dmArbeitstag:STATE
   Interval:
     0          -1
     1          0
   Itimer:
   Localtime:
     0          1457934300
     1          1458020322
   Readings:
   Realtime:
     0          06:45:00
     1          06:38:42
   Regexp:
     0:
     All:
   State:
   Time:
     0          06:45:00
     1          {sunrise_abs("REAL")}
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timers:
     0           0  1
   Trigger:
   Triggertime:
     1458020322:
       localtime  1458020322
       Hash:
Attributes:



Gewollt war, dass im Zeitraum 6:45h bis Sonnenaufgang an Werktagen das Licht eingeschaltet, und in der restlichen Zeit wieder ausgeschaltet wird. Sofern der Sonnenaufgang vor 06:45h liegt, soll keine Schaltaktion erfolgen. Im Dummy "dmArbeitstag" wird dabei jeweils um 4:00 Uhr gespeichert, ob ein Werktag vorliegt (oder eben nicht; abhängig von Urlaub, Feiertagen etc.).

Heute wurde nun durch das Umschalten des Dummy von 0 auf 1 (weil Werktag) um 4:00 Uhr das Licht eingeschaltet. Grundsätzlich logisch, wenn ich nicht zusätzlich als Bedingung die Abfrage eingebaut hätte, dass eine Schaltaktion nur dann ausgelöst werden soll, wenn der Sonnenaufgang nach 06:45h liegt. Wo ist mein Denkfehler?

Viele Grüße

Michael
Titel: Antw:Warum löst Ereignis aus?
Beitrag von: m8ichael am 08 April 2016, 19:57:10
Hallo,

hat hier niemand eine Idee?  ::)

So, wie es bisher nachvollziehen konnte, scheint der Vergleich {sunrise_abs("REAL")} gt "06:45:00" nicht im DOIF zu funktionieren. Gibt es eine Alternative?

Viele Grüße

Michael
Titel: Antw:Warum löst Ereignis aus?
Beitrag von: chris1284 am 08 April 2016, 20:04:51
in der cmdref (deutsche) zu doif wird gezeigt wie man {sunrise_rel} in doif nutz, somit würde ich davon ausgehen das auch sunrise_abs geht

Titel: Antw:Warum löst Ereignis aus?
Beitrag von: Ellert am 08 April 2016, 21:43:22
Zitat von: m8ichael am 08 April 2016, 19:57:10
Hallo,

hat hier niemand eine Idee?  ::)

So, wie es bisher nachvollziehen konnte, scheint der Vergleich {sunrise_abs("REAL")} gt "06:45:00" nicht im DOIF zu funktionieren. Gibt es eine Alternative?

Viele Grüße

Michael
Probier eine andere Schreibweise sunrise_abs("REAL") gt "06:45:00"