Doif dauerhafte Wiederholung/ Doelseif nur 1x

Begonnen von Sedonion, 23 Mai 2022, 14:22:28

Vorheriges Thema - Nächstes Thema

Sedonion

Hallo zusammen,

ich habe erfolgreich einen Doif laufen, der zwei sets hat.
Einer sofort, einer nach 60 Minuten und beide wiederholen sich bis sich der Status ändert.

Nun wollte ich noch einen doeleseif definieren, allerdings ohne wait und nur 1x ausführen.
Leider wird der repeatcmd auch für cmd_2 angewendet.

Wie kann ich das verhindern oder umgehen?
Internals:
   DEF        ([MQTT2_zigbee_Rasihaus:"open"]) (set AlleechosFHEM speak "Achtung!! Rasi ist unterwegs!")({DebianMail('xxx@web.de','Achtung!! Rasi ist unterwegs!!','Achtung!! Rasi ist unterwegs!')}) DOELSEIF ([MQTT2_zigbee_Rasihaus:"close"]) (set AlleechosFHEM speak "Achtung!! Rasi ist wieder zuhause!")
   FUUID      62751abd-f33f-5a77-d8ac-aede930c71b9e79c
   MODEL      FHEM
   NAME       di_Rasi_unterwegs
   NOTIFYDEV  MQTT2_zigbee_Rasihaus,global
   NR         215
   NTFY_ORDER 50-di_Rasi_unterwegs
   STATE      cmd_2
   TYPE       DOIF
   VERSION    26020 2022-05-03 16:28:02
   READINGS:
     2022-05-23 13:38:08   Device          MQTT2_zigbee_Rasihaus
     2022-05-23 14:14:14   cmd             2
     2022-05-23 14:14:14   cmd_event       set_cmd_2
     2022-05-23 14:14:14   cmd_nr          2
     2022-05-23 13:38:08   e_MQTT2_zigbee_Rasihaus_events close,linkquality: 45,voltage: 2985,battery: 99,last_seen: 2022-05-23T13:38:07+02:00,temperature: 28
     2022-05-23 14:13:59   mode            enabled
     2022-05-23 14:14:14   state           cmd_2
     2022-05-23 14:14:14   wait_timer      23.05.2022 15:14:14 cmd_2 set_cmd_2
   Regex:
     accu:
     collect:
     cond:
       MQTT2_zigbee_Rasihaus:
         0:
           &STATE     ^MQTT2_zigbee_Rasihaus$
         1:
           &STATE     ^MQTT2_zigbee_Rasihaus$
   attr:
     cmdState:
     repeatcmd:
       3600
       3600
     repeatsame:
     wait:
       0:
         1
         3600
     waitdel:
   condition:
     0          ::EventDoIf('MQTT2_zigbee_Rasihaus',$hash,'open',1)
     1          ::EventDoIf('MQTT2_zigbee_Rasihaus',$hash,'close',1)
   do:
     0:
       0          set AlleechosFHEM speak "Achtung!! Rasi ist unterwegs!"
       1          {DebianMail('xxx@web.de','Achtung!! Rasi ist unterwegs!!','Achtung!! Rasi ist unterwegs!')}
     1:
       0          set AlleechosFHEM speak "Achtung!! Rasi ist wieder zuhause!"
     2:
   helper:
     NOTIFYDEV  MQTT2_zigbee_Rasihaus,global
     event      close
     globalinit 1
     last_timer 0
     sleepdevice set_cmd_2
     sleepsubtimer 0
     sleeptimer 1
     timerdev   MQTT2_zigbee_Rasihaus
     timerevent close
     triggerDev
     timerevents:
       close
       linkquality: 45
       voltage: 2985
       battery: 99
       last_seen: 2022-05-23T13:38:07+02:00
       temperature: 28
     timereventsState:
       state: true
       linkquality: 45
       voltage: 2985
       battery: 99
       last_seen: 2022-05-23T13:38:07+02:00
       temperature: 28
   internals:
   readings:
   trigger:
     all         MQTT2_zigbee_Rasihaus
   uiState:
   uiTable:
Attributes:
   repeatcmd  3600:3600
   room       DOIF_Labor
   wait       1,3600
fhem auf HP Microserver Gen8 mit Openmedivault
- 4 Milight RGB Bulbs an Milight Wifi Controller
- MAX Cube mit 2 Heizkörperthermostaten und 2 Fenstersensoren
- VU+ Solo4k Enigma2
- Fritzbox mit Callmonitor

rabehd

ZitatLeider wird der repeatcmd auch für cmd_2 angewendet.
Klar, Du hast es ja auch extra angegeben.

Syntax: attr <Modulname> repeatcmd <Sekunden für Befehlsfolge des ersten DO-Falls>:<Sekunden für Befehlsfolge des zweiten DO-Falls>:...
Auch funktionierende Lösungen kann man hinterfragen.

Sedonion

#2
Ich könnte schwören bei Ersteinrichtung vor Monaten galt 3600:3600 für die beiden Set Commandos des Doif.
Vielleicht irre ich mich aber auch.
Ich versuche es mal.

*Edit*
Sorry für die Verwirrung, es passt und klappt so wie Du es geschrieben hast.
fhem auf HP Microserver Gen8 mit Openmedivault
- 4 Milight RGB Bulbs an Milight Wifi Controller
- MAX Cube mit 2 Heizkörperthermostaten und 2 Fenstersensoren
- VU+ Solo4k Enigma2
- Fritzbox mit Callmonitor

rabehd

vereinfacht gesagt: Der : trennt die einzelnen Zweige/Befehlsfolgen/Ifs.
Innerhalb einer Befehlsfolge wird pro Klammerblock/Befehlsblock mit , getrennt.

attr Dher wait 0,120,840:0,100,240:0,45,300:0,6,36,6,145,4:0,5,18,6,180,10:0,10,22,4,780,45

Auch funktionierende Lösungen kann man hinterfragen.