Autor Thema: doif wird nur einmal ausgeführt  (Gelesen 697 mal)

Offline simon_eifel

  • New Member
  • *
  • Beiträge: 4
doif wird nur einmal ausgeführt
« 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 ?

Offline slor

  • Sr. Member
  • ****
  • Beiträge: 756
Antw:doif wird nur einmal ausgeführt
« Antwort #1 am: 13 Juni 2021, 10:44:57 »
Do always gesetzt?
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
FS20, HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, Bluetooth Anwesenheitserkennung mit Handys, HomeConnect

Offline simon_eifel

  • New Member
  • *
  • Beiträge: 4
Antw:doif wird nur einmal ausgeführt
« Antwort #2 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

Offline slor

  • Sr. Member
  • ****
  • Beiträge: 756
Antw:doif wird nur einmal ausgeführt
« Antwort #3 am: 13 Juni 2021, 11:00:58 »
Nutze bitte Code Tags.

Ansonsten einfach mal DOELSE ()
Fhem auf Raspberry Pi 4
CCU3 mit RaspberryMatic mit HMCCU an FHEM
FS20, HMCCU, Telegram, Conbee2 und Hue/Tradfri/Osram Lampen AQARA Sensoren, Bluetooth Anwesenheitserkennung mit Handys, HomeConnect

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19530
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:doif wird nur einmal ausgeführt
« Antwort #4 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
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline simon_eifel

  • New Member
  • *
  • Beiträge: 4
Antw:doif wird nur einmal ausgeführt
« Antwort #5 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

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19530
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:doif wird nur einmal ausgeführt
« Antwort #6 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 :)
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline simon_eifel

  • New Member
  • *
  • Beiträge: 4
Antw:doif wird nur einmal ausgeführt
« Antwort #7 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

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19530
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:doif wird nur einmal ausgeführt
« Antwort #8 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
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline McShire

  • Full Member
  • ***
  • Beiträge: 194
Antw:doif wird nur einmal ausgeführt
« Antwort #9 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

 

decade-submarginal