[Gelöst] DOIF will nicht so wie ich es will . . . . .

Begonnen von DJ-Mix, 17 Dezember 2018, 16:46:38

Vorheriges Thema - Nächstes Thema

DJ-Mix

Hallo zusammen,

verstehe leider nicht wo mein Fehler liegt, jedoch schaltet das DOIF nicht zu den gewünschten Zeiten. Schalte ich es manuell ein, bleibt
es einfach eingeschaltet.
Internals:
   DEF        ([05:20-07:50|AT] and [{sunset(-1500,"16:00","19:00")}]) (set HM_22A35C on) DOELSEIF ([21:50]) (set HM_22A35C off)
   MODEL      FHEM
   NAME       LAMP_FRONT_OUT
   NR         293
   NTFY_ORDER 50-LAMP_FRONT_OUT
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-12-17 07:33:50   cmd             1
     2018-12-17 07:33:50   cmd_event       set_cmd_1
     2018-12-17 07:33:50   cmd_nr          1
     2018-12-15 22:28:07   mode            enabled
     2018-12-17 07:33:50   state           cmd_1
     2018-12-17 07:50:00   timer_01_c01    18.12.2018 05:20:00|AT
     2018-12-17 07:50:00   timer_02_c01    18.12.2018 07:50:00|AT
     2018-12-17 16:42:18   timer_03_c01    18.12.2018 16:42:35
     2018-12-16 21:50:00   timer_04_c02    17.12.2018 21:50:00
   Regex:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms,"AT") and ::DOIF_time_once($hash,2,$wday)
     1          ::DOIF_time_once($hash,3,$wday)
   days:
     0          AT
     1          AT
   devices:
   do:
     0:
       0          set HM_22A35C on
     1:
       0          set HM_22A35C off
     2:
   helper:
     event      timer_3
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   
     timerevent timer_4
     timereventsState
     triggerDev
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: set_cmd_1
       state: cmd_1
     timerevents:
       timer_4
     triggerEvents:
       timer_3
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1545106800
     1          1545115800
     2          1545147755
     3          1545079800
   perlblock:
   readings:
   realtime:
     0          05:20:00
     1          07:50:00
     2          16:42:35
     3          21:50:00
   time:
     0          05:20:00
     1          07:50:00
     2          {sunset(-1500,"16:00","19:00")}
     3          21:50:00
   timeCond:
     0          0
     1          0
     2          0
     3          1
   timer:
     0          0
     1          0
     2          0
     3          0
   timers:
     0           0  1  2
     1           3
   triggertime:
     1545079800:
       localtime  1545079800
       hash:
     1545106800:
       localtime  1545106800
       hash:
     1545115800:
       localtime  1545115800
       hash:
     1545147755:
       localtime  1545147755
       hash:
   uiState:
   uiTable:
Attributes:
   checkReadingEvent 0
   do         always
   room       CONTROL-ROOM


Leider sehe ich den Wald vor lauter Bäumen nicht.

Hier noch ein weiteres, welches nicht funktioniert.
Internals:
   DEF        ([22:00-08:00] and [Nachttischlampe] eq "on") (set Nachttischlampe off)
   MODEL      FHEM
   NAME       NACHTTISCHLAMPE.TIMER
   NR         252
   NTFY_ORDER 50-NACHTTISCHLAMPE.TIMER
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-12-16 23:47:54   Device          Nachttischlampe
     2018-12-15 22:54:56   cmd             1
     2018-12-15 22:54:56   cmd_event       Nachttischlampe
     2018-12-15 22:54:56   cmd_nr          1
     2018-12-16 23:47:54   e_Nachttischlampe_STATE OFF
     2018-12-04 14:41:55   mode            enabled
     2018-12-15 22:54:56   state           cmd_1
     2018-12-17 08:00:00   timer_01_c01    17.12.2018 22:00:00
     2018-12-17 08:00:00   timer_02_c01    18.12.2018 08:00:00
     2018-12-15 22:54:56   wait_timer      no timer
   Regex:
   attr:
     wait:
       0:
         1800
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms) and ::InternalDoIf($hash,'Nachttischlampe','STATE') eq "on"
   days:
   devices:
     0           Nachttischlampe
     all         Nachttischlampe
   do:
     0:
       0          set Nachttischlampe off
     1:
   helper:
     event      timer_2
     globalinit 1
     last_timer 2
     sleeptimer -1
     triggerDev
     triggerEvents:
       timer_2
     triggerEventsState:
       state: OFF
   internals:
     0           Nachttischlampe:STATE
     all         Nachttischlampe:STATE
   interval:
     0          -1
     1          0
   intervalfunc:
   intervaltimer:
   itimer:
   localtime:
     0          1545080400
     1          1545116400
   perlblock:
   readings:
   realtime:
     0          22:00:00
     1          08:00:00
   time:
     0          22:00:00
     1          08:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1545080400:
       localtime  1545080400
       hash:
     1545116400:
       localtime  1545116400
       hash:
   uiState:
   uiTable:
Attributes:
   checkReadingEvent 0
   do         always
   group      LIGHT
   room       CONTROL-ROOM
   wait       1800



VG
DJ-Mix

Damian

Wie soll denn ein Zeitintervall von 05:20 und 7:50 und ein Zeittrigger zwischen 16:00 und 19:00 Uhr gleichzeitig jemals wahr sein.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

DJ-Mix

Ok, hast Recht Damian. Aber mit "or" funktioniert es leider auch nicht. Hatte es zu Test Zwecken mit "and" versucht (völlig banal von mir ich weiß)

Damian

Zitat von: DJ-Mix am 17 Dezember 2018, 17:50:13
Ok, hast Recht Damian. Aber mit "or" funktioniert es leider auch nicht. Hatte es zu Test Zwecken mit "and" versucht (völlig banal von mir ich weiß)
or wäre aber korrekt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Zu Beispiel 2:
Irgend etwas hat geschaltet
Zitat2018-12-15 22:54:56   state           cmd_1
Hast Du den Vergleichswert für richtig geschrieben? ON oder on? weil
Zitate_Nachttischlampe_STATE OFF
Es gibt ein Attribut timerWithWait.

DJ-Mix

Hallo Ellert,

da habe ich das Attribut  timerWithWait nicht mitbekommen  ???
Habe es nun gesetzt und es scheint zu funktionieren.

Vielen Dank

DJ-Mix

Habe mein erstes DOIF auch umgestellt. Sollte nun (hoffe) funktionieren.

([05:20-07:50|AT] or [{sunset(-1500,"16:00","19:30")}-21:50]) (set HM_22A35C on) DOELSE (set HM_22A35C off)


VG
DJ-Mix

Ellert

Zitat von: DJ-Mix am 18 Dezember 2018, 08:19:28
Habe mein erstes DOIF auch umgestellt. Sollte nun (hoffe) funktionieren.

([05:20-07:50|AT] or [{sunset(-1500,"16:00","19:30")}-21:50]) (set HM_22A35C on) DOELSE (set HM_22A35C off)


VG
DJ-Mix
Gibt's da ein Attribut wait?