DOIF timer wird zweimal getriggered nach update -> neue DOIF-Version

Begonnen von kurtix, 03 April 2018, 18:05:05

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Ellert am 09 April 2018, 07:38:15
Heute Morgen wurde der Rolladen nicht geöffnet, mit # $Id: 98_DOIF.pm v0.1 Damian $ und nach FHEM Restart..

set cmd_2 hat funktioniert. Events habe ich nicht aufgezeichnet.

Mit diesem DOIF:
(["^sleeping_di$:^cmd_1$"] or [23:15]) (set HM_56F3E3 off)
DOELSEIF ([{sunrise(0,"06:30","08:00")}] or ["^sleeping_di$:^(cmd_2|cmd_3)$"]) (set HM_56F3E3 on)
## RolloFlur_di


Es gibt weitere DOIF mit sunrise/sunset, die nicht funktioniert haben, die sind komplexer.

Hier das Listing
Internals:
   DEF        (["^sleeping_di$:^cmd_1$"] or [23:15]) (set HM_56F3E3 off)
DOELSEIF ([{sunrise(0,"06:30","08:00")}] or ["^sleeping_di$:^(cmd_2|cmd_3)$"]) (set HM_56F3E3 on)
## RolloFlur_di
   MODEL      FHEM
   NAME       RolloArb_di
   NR         415
   NTFY_ORDER 50-RolloArb_di
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-04-08 23:28:18   Device          sleeping_di
     2018-04-09 07:28:40   cmd             2
     2018-04-09 07:28:40   cmd_event       set_cmd_2
     2018-04-09 07:28:40   cmd_nr          2
     2018-01-11 06:27:36   mode            enabled
     2018-04-09 07:28:40   state           cmd_2
     2018-04-08 23:15:00   timer_01_c01    09.04.2018 23:15:00
     2018-04-08 06:30:00   timer_02_c02    10.04.2018 06:30:00
   Regex:
     cond:
       :
         0:
           "^sleeping_di$:^cmd_1$" ^sleeping_di$:^cmd_1$
         1:
           "^sleeping_di$:^(cmd_2|cmd_3)$" ^sleeping_di$:^(cmd_2|cmd_3)$
   condition:
     0          EventDoIf('^sleeping_di$',$hash,'^cmd_1$',0) or DOIF_time_once($hash,0,$wday)
     1          DOIF_time_once($hash,1,$wday) or EventDoIf('^sleeping_di$',$hash,'^(cmd_2|cmd_3)$',0)
   days:
   devices:
   do:
     0:
       0          set HM_56F3E3 off
     1:
       0          set HM_56F3E3 on
     2:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      cmd_1
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   sleeping_di
     timerevent cmd_1
     triggerDev sleeping_di
     timerevents:
       cmd_nr: 1
       cmd: 1
       cmd_event: timer_1
       cmd_1
     timereventsState:
       cmd_nr: 1
       cmd: 1
       cmd_event: timer_1
       state: cmd_1
     triggerEvents:
       cmd_nr: 1
       cmd: 1
       cmd_event: timer_1
       cmd_1
     triggerEventsState:
       cmd_nr: 1
       cmd: 1
       cmd_event: timer_1
       state: cmd_1
   internals:
   interval:
   itimer:
   localtime:
     0          1523308500
     1          1523334600
   perlblock:
   readings:
   realtime:
     0          23:15:00
     1          06:30:00
   time:
     0          23:15:00
     1          {sunrise(0,"06:30","08:00")}
   timeCond:
     0          0
     1          1
   timer:
     0          0
     1          0
   timers:
     0           0
     1           1
   trigger:
   triggertime:
     1523308500:
       localtime  1523308500
       hash:
     1523334600:
       localtime  1523334600
       hash:
   uiState:
   uiTable:
Attributes:
   alias      00_Rolladen_Arbz
   group      Rolladen
   icon       helper_doif
   room       1_Rolladen


ok, sollte jetzt mit Version v0.2 funktionieren
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Mit v0.2 hat sunset/sunrise bisher wieder funktioniert, es kann aber sein, dass der ursprüngliche Fehler erst beim 2. Mal aufgetreten ist, ich werde es weiter beobachten.

Damian

Zitat von: Ellert am 10 April 2018, 12:53:13
Mit v0.2 hat sunset/sunrise bisher wieder funktioniert, es kann aber sein, dass der ursprüngliche Fehler erst beim 2. Mal aufgetreten ist, ich werde es weiter beobachten.
Das wird nicht passieren. Du kannst gerne noch testen, aber der Fehler war eindeutig zu finden, ich habe die falsche Variable abgefragt, damit wurden auch alle Zeiten um einen Tag geschoben, die über 24h haben, wie z. B. sunset und sunrise.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Nicht soo schnell ;)

Das folgende DOIF schaltet nicht mehr stündlich 7 Minuten nach, sondern nur noch einmal am Tag um 1 Uhr 7.

([+[1]:07]) ({BenzinPreise})

und das Listing

ZitatInternals:
   DEF        ([+[1]:07]) ({BenzinPreise})
## duBenzin
   MODEL      FHEM
   NAME       Benzin_di
   NR         213
   NTFY_ORDER 50-Benzin_di
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2018-04-16 00:07:00   cmd             1
     2018-04-16 00:07:00   cmd_event       timer_1
     2018-04-16 00:07:00   cmd_nr          1
     2018-04-16 00:07:00   state           cmd_1
     2018-04-16 00:07:00   timer_01_c01    17.04.2018 01:07:00
   Regex:
   condition:
     0          DOIF_time_once($hash,0,$wday)
   days:
   devices:
   do:
     0:
       0          {BenzinPreise}
     1:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      timer_1
     globalinit 1
     last_timer 1
     sleeptimer -1
     timerdev   
     timerevent timer_1
     timereventsState
     triggerDev
     timerevents:
       timer_1
     triggerEvents:
       timer_1
   internals:
   interval:
   itimer:
   localtime:
     0          1523920020
   perlblock:
   readings:
   realtime:
     0          01:07:00
   time:
     0          +[1]:07
   timeCond:
     0          0
   timer:
     0          0
   timers:
     0           0
   triggertime:
     1523920020:
       localtime  1523920020
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   group      5_Benzin
   icon       helper_doif
   room       1_Alles

Damian

Zitat von: Ellert am 16 April 2018, 16:05:37
Nicht soo schnell ;)

Das folgende DOIF schaltet nicht mehr stündlich 7 Minuten nach, sondern nur noch einmal am Tag um 1 Uhr 7.

([+[1]:07]) ({BenzinPreise})

und das Listing

Fehler war auch diesmal eindeutig und damit leicht zu finden.

Version v.03

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Ich habe noch bei fehlender DOIF-Definition, ## als Definition eingestellt.

damit entspricht

define test DOIF


define test DOIF ##


Damit gibt es jetzt bei fehlenden Definitionen den DEF-Button. ## ist zudem ein harmloser Kommentar, den ich intern nicht abfangen muss, weil er eine erlaubte Definition darstellt.

v.04
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Ellert

Zitat von: Damian am 16 April 2018, 18:09:13
Fehler war auch diesmal eindeutig und damit leicht zu finden.

Version v.03

Es funktioniert wieder, bisher sind mir keine weiteren Abweichungen aufgefallen.

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF