DOIF + sunrise schaltet, obwohl es nicht schalten sollte...?

Begonnen von Morgennebel, 15 April 2019, 09:18:52

Vorheriges Thema - Nächstes Thema

Morgennebel

Moin Moin,


ich habe folgendes DOIF seit einiger Zeit im Einsatz:


Internals:
   DEF        ([05:30-{sunrise_abs(+1200)}|AT])
   (setreading $SELF OutDoorLight on)          ## CMD1
DOELSEIF ([06:30-{sunrise_abs(+1200)}|WE])
   (setreading $SELF OutDoorLight on)          ## CMD2
DOELSEIF ([{sunset_abs(-2100)}-21:45|SoMoDiMiDo])
   (setreading $SELF OutDoorLight on)          ## CMD3
DOELSEIF ([{sunset_abs(-2100)}-22:30|MWEFrSa])
   (setreading $SELF OutDoorLight on)          ## CMD4
DOELSE
   (setreading $SELF OutDoorLight off)
   FUUID      5c98b9b3-f33f-4ba1-8d44-61678a1cefa35fb8
   MODEL      FHEM
   NAME       DI_LightsAussen
   NR         438
   NTFY_ORDER 50-DI_LightsAussen
   STATE      Morgens-WE
   TYPE       DOIF
   VERSION    18890 2019-03-13 18:56:41
   Helper:
     DBLOG:
       state:
         DBLOG:
           TIME       1555312276.98071
           VALUE      Morgens-WE
   READINGS:
     2019-04-15 09:11:16   OutDoorLight    on
     2019-04-15 09:11:16   cmd             2
     2019-04-15 09:11:16   cmd_event       DI_LightsAussen
     2019-04-15 09:11:16   cmd_nr          2
     2019-04-15 09:11:12   mode            enabled
     2019-04-15 09:11:16   state           Morgens-WE
     2019-04-15 09:11:12   timer_01_c01    16.04.2019 05:30:00|AT
     2019-04-15 09:11:12   timer_02_c01    16.04.2019 06:06:38|AT
     2019-04-15 09:11:12   timer_03_c02    16.04.2019 06:30:00|WE
     2019-04-15 09:11:12   timer_04_c02    16.04.2019 06:06:38|WE
     2019-04-15 09:11:12   timer_05_c03    15.04.2019 20:27:58|SoMoDiMiDo
     2019-04-15 09:11:12   timer_06_c03    15.04.2019 21:45:00|SoMoDiMiDo
     2019-04-15 09:11:12   timer_07_c04    15.04.2019 20:27:58|MWEFrSa
     2019-04-15 09:11:12   timer_08_c04    15.04.2019 22:30:00|MWEFrSa
   Regex:
     accu:
   attr:
     cmdState:
       0:
         Morgens-AT
       1:
         Morgens-WE
       2:
         Abends-AT
       3:
         Abends-WE/MWE
       4:
         Aus
     wait:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms,"AT")
     1          ::DOIF_time($hash,2,3,$wday,$hms,"WE")
     2          ::DOIF_time($hash,4,5,$wday,$hms,"SoMoDiMiDo")
     3          ::DOIF_time($hash,6,7,$wday,$hms,"MWEFrSa")
   days:
     0          AT
     1          AT
     2          WE
     3          WE
     4          SoMoDiMiDo
     5          SoMoDiMiDo
     6          MWEFrSa
     7          MWEFrSa
   devices:
   do:
     0:
       0          setreading DI_LightsAussen OutDoorLight on
     1:
       0          setreading DI_LightsAussen OutDoorLight on
     2:
       0          setreading DI_LightsAussen OutDoorLight on
     3:
       0          setreading DI_LightsAussen OutDoorLight on
     4:
       0          setreading DI_LightsAussen OutDoorLight off
   helper:
     globalinit 1
     last_timer 8
     sleeptimer -1
     timerdev   
     timerevent
     timerevents
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 2
       cmd: 2
       cmd_event: DI_LightsAussen
       state: Morgens-WE
   internals:
   interval:
     0          -1
     1          0
     2          -1
     3          2
     4          -1
     5          4
     6          -1
     7          6
   intervalfunc:
   itimer:
   localtime:
     0          1555385400
     1          1555387598
     2          1555389000
     3          1555387598
     4          1555352878
     5          1555357500
     6          1555352878
     7          1555360200
   readings:
   realtime:
     0          05:30:00
     1          06:06:38
     2          06:30:00
     3          06:06:38
     4          20:27:58
     5          21:45:00
     6          20:27:58
     7          22:30:00
   time:
     0          05:30:00
     1          {sunrise_abs(+1200)}
     2          06:30:00
     3          {sunrise_abs(+1200)}
     4          {sunset_abs(-2100)}
     5          21:45:00
     6          {sunset_abs(-2100)}
     7          22:30:00
   timeCond:
     0          0
     1          0
     2          1
     3          1
     4          2
     5          2
     6          3
     7          3
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
     5          0
     6          0
     7          0
   timers:
     0           0  1
     1           2  3
     2           4  5
     3           6  7
   triggertime:
     1555352878:
       localtime  1555352878
       hash:
     1555357500:
       localtime  1555357500
       hash:
     1555360200:
       localtime  1555360200
       hash:
     1555385400:
       localtime  1555385400
       hash:
     1555387598:
       localtime  1555387598
       hash:
     1555389000:
       localtime  1555389000
       hash:
   uiState:
   uiTable:
Attributes:
   cmdState   Morgens-AT|Morgens-WE|Abends-AT|Abends-WE/MWE|Aus
   room       SYS_Events


Es geht bei mir um Bedingung 2, die aktuell ständig wahr bleibt. Als Timer wurden vom DOIF ermittelt:


timer_03_c02   16.04.2019 06:30:00|WE   2019-04-15 09:11:12
timer_04_c02   16.04.2019 06:06:38|WE   2019-04-15 09:11:12


WE ist wahr, weil mein holiday2we Schulferien meldet.

Jedoch würden die Uhrzeiten einer Bedingung [06:30-06:06|WE] entsprechen, d.h. die Zeit sollte eigentlich nicht triggern. Trotzdem triggert das DOIF jeden Morgen während der Schulferien und bleibt den ganzen Tag im CMD2...

Wo ist mein Fehler?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Damian

ZitatWE ist wahr, weil mein holiday2we Schulferien meldet.

Jedoch würden die Uhrzeiten einer Bedingung [06:30-06:06|WE] entsprechen, d.h. die Zeit sollte eigentlich nicht triggern. Trotzdem triggert das DOIF jeden Morgen während der Schulferien und bleibt den ganzen Tag im CMD2...

Wo ist mein Fehler?

In falscher Annahme.

[06:30-06:06|WE] bedeutet: wahr am Wochenende von 06:30 Uhr bis morgen um 06:06, die Zeiten triggern weiterhin
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

#2
Hi,
da würde dann helfen:
([06:30-{sunrise_abs(+1200,"6:31","12:15")}|WE])

Aber eigentlich würde ich das anders definieren, das sieht umständlich aus. Du kannst doch alles in eine Bedingung für on packen?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Morgennebel

Zitat von: Damian am 15 April 2019, 13:01:57
[06:30-06:06|WE] bedeutet: wahr am Wochenende von 06:30 Uhr bis morgen um 06:06, die Zeiten triggern weiterhin

Ja, wenn ich sunrise() nehme stimme ich Dir zu, 06:30 ist für heute und 06:06 wäre dann für morgen.

Das DOIF verwendet aber sunrise_abs(), d.h. ich habe [06:30-06:06|WE] und beide Zeiten für heute:


timer_03_c02   16.04.2019 06:30:00|WE   2019-04-15 09:11:12
timer_04_c02   16.04.2019 06:06:38|WE   2019-04-15 09:11:12


zeigen ja auch den 16.4.2019 für timer 03 und timer 04...?

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Morgennebel

Zitat von: Otto123 am 15 April 2019, 14:05:47
([06:30-{sunrise_abs(+1200,"6:31","12:15")}|WE])

Da geht das Licht dann für eine Minute an. Das ist ... suboptimal... und nicht sehr Smart...

Danke, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Damian

Zitat von: Morgennebel am 15 April 2019, 14:54:25
Da geht das Licht dann für eine Minute an. Das ist ... suboptimal... und nicht sehr Smart...

Danke, -MN

Ich meine, wenn beide Zeiten übereinstimmen dann passiert nichts.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Zitat von: Damian am 15 April 2019, 16:26:09
Ich meine,...
Oh Damian, ich hätte es etwas genauer erwartet :)
@ MN, Das ist nicht die Zeit für morgen, das ist die Zeit für heute. Aber es ist einfach eine Zeit 06:06
Und DOIF ist so gut und rechnet über Mitternacht hinweg. Also von 6:30 bis zum nächsten Tag 6:06.
Deswegen musst Du die Zeit für Sunrise nicht "kleiner" werden lassen als 6:30.
Ich weiß eine Minute Licht -> suboptimal - merkt aber keiner :)

Vielleicht ist es so wie Damian sagt, ich habe mir das bisher nicht getraut. ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

Zitat von: Otto123 am 15 April 2019, 18:31:44
Oh Damian, ich hätte es etwas genauer erwartet :)
@ MN, Das ist nicht die Zeit für morgen, das ist die Zeit für heute. Aber es ist einfach eine Zeit 06:06
Und DOIF ist so gut und rechnet über Mitternacht hinweg. Also von 6:30 bis zum nächsten Tag 6:06.
Deswegen musst Du die Zeit für Sunrise nicht "kleiner" werden lassen als 6:30.
Ich weiß eine Minute Licht -> suboptimal - merkt aber keiner :)

Vielleicht ist es so wie Damian sagt, ich habe mir das bisher nicht getraut. ;)

Gruß Otto

Was ich meine ist:

([06:30-{sunrise_abs(+1200,"6:30","12:15")}|WE])

Damit triggert das Intervall [06:30-06:30]|WE um 06:30 Uhr ein mal , ist aber nicht wahr.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Morgennebel

Danke an Alle,


ich habe es umgebaut und schaue, ob ich morgen früh genug aufwache (Schulferien sei Dank).

Ciao, -MN
Einziger Spender an FHEM e.V. mit Dauerauftrag seit >= 24 Monaten

FHEM: MacMini/ESXi, 2-3 FHEM Instanzen produktiv
In-Use: STELLMOTOR, VALVES, PWM-PWMR, Xiaomi, Allergy, Proplanta, UWZ, MQTT,  Homematic, Luftsensor.info, ESP8266, ESERA

Otto123

@ Damian, ja war mir klar :)
Ich meine - klang etwas unsicher ;) deswegen hab ich es mir nie getraut.
Ok, ich probier das auch aus.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

Mein Vorschlag, alles in einer Bedingung:
([05:30-{sunrise_abs(+1200,"5:30","10:00")}|AT] or
[06:30-{sunrise_abs(+1200,"6:30","10:00")}|WE] or
[{sunset_abs(-2100)}-21:45|SoMoDiMiDo] or
[{sunset_abs(-2100)}-22:30|MWEFrSa])
(setreading $SELF OutDoorLight on) DOELSE (setreading $SELF OutDoorLight off) 


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz