FHEM Forum

FHEM - Anwendungen => Beleuchtung => Thema gestartet von: simon_eifel am 13 Juni 2021, 10:39:03

Titel: doif wird nur einmal ausgeführt
Beitrag von: simon_eifel am 13 Juni 2021, 10:39:03
Guten morgen zusammen,
vielleicht kann mir jemand helfen.
Bin gerade mein FHEM am ersteinrichten und stoße nun an meine grenze :-(

Folgendes Problem

habe ein Flurlicht welches ich täglich von 05:55 bis 06:05 einschalten würde.
Das ganze funktioniert auch schon, jedoch bekomme ich es nicht hin das es am zweitem Tag auch passiert.
der Status bleibt dann beim zweiten Ausführungsteil hängen, selbst wenn ich ihn im zweitem Ausführungsteil wieder auf initialized setze.

Hier kurz der Code :

([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Licht_gehen_06 initialized)

Habe ich hier einen Denkfehler ?
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: slor am 13 Juni 2021, 10:44:57
Do always gesetzt?
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: simon_eifel am 13 Juni 2021, 10:56:07
ja das attr habe ich gesetzt,
aber er bleibt immer beim cmd_2 hängen.
müsste das doif nicht dann wieder auf initialized springen?




defmod Licht_gehen_06 DOIF ([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Licht_gehen_06 initialized)
attr Licht_gehen_06 do always
attr Licht_gehen_06 group Steuerung
attr Licht_gehen_06 room Tradfri
attr Licht_gehen_06 selftrigger all

setstate Licht_gehen_06 initialized
setstate Licht_gehen_06 2021-06-13 10:51:48 cmd 0
setstate Licht_gehen_06 2021-06-13 10:51:48 mode enabled
setstate Licht_gehen_06 2021-06-13 10:51:48 state initialized
setstate Licht_gehen_06 2021-06-13 10:51:48 timer_01_c01 14.06.2021 05:55:00
setstate Licht_gehen_06 2021-06-13 10:51:48 timer_02_c01 14.06.2021 06:05:00
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: slor am 13 Juni 2021, 11:00:58
Nutze bitte Code Tags.

Ansonsten einfach mal DOELSE ()
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: Otto123 am 13 Juni 2021, 11:01:26
Hi,

bitte poste ein komplettes list des DOIF in Codetags.
https://forum.fhem.de/index.php/topic,71806.0.html
Du willst das das Licht wieder ausgeht?
defmod Licht_gehen_06 DOIF ([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Flur_unten_L off)

Gruß Otto
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: simon_eifel am 13 Juni 2021, 11:05:00
das Licht geht wieder automatisch aus, jedoch habe ich festgestellt das es am nächstem morgen nicht wieder angeht, das doif also nicht erneut gestartet initialisiert wird.


Internals:
   DEF        ([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Licht_gehen_06 initialized)
   FUUID      60c2eafb-f33f-d904-ce37-ad6ff1655ea5c5b6
   MODEL      FHEM
   NAME       Licht_gehen_06
   NOTIFYDEV  global
   NR         59
   NTFY_ORDER 50-Licht_gehen_06
   STATE      initialized
   TYPE       DOIF
   VERSION    24519 2021-05-27 17:06:34
   READINGS:
     2021-06-13 10:51:48   cmd             0
     2021-06-13 10:51:48   mode            enabled
     2021-06-13 10:51:48   state           initialized
     2021-06-13 10:51:48   timer_01_c01    14.06.2021 05:55:00
     2021-06-13 10:51:48   timer_02_c01    14.06.2021 06:05:00
   Regex:
     accu:
     collect:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms)
   days:
   devices:
   do:
     0:
       0          set Flur_unten_L on
     1:
       0          set Licht_gehen_06 initialized
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 2
     sleeptimer -1
   interval:
     0          -1
     1          0
   intervalfunc:
   localtime:
     0          1623642900
     1          1623643500
   realtime:
     0          05:55:00
     1          06:05:00
   time:
     0          05:55:00
     1          06:05:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   triggertime:
     1623642900:
       localtime  1623642900
       hash:
     1623643500:
       localtime  1623643500
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
   group      Steuerung
   room       Tradfri
   selftrigger all
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: Otto123 am 13 Juni 2021, 11:24:55
Den DOELSE Zweig halte ich für nicht notwendig, lass den einfach weg.
Auch das attribute selftrigger all ist nicht notwendig.

Allerdings musst Du wissen warum das Licht wieder ausgeht, dieses DOIF ist nicht dafür zuständig :)
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: simon_eifel am 13 Juni 2021, 11:35:22
mit dem doif schalte ich doch den status des Devices Flur_unten_L zwischen 05:55 und 06:05 auf on und sonst auf off.
wie kann ich das denn anders lösen ?


Internals:
   DEF        Licht_gehen_06 DOIF ([05:55-06:05]) (set Flur_unten_L on) DOELSE (set Flur_unten_L off)

   FUUID      60c2eafb-f33f-d904-ce37-ad6ff1655ea5c5b6
   MODEL      Perl
   NAME       Licht_gehen_06
   NOTIFYDEV  global
   NR         59
   NTFY_ORDER 50-Licht_gehen_06
   STATE      initialized
   TYPE       DOIF
   VERSION    24519 2021-05-27 17:06:34
   READINGS:
     2021-06-13 11:25:36   mode            enabled
     2021-06-13 11:25:36   state           initialized
   Regex:
     accu:
     collect:
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
   devices:
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     globalinit 1
     last_timer 0
     sleeptimer -1
   perlblock:
   uiState:
   uiTable:
Attributes:
   do         always
   group      Steuerung
   room       Tradfri



wie gesagt bin am Anfang das ganze erst zu verstehen
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: Otto123 am 13 Juni 2021, 18:00:08
Von der DEF her würde ich sagen: Jetzt ja, das Ding sollte 05:55 an gehen und 6:05 wieder aus. Allerdings ist da was faul.
Ich sehe keine Timer!?
MODEL steht auf Perl!?

So sieht ein schneller nachbau bei mir aus:
Internals:
   CFGFN     
   DEF        ([17:59-18:00])(set SD3 on) DOELSE (set SD3 off)
   FUUID      60c62b00-f33f-520c-5edf-ff1e667d402b6eed
   MODEL      FHEM
   NAME       d_sd3
   NOTIFYDEV  global
   NR         273878
   NTFY_ORDER 50-d_sd3
   STATE      cmd_1
   TYPE       DOIF
   VERSION    24195 2021-04-08 21:50:20
   READINGS:
     2021-06-13 17:59:00   cmd             1
     2021-06-13 17:59:00   cmd_event       timer_1
     2021-06-13 17:59:00   cmd_nr          1
     2021-06-13 17:57:52   mode            enabled
     2021-06-13 17:59:00   state           cmd_1
     2021-06-13 17:57:52   timer_01_c01    13.06.2021 17:59:00
     2021-06-13 17:57:52   timer_02_c01    13.06.2021 18:00:00
   Regex:
     accu:
     collect:
   attr:
     cmdState:
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms)
   days:
   do:
     0:
       0          set SD3 on
     1:
       0          set SD3 off
   helper:
     DEVFILTER  ^global$
     NOTIFYDEV  global
     event      timer_1
     globalinit 1
     last_timer 2
     sleeptimer -1
     timerdev   
     timerevent timer_1
     triggerDev
     timerevents:
       timer_1
     timereventsState:
       timer_1
     triggerEvents:
       timer_1
     triggerEventsState:
       timer_1
   interval:
     0          -1
     1          0
   intervalfunc:
   intervaltimer:
   localtime:
     0          1623599940
     1          1623600000
   realtime:
     0          17:59:00
     1          18:00:00
   time:
     0          17:59:00
     1          18:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   triggertime:
     1623600000:
       localtime  1623600000
       hash:
   uiState:
   uiTable:
Attributes:
   do         always
Titel: Antw:doif wird nur einmal ausgeführt
Beitrag von: McShire am 14 Juni 2021, 04:08:40
Das DOIF schaltet das Licht nur ein, und zwar am Anfang der Zeitspanne.
Probier es mal so, dann geht es jeden Tag um 5:55 an und um 6:05 aus.

([05:55]) (set Flur_unten_L on) DOELSEIF ([06:05]) (set Flur_unten_L off)

da braucht man auch kein always oder andere attr

Gruß
Werner