DOIF reagiert verzögert auf schalten von devstateicon und aktualisiert nicht (visuel

Begonnen von holle75, 01 März 2026, 16:59:17

Vorheriges Thema - Nächstes Thema

Damian

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

satprofi

DOELSE ist doch cmd2 , oder nicht ?

Das schaltet, wenn present und keine der beiden Geräte on ist.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

mit   

wait       0:5,300
willst du cmd2 verzögern

gepostet hast du aber:

2026-05-27 11:25:06   Device          Bewohner
     2026-05-27 10:45:04   cmd             1
     2026-05-27 10:45:04   cmd_event       Bewohner
     2026-05-27 10:45:04   cmd_nr          1
     2026-05-27 11:25:06   e_Bewohner_STATE present
     2026-05-27 11:25:06   e_Quadbox_STATE off
     2026-05-27 10:44:48   mode            enabled
     2026-05-27 10:45:04   state           cmd_1

Will soll man damit ein Fehlverhalten erkennen?


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

satprofi

Ich hab ja nur list gepostet. Da steht dich alles drinn, oder ? Warum klappt es nicht mehr ? Habe nur das Script eingefügt, das die restlichen Lampen abdreht. Seitdem gibt's keine Verzögerung mehr
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Per

Du musst List kopieren, wenn cmd2 ausgeführt wurde, jetzt zeigt es dir die Variablen und Timer von cmd1 an. Das hilft nicht weiter.

satprofi

habe es jetzt anders gelöst, tuya kann man mit internen timer schalten, ich machs jetzt so.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

satprofi

hier noch das list von cmd2
DEF        (([Bewohner] eq "present" and ([08:00-21:00] or [20:00])) or (([Quadbox] eq "on" or [VSX1131:stateAV] eq "on") and [19:00-08:00]) or [FS20_7010f0] eq "on") (set tuya_smartlife_bffee61d5656c19f0e6zas on)
DOELSE (({anwesend_off}) , (set tuya_smartlife_bfb727311ed41a0cc8ycsq countdown_usb1 300))
   FUUID      65cf39e1-f33f-3579-8889-597fdac1da3b48f3
   FVERSION   98_DOIF.pm:0.277400/2023-07-10
   MODEL      FHEM
   NAME       Anwesend
   NOTIFYDEV  global,Bewohner,Quadbox,FS20_7010f0,VSX1131
   NR         489
   NTFY_ORDER 50-Anwesend
   STATE      cmd_2
   TYPE       DOIF
   VERSION    27740 2023-07-10 09:31:11
   eventCount 89
   READINGS:
     2026-05-27 23:19:24   Device          Bewohner
     2026-05-27 23:19:19   cmd             2
     2026-05-27 23:19:19   cmd_event       Quadbox
     2026-05-27 23:19:19   cmd_nr          2
     2026-05-27 23:19:24   e_Bewohner_STATE present
     2026-05-27 23:19:12   e_Quadbox_STATE off
     2026-05-27 23:18:32   e_VSX1131_stateAV off
     2026-05-27 10:44:48   mode            enabled
     2026-05-27 23:19:19   state           cmd_2
     2026-05-27 21:00:00   timer_01_c01    28.05.2026 08:00:00
     2026-05-27 21:00:00   timer_02_c01    28.05.2026 21:00:00
     2026-05-27 20:00:05   timer_03_c01    28.05.2026 20:00:00
     2026-05-27 10:44:48   timer_04_c01    27.05.2026 19:00:00
     2026-05-27 10:44:48   timer_05_c01    28.05.2026 08:00:00
     2026-05-27 23:19:16   wait_timer      no timer
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       Bewohner:
         0:
           &STATE     ^Bewohner$
       FS20_7010f0:
         0:
           &STATE     ^FS20_7010f0$
       Quadbox:
         0:
           &STATE     ^Quadbox$
       VSX1131:
         0:
           stateAV    ^VSX1131$:^stateAV:
   attr:
     cmdState:
     wait:
       0:
         0
       1:
         5
         0
     waitdel:
   condition:
     0          (::InternalDoIf($hash,'Bewohner','STATE') eq "present" and (::DOIF_time($hash,0,1,$wday,$hms) or ::DOIF_time_once($hash,2,$wday))) or ((::InternalDoIf($hash,'Quadbox','STATE') eq "on" or ::ReadingValDoIf($hash,'VSX1131','stateAV') eq "on") and ::DOIF_time($hash,3,4,$wday,$hms)) or ::InternalDoIf($hash,'FS20_7010f0','STATE') eq "on"
   days:
   devices:
   do:
     0:
       0          set tuya_smartlife_bffee61d5656c19f0e6zas on
     1:
       0          ({anwesend_off}) , (set tuya_smartlife_bfb727311ed41a0cc8ycsq countdown_usb1 300)
   helper:
     NOTIFYDEV  global,Bewohner,Quadbox,FS20_7010f0,VSX1131
     event      present
     globalinit 1
     last_timer 5
     sleepdevice Quadbox
     sleepsubtimer -1
     sleeptimer -1
     timerdev   Bewohner
     timerevent present
     triggerDev Bewohner
     timerevents:
       present
     timereventsState:
       state: present
     triggerEvents:
       present
     triggerEventsState:
       state: present
   internals:
     all         Bewohner:STATE Quadbox:STATE FS20_7010f0:STATE
   interval:
     0          -1
     1          0
     3          -1
     4          3
   intervalfunc:
   intervaltimer:
   localtime:
     0          1779948000
     1          1779994800
     2          1779991200
     3          1779901200
     4          1779948000
   readings:
     all         VSX1131:stateAV
   realtime:
     0          08:00:00
     1          21:00:00
     2          20:00:00
     3          19:00:00
     4          08:00:00
   time:
     0          08:00:00
     1          21:00:00
     2          20:00:00
     3          19:00:00
     4          08:00:00
   timeCond:
     0          0
     1          0
     2          0
     3          0
     4          0
   timer:
     0          0
     1          0
     2          0
     3          0
     4          0
   timers:
     0           0  1  2  3  4
   trigger:
   triggertime:
     1779948000:
       localtime  1779948000
       hash:
     1779991200:
       localtime  1779991200
       hash:
     1779994800:
       localtime  1779994800
       hash:
   uiState:
   uiTable:
Attributes:
   group      Beleuchtung
   room       DOIF
   wait       0:5,0

kann keine Verzögerung erkennen, kein waittimer
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Per

Ob das eine Ursache ist, kann ich nicht beurteilen, aber du hast im wait für cmd2 zwei Zeiten vorgesehen, hast aber durch die Klammer nur einen Part. Nimm mal das ",0" weg

Damian

Man kann sehen, dass wait-timer aktiv war und um 23:19:16 beendet wurde:

2026-05-27 23:19:16   wait_timer      no timer
Wäre wait nicht im Einsatz, gäbe es dieses Reading nicht.

Der erste Befehl von cmd2 wird um 5 Sekunden verzögert, der zweite - nach deiner aktuellen Definition - nicht.

Ebenfalls sind keine Events zu sehen, die mit der Schaltzeit übereinstimmen:

     2026-05-27 23:19:19   cmd_nr          2
     2026-05-27 23:19:24   e_Bewohner_STATE present
     2026-05-27 23:19:12   e_Quadbox_STATE off
     2026-05-27 23:18:32   e_VSX1131_stateAV off

Fünf Sekunden Verzögerung sind eine kurze Zeitspanne. Du kannst sie zum testen erhöhen, den Auslöser für cmd2 provozieren und schauen, ob das Reading für den waittimer korrekt gesetzt wird.

Edit:

Wenn du mehrere Sequenzen haben willst, die du einzeln verzögern willst, dann musst du auch die korrekte Syntax befolgen:

statt: DOELSE (({anwesend_off}) , (set tuya_smartlife_bfb727311ed41a0cc8ycsq countdown_usb1 300))
DOELSE ({anwesend_off})(set tuya_smartlife_bfb727311ed41a0cc8ycsq countdown_usb1 300)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

satprofi

ZitatOb das eine Ursache ist, kann ich nicht beurteilen, aber du hast im wait für cmd2 zwei Zeiten vorgesehen, hast aber durch die Klammer nur einen Part. Nimm mal das ",0" weg

die 0 steht ja für cmd1, oder?

ZitatFünf Sekunden Verzögerung sind eine kurze Zeitspanne.

ich hatte den 2. immer auf 300 , aber seit änderung des DOELSE wurde das ignoriert. Und die 5 sekunden sollten doch bemerkbar sein.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Damian

  wait       0:5,0
bedeutet:

 0 für cmd1
 5 für die erste Sequenz von cmd2
 0 für die zweite Sequenz von cmd2

Wenn man die Sequenzen richtig definiert hätte:

DOELSE ({anwesend_off})(set tuya_smartlife_bfb727311ed41a0cc8ycsq countdown_usb1 300)

PS.

Eigentlich solltest du ein alter Hase sein, was die Nutzung des Moduls angeht ;)

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