Hauptmenü

cmdstate und wait

Begonnen von Rampler, 31 Mai 2023, 19:48:00

Vorheriges Thema - Nächstes Thema

Rampler

Hallo zusammen,
ich möchte statt:
Status für cmd1_1>,<Status für cmd1_2>,...| <Status für cmd2_1>,<Status für cmd2_2>,...|...

einfach nur:
Status für cmd1| <Status für cmd2>|...
egal wieviel subcommands ich verwende, es soll immer cmd1 angezeigt werden.
Geht das ?
Ich verwende cmdstate mit wait z.B. 0,600, der Status wird es dann angezeigt wenn die 600 Sekunden rum sind oder ich ein Komma einfüge ..

EDIT:
Oder einfacher gefragt, wie muss ich cmdstate angeben, dass immer ein cmdstate angezeigt wird, egal wieviel subcommands ?
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Damian

Zitat von: Rampler am 31 Mai 2023, 19:48:00Geht das ?
Ich verwende cmdstate mit wait z.B. 0,600, der Status wird es dann angezeigt wenn die 600 Sekunden rum sind oder ich ein Komma einfüge ..

EDIT:
Oder einfacher gefragt, wie muss ich cmdstate angeben, dass immer ein cmdstate angezeigt wird, egal wieviel subcommands ?


schon ausprobiert?

Ich habe es gerade ausprobiert, weil es einfacher ist, als im Code zu suchen - es funktioniert wie erwartet, mit dem ersten subcommand wird der definierte cmd-Status gesetzt, egal was noch danach kommt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Rampler

#2
Zitat von: Damian am 31 Mai 2023, 22:04:15schon ausprobiert?

Ich habe es gerade ausprobiert, weil es einfacher ist, als im Code zu suchen - es funktioniert wie erwartet, mit dem ersten subcommand wird der definierte cmd-Status gesetzt, egal was noch danach kommt.

Kann ich leider nicht bestätigen ..

Hier ein Beispiel:
Internals:
([Dachfenster] eq "any_open" and [Alarm_state_dachfenster] eq "enabled" and
 ([Alarm_status] eq "armedext" or [Alarm_status] eq "armed"))
 (set Alarm_status trigger_$DEVICE)
 (set FL.EG.anzeige.led06 led red)
 (set Alarm_licht_all on-for-timer 600)
 (set FL.EG.gong.mp3 playTone 12)
 (({DebianMail('dddddddddddd', 'FHEM Alarmanlage ausgeloest', "Ausloeser: $DEVICE")}))
 (set Alarm_sir_int on-for-timer 180)
 (set Alarm_sir_ext on-for-timer 120)
 
 DOELSEIF
([Dachfenster] eq "any_open" and ([Regensensor_Regen] eq "rain" or [Gartenhaus:Windspeed] > 35) and [Alarm_status] !~ "trigger")
 ((IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) )) 
 ((IF ("[Regensensor_Regen]" eq "rain") (set FL.EG.gong.mp3 playTone 33) ))
 ((IF ("[Gartenhaus:Windspeed]" > 35)   (set FL.EG.gong.mp3 playTone 37) ))
 ((IF ("[Regensensor_Regen]" eq "rain") ({Log 1, "Dachfenster rain ==> Sirene"}) ))
 ((IF ("[Gartenhaus:Windspeed]" > 35)   ({Log 1, "Dachfenster Windspeed [Gartenhaus:Windspeed] gt 35 ==> Sirene"}) )) 
 ((IF ("[Regensensor_Regen]" eq "rain") (set Regensensor_Windspeed.timer active) ))
 ((IF ("[Gartenhaus:Windspeed]" > 35)   (set Regensensor_Windspeed.timer active) ))
 
 DOELSEIF
([Dachfenster] eq "any_open" and [Wetterstation:temperature] <= 12 and [?Regensensor_Regen] eq "dry" and
 [?SolvisBen:HKR1_Betriebsart] ne "Standby" and [?SolvisBen:HKR2_Betriebsart] ne "Standby" and [Gartenhaus:Windspeed] < 35 and
 [FL.EG.gong.mp3.muteswitch] eq "off" and [Alarm_status] !~ "trigger" )   
 ((IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) )) 
 ((IF ("[Dachfenster.timer]" ne "active") (set Dachfenster.timer active) ))  
 ((IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "orangeS") (setreading FL.EG.gong.dummyled Dachfenster orangeS) ))
 
 DOELSEIF
([Dachfenster] eq "any_open" and [Wetterstation:temperature] <= 12 and [?Regensensor_Regen] eq "dry" and
 [?SolvisBen:HKR1_Betriebsart] ne "Standby" and [?SolvisBen:HKR2_Betriebsart] ne "Standby" and [Gartenhaus:Windspeed] < 35 and
 [FL.EG.gong.mp3.muteswitch] eq "on" and [Alarm_status] !~ "trigger" )   
 ((IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) )) 
 ((IF ("[Dachfenster.timer.timer]" ne "inactive") (set Dachfenster.timer inactive) ))
 ((IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "orangeS") (setreading FL.EG.gong.dummyled Dachfenster orangeS) ))
 
 DOELSEIF
([Dachfenster] eq "any_open" and [Alarm_status] !~ "trigger" and [Wetterstation:temperature] > 12 and
 [?Regensensor_Regen] eq "dry" and [?Gartenhaus:Windspeed] < 35)
 ((IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "off") (setreading FL.EG.gong.dummyled Dachfenster off) ))
 ((IF ("[Dachfenster.timer]" ne "inactive") (set Dachfenster.timer inactive) ))
 ((IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) )) 
 
 DOELSEIF
([Dachfenster] eq "all_closed" and [Alarm_status] !~ "trigger")
 ((IF ("[Dachfenster.timer]" ne "inactive") (set Dachfenster.timer inactive) ))
 ((IF ("[Regensensor_Windspeed.timer]" ne "inactive") (set Regensensor_Windspeed.timer inactive) ))
 ((IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "off") (setreading FL.EG.gong.dummyled Dachfenster off) ))
 (set FL.EG.anzeige.led06 led green)

   FUUID      5c489c10-f33f-b6d9-f406-6d60a25f6a691a92
   MODEL      FHEM
   NAME       Dachfenster_control
   NOTIFYDEV  global,Alarm_status,FL.EG.gong.mp3.muteswitch,Dachfenster,Alarm_state_dachfenster,Regensensor_Regen,Gartenhaus,Wetterstation
   NR         291
   NTFY_ORDER 50-Dachfenster_control
   STATE       Skylight open 
   TYPE       DOIF
   VERSION    27487 2023-04-26 08:04:04
   eventCount 42
   READINGS:
     2023-05-31 22:19:24   Device          Wetterstation
     2023-05-31 21:39:17   cmd             5.3
     2023-05-31 21:39:17   cmd_event       Wetterstation
     2023-05-31 21:39:17   cmd_nr          5
     2023-05-31 21:39:17   cmd_seqnr       3
     2023-05-31 22:00:01   e_Alarm_status_STATE disarmed
     2023-05-31 21:56:18   e_FL.EG.gong.mp3.muteswitch_STATE off
     2023-05-31 22:18:50   e_Gartenhaus_Windspeed 1
     2023-05-31 22:00:01   e_Regensensor_Regen_STATE dry
     2023-05-31 22:19:24   e_Wetterstation_temperature 20.2
     2023-05-31 21:34:54   mode            enabled
     2023-05-31 21:39:17   state            Skylight open 
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       Alarm_state_dachfenster:
         0:
           &STATE     ^Alarm_state_dachfenster$
       Alarm_status:
         0:
           &STATE     ^Alarm_status$
         1:
           &STATE     ^Alarm_status$
         2:
           &STATE     ^Alarm_status$
         3:
           &STATE     ^Alarm_status$
         4:
           &STATE     ^Alarm_status$
         5:
           &STATE     ^Alarm_status$
       Dachfenster:
         0:
           &STATE     ^Dachfenster$
         1:
           &STATE     ^Dachfenster$
         2:
           &STATE     ^Dachfenster$
         3:
           &STATE     ^Dachfenster$
         4:
           &STATE     ^Dachfenster$
         5:
           &STATE     ^Dachfenster$
       FL.EG.gong.mp3.muteswitch:
         0:
         1:
         2:
           &STATE     ^FL.EG.gong.mp3.muteswitch$
         3:
           &STATE     ^FL.EG.gong.mp3.muteswitch$
         4:
         5:
       Gartenhaus:
         0:
         1:
           Windspeed  ^Gartenhaus$:^Windspeed:
         2:
           Windspeed  ^Gartenhaus$:^Windspeed:
         3:
           Windspeed  ^Gartenhaus$:^Windspeed:
         4:
         5:
       Regensensor_Regen:
         0:
         1:
           &STATE     ^Regensensor_Regen$
         2:
         3:
         4:
         5:
       Wetterstation:
         0:
         1:
         2:
           temperature ^Wetterstation$:^temperature:
         3:
           temperature ^Wetterstation$:^temperature:
         4:
           temperature ^Wetterstation$:^temperature:
   attr:
     cmdState:
       0:
        
        
        
        
         Alarmanlage ausgelöst > Mail
         Alarmanlage ausgelöst > Sirene 
       1:
         
        
         Skylight open (Rain or Wind) > Alarm
         Skylight open (Rain or Wind) > Alarm
         Skylight open (Rain or Wind) > Alarm
         Skylight open (Rain or Wind) > Alarm
         Skylight open (Rain or Wind) > Alarm
       2:
          Skylight open (<12 Grad) > Mecker
       3:
         
         Skylight open (<12 Grad) > No Mecker (mute)
       4:
          Skylight open 
       5:
          Skylight closed
     wait:
       0:
         0
         0
         0
         0
         0
         30
         0
       1:
        
0
         0
         0
         60
       2:
        
0
         900
       3:
        
0
         0
         900
       4:
        
0
       5:
        
0
     waitdel:
   condition:
     0          ::InternalDoIf($hash,'Dachfenster','STATE') eq "any_open" and ::InternalDoIf($hash,'Alarm_state_dachfenster','STATE') eq "enabled" and   (::InternalDoIf($hash,'Alarm_status','STATE') eq "armedext" or ::InternalDoIf($hash,'Alarm_status','STATE') eq "armed")
     1          ::InternalDoIf($hash,'Dachfenster','STATE') eq "any_open" and (::InternalDoIf($hash,'Regensensor_Regen','STATE') eq "rain" or ::ReadingValDoIf($hash,'Gartenhaus','Windspeed') > 35) and ::InternalDoIf($hash,'Alarm_status','STATE') !~ "trigger"
     2          ::InternalDoIf($hash,'Dachfenster','STATE') eq "any_open" and ::ReadingValDoIf($hash,'Wetterstation','temperature') <= 12 and ::InternalDoIf($hash,'Regensensor_Regen','STATE') eq "dry" and   ::ReadingValDoIf($hash,'SolvisBen','HKR1_Betriebsart') ne "Standby" and ::ReadingValDoIf($hash,'SolvisBen','HKR2_Betriebsart') ne "Standby" and ::ReadingValDoIf($hash,'Gartenhaus','Windspeed') < 35 and   ::InternalDoIf($hash,'FL.EG.gong.mp3.muteswitch','STATE') eq "off" and ::InternalDoIf($hash,'Alarm_status','STATE') !~ "trigger"
     3          ::InternalDoIf($hash,'Dachfenster','STATE') eq "any_open" and ::ReadingValDoIf($hash,'Wetterstation','temperature') <= 12 and ::InternalDoIf($hash,'Regensensor_Regen','STATE') eq "dry" and   ::ReadingValDoIf($hash,'SolvisBen','HKR1_Betriebsart') ne "Standby" and ::ReadingValDoIf($hash,'SolvisBen','HKR2_Betriebsart') ne "Standby" and ::ReadingValDoIf($hash,'Gartenhaus','Windspeed') < 35 and   ::InternalDoIf($hash,'FL.EG.gong.mp3.muteswitch','STATE') eq "on" and ::InternalDoIf($hash,'Alarm_status','STATE') !~ "trigger"
     4          ::InternalDoIf($hash,'Dachfenster','STATE') eq "any_open" and ::InternalDoIf($hash,'Alarm_status','STATE') !~ "trigger" and ::ReadingValDoIf($hash,'Wetterstation','temperature') > 12 and   ::InternalDoIf($hash,'Regensensor_Regen','STATE') eq "dry" and ::ReadingValDoIf($hash,'Gartenhaus','Windspeed') < 35
     5          ::InternalDoIf($hash,'Dachfenster','STATE') eq "all_closed" and ::InternalDoIf($hash,'Alarm_status','STATE') !~ "trigger"
   do:
     0:
       0          set Alarm_status trigger_$DEVICE
       1          set FL.EG.anzeige.led06 led red
       2          set Alarm_licht_all on-for-timer 600
       3          set FL.EG.gong.mp3 playTone 12
       4          ({DebianMail('ddddddddddddddddddddd, 'FHEM Alarmanlage ausgeloest', "Ausloeser: $DEVICE")})
       5          set Alarm_sir_int on-for-timer 180
       6          set Alarm_sir_ext on-for-timer 120
     1:
       0          (IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) )
       1          (IF ("[Regensensor_Regen]" eq "rain") (set FL.EG.gong.mp3 playTone 33) )
       2          (IF ("[Gartenhaus:Windspeed]" > 35)   (set FL.EG.gong.mp3 playTone 37) )
       3          (IF ("[Regensensor_Regen]" eq "rain") ({Log 1, "Dachfenster rain ==> Sirene"}) )
       4          (IF ("[Gartenhaus:Windspeed]" > 35)   ({Log 1, "Dachfenster Windspeed [Gartenhaus:Windspeed] gt 35 ==> Sirene"}) )
       5          (IF ("[Regensensor_Regen]" eq "rain") (set Regensensor_Windspeed.timer active) )
       6          (IF ("[Gartenhaus:Windspeed]" > 35)   (set Regensensor_Windspeed.timer active) )
     2:
       0          (IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) )
       1          (IF ("[Dachfenster.timer]" ne "active") (set Dachfenster.timer active) )
       2          (IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "orangeS") (setreading FL.EG.gong.dummyled Dachfenster orangeS) )
     3:
       0          (IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) )
       1          (IF ("[Dachfenster.timer.timer]" ne "inactive") (set Dachfenster.timer inactive) )
       2          (IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "orangeS") (setreading FL.EG.gong.dummyled Dachfenster orangeS) )
     4:
       0          (IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "off") (setreading FL.EG.gong.dummyled Dachfenster off) )
       1          (IF ("[Dachfenster.timer]" ne "inactive") (set Dachfenster.timer inactive) )
       2          (IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) )
     5:
       0          (IF ("[Dachfenster.timer]" ne "inactive") (set Dachfenster.timer inactive) )
       1          (IF ("[Regensensor_Windspeed.timer]" ne "inactive") (set Regensensor_Windspeed.timer inactive) )
       2          (IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "off") (setreading FL.EG.gong.dummyled Dachfenster off) )
       3          set FL.EG.anzeige.led06 led green
     6:
   helper:
     NOTIFYDEV  global,Alarm_status,FL.EG.gong.mp3.muteswitch,Dachfenster,Alarm_state_dachfenster,Regensensor_Regen,Gartenhaus,Wetterstation
     event      humidity: 44,temperature: 20.2
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Wetterstation
     timerevent humidity: 44,temperature: 20.2
     triggerDev Wetterstation
     timerevents:
       humidity: 44
       temperature: 20.2
     timereventsState:
       humidity: 44
       temperature: 20.2
     triggerEvents:
       humidity: 44
       temperature: 20.2
     triggerEventsState:
       humidity: 44
       temperature: 20.2
   internals:
     all         Dachfenster:STATE Alarm_state_dachfenster:STATE Alarm_status:STATE Regensensor_Regen:STATE FL.EG.gong.mp3.muteswitch:STATE
   readings:
     all         Gartenhaus:Windspeed Wetterstation:temperature
   trigger:
   uiState:
   uiTable:
Attributes:
   alias      Dachfenster Control
   cmdState   ,,,,Alarmanlage ausgelöst > Mail,Alarmanlage ausgelöst > Sirene  | ,,Skylight open (Rain or Wind) > Alarm,Skylight open (Rain or Wind) > Alarm,Skylight open (Rain or Wind) > Alarm,Skylight open (Rain or Wind) > Alarm,Skylight open (Rain or Wind) > Alarm | Skylight open (<12 Grad) > Mecker | ,Skylight open (<12 Grad) > No Mecker (mute) | Skylight open  | Skylight closed |
   event-on-change-reading no
   icon       helper_doif
   room       Alarm,Bad,Christian,Christine,Schlafzimmer
   verbose    1
   wait       0,0,0,0,0,30,0:
0,0,0,60:
0,900:
0,0,900:
0:
0

Bei mir wird, falls vorhanden, nur der jeweils aktuelle Status angezeigt.
Was mich eigentlich nervt, ist das anpassen der Kommas im cmdstate, wenn ich etwas verändere ..
Siehe meine cmdstate, so funktioniert es, wenn auch umständlich ..

Eventuell ist das besser lesbar:

defmod Dachfenster_control DOIF
([Dachfenster] eq "any_open" and [Alarm_state_dachfenster] eq "enabled" and \
 ([Alarm_status] eq "armedext" or [Alarm_status] eq "armed")) \
 (set Alarm_status trigger_$DEVICE)\
 (set FL.EG.anzeige.led06 led red) \
 (set Alarm_licht_all on-for-timer 600)\
 (set FL.EG.gong.mp3 playTone 12) \
 (({DebianMail('ddddddddddddddddddddddddddt', 'FHEM Alarmanlage ausgeloest', "Ausloeser: $DEVICE")}))\
 (set Alarm_sir_int on-for-timer 180)\
 (set Alarm_sir_ext on-for-timer 120)\
 \
 DOELSEIF\
([Dachfenster] eq "any_open" and ([Regensensor_Regen] eq "rain" or [Gartenhaus:Windspeed] > 35) and [Alarm_status] !~ "trigger")\
 ((IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) ))  \
 ((IF ("[Regensensor_Regen]" eq "rain") (set FL.EG.gong.mp3 playTone 33) ))\
 ((IF ("[Gartenhaus:Windspeed]" > 35)   (set FL.EG.gong.mp3 playTone 37) ))\
 ((IF ("[Regensensor_Regen]" eq "rain") ({Log 1, "Dachfenster rain ==> Sirene"}) ))\
 ((IF ("[Gartenhaus:Windspeed]" > 35)   ({Log 1, "Dachfenster Windspeed [Gartenhaus:Windspeed] gt 35 ==> Sirene"}) ))  \
 ((IF ("[Regensensor_Regen]" eq "rain") (set Regensensor_Windspeed.timer active) )) \
 ((IF ("[Gartenhaus:Windspeed]" > 35)   (set Regensensor_Windspeed.timer active) )) \
 \
 DOELSEIF \
([Dachfenster] eq "any_open" and [Wetterstation:temperature] <= 12 and [?Regensensor_Regen] eq "dry" and \
 [?SolvisBen:HKR1_Betriebsart] ne "Standby" and [?SolvisBen:HKR2_Betriebsart] ne "Standby" and [Gartenhaus:Windspeed] < 35 and \
 [FL.EG.gong.mp3.muteswitch] eq "off" and [Alarm_status] !~ "trigger" )    \
 ((IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) ))  \
 ((IF ("[Dachfenster.timer]" ne "active") (set Dachfenster.timer active) ))   \
 ((IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "orangeS") (setreading FL.EG.gong.dummyled Dachfenster orangeS) )) \
 \
 DOELSEIF \
([Dachfenster] eq "any_open" and [Wetterstation:temperature] <= 12 and [?Regensensor_Regen] eq "dry" and \
 [?SolvisBen:HKR1_Betriebsart] ne "Standby" and [?SolvisBen:HKR2_Betriebsart] ne "Standby" and [Gartenhaus:Windspeed] < 35 and \
 [FL.EG.gong.mp3.muteswitch] eq "on" and [Alarm_status] !~ "trigger" )    \
 ((IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) ))  \
 ((IF ("[Dachfenster.timer.timer]" ne "inactive") (set Dachfenster.timer inactive) )) \
 ((IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "orangeS") (setreading FL.EG.gong.dummyled Dachfenster orangeS) )) \
 \
 DOELSEIF \
([Dachfenster] eq "any_open" and [Alarm_status] !~ "trigger" and [Wetterstation:temperature] > 12 and \
 [?Regensensor_Regen] eq "dry" and [?Gartenhaus:Windspeed] < 35)\
 ((IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "off") (setreading FL.EG.gong.dummyled Dachfenster off) ))\
 ((IF ("[Dachfenster.timer]" ne "inactive") (set Dachfenster.timer inactive) )) \
 ((IF ("[FL.EG.anzeige.led06]" ne "red") (set FL.EG.anzeige.led06 led red) ))  \
 \
 DOELSEIF \
([Dachfenster] eq "all_closed" and [Alarm_status] !~ "trigger") \
 ((IF ("[Dachfenster.timer]" ne "inactive") (set Dachfenster.timer inactive) )) \
 ((IF ("[Regensensor_Windspeed.timer]" ne "inactive") (set Regensensor_Windspeed.timer inactive) )) \
 ((IF ("[FL.EG.gong.dummyled:Dachfenster]" ne "off") (setreading FL.EG.gong.dummyled Dachfenster off) )) \
 (set FL.EG.anzeige.led06 led green)\

attr Dachfenster_control alias Dachfenster Control
attr Dachfenster_control cmdState ,,,,Alarmanlage ausgelöst > Mail,Alarmanlage ausgelöst > Sirene  | ,,Skylight open (Rain or Wind) > Alarm,Skylight open (Rain or Wind) > Alarm,Skylight open (Rain or Wind) > Alarm,Skylight open (Rain or Wind) > Alarm,Skylight open (Rain or Wind) > Alarm | Skylight open (<12 Grad) > Mecker | ,Skylight open (<12 Grad) > No Mecker (mute) | Skylight open  | Skylight closed |
attr Dachfenster_control event-on-change-reading no
attr Dachfenster_control icon helper_doif
attr Dachfenster_control room Alarm,Bad,Christian,Christine,Schlafzimmer
attr Dachfenster_control verbose 1
attr Dachfenster_control wait 0,0,0,0,0,30,0:\
0,0,0,60:\
0,900:\
0,0,900:\
0:\
0

setstate Dachfenster_control  Skylight open 
setstate Dachfenster_control 2023-05-31 22:39:19 Device Wetterstation
setstate Dachfenster_control 2023-05-31 21:39:17 cmd 5.3
setstate Dachfenster_control 2023-05-31 21:39:17 cmd_event Wetterstation
setstate Dachfenster_control 2023-05-31 21:39:17 cmd_nr 5
setstate Dachfenster_control 2023-05-31 21:39:17 cmd_seqnr 3
setstate Dachfenster_control 2023-05-31 22:00:01 e_Alarm_status_STATE disarmed
setstate Dachfenster_control 2023-05-31 21:56:18 e_FL.EG.gong.mp3.muteswitch_STATE off
setstate Dachfenster_control 2023-05-31 22:35:00 e_Gartenhaus_Windspeed 0
setstate Dachfenster_control 2023-05-31 22:30:00 e_Regensensor_Regen_STATE dry
setstate Dachfenster_control 2023-05-31 22:39:19 e_Wetterstation_temperature 19.8
setstate Dachfenster_control 2023-05-31 21:34:54 mode enabled
setstate Dachfenster_control 2023-05-31 21:39:17 state  Skylight open 


3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Damian

defmod di_device DOIF ([bla:state] eq "on") (set lamp on)(set lamp off) DOELSE
attr di_device cmdState test1|test2
attr di_device do always
attr di_device room Test
attr di_device wait 5,5

Funktioniert wie von mir beschrieben, es gibt nur den Status test1, egal wieviel Lampen ich  ein oder ausschalte.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Rampler

#4
Zitat von: Damian am 31 Mai 2023, 22:41:14defmod di_device DOIF ([bla:state] eq "on") (set lamp on)(set lamp off) DOELSE
attr di_device cmdState test1|test2
attr di_device do always
attr di_device room Test
attr di_device wait 5,5

Funktioniert wie von mir beschrieben, es gibt nur den Status test1, egal wieviel Lampen ich  ein oder ausschalte.

Wenn Du jetzt den wait auf 0,60 stellst siehst Du erst nach 60 Skunden den Status test1, oder man schreibt
attr di_device cmdState test1,test1|test2
Bei mir verhält es sich so:
Man sieht erst den Status, wenn alle Commands abgearbeitet sind, es sei denn, man kodiert für jeden Command eben ein Komma ..
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Damian

Zitat von: Rampler am 01 Juni 2023, 04:53:39
Zitat von: Damian am 31 Mai 2023, 22:41:14defmod di_device DOIF ([bla:state] eq "on") (set lamp on)(set lamp off) DOELSE
attr di_device cmdState test1|test2
attr di_device do always
attr di_device room Test
attr di_device wait 5,5

Funktioniert wie von mir beschrieben, es gibt nur den Status test1, egal wieviel Lampen ich  ein oder ausschalte.

Wenn Du jetzt den wait auf 0,60 stellst siehst Du erst nach 60 Skunden den Status test1, oder man schreibt
attr di_device cmdState test1,test1|test2
Bei mir verhält es sich so:
Man sieht erst den Status, wenn alle Commands abgearbeitet sind, es sei denn, man kodiert für jeden Command eben ein Komma ..

Das ist alles so beabsichtigt. Der Status eines Zweiges wird erst dann aktualisiert, wenn das Kommando ausgeführt wird. Das muss auch so sein, denn wenn während der Wartezeit ein Event für einen anderen Zweig kommt, dann wird die Ausführung verworfen, also darf auch nicht dieser Zustand im Status erfolgen.

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

Rampler

Das macht ja alles auch Sinn, trotzdem würde ich mir wünschen das der Status bei jedem Subcommand gesetzt wird, evtl. steuerbar über ein Attribut ...
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Damian

Zitat von: Rampler am 01 Juni 2023, 10:30:35Das macht ja alles auch Sinn, trotzdem würde ich mir wünschen das der Status bei jedem Subcommand gesetzt wird, evtl. steuerbar über ein Attribut ...

Naja, es ist das gleiche Verhalten:

bei

wait 5,10;...


wird der erste Status nach 5 Sekunden gesetzt (egal ob  cmdstate auf test1,test2|... oder nur test1|... gesetzt wird). Vorher geht nicht, weil noch keine Ausführung stattgefunden hat.


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

Rampler

Zitat von: Damian am 01 Juni 2023, 13:12:59bei
wait 5,10;...

wird der erste Status nach 5 Sekunden gesetzt (egal ob  cmdstate auf test1,test2|... oder nur test1|... gesetzt wird). Vorher geht nicht, weil noch keine Ausführung stattgefunden hat.
Schade..,zugegeben Sinn macht das nur bei wait 0,.....
Oder man setzt den Status sobald der Zweig getriggert wurde, und wenn danach ein anderer Zweig kommt , dann halt dessen Status ..
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!

Damian

Oder du stellst deine Definition auf Perl-Modus um, dort kannst du den Status setzen wie es dir passt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Rampler

Was ich suche ist quasi ein "branchstate" ..
3 HMUART (2 via ESP8266), 1 DUOFERN, 9 ESP8266, RPI2 (Bullseye), ZWAVE, HM-Classic, und hoch zufrieden ...
Danke an alle, die was dazu beigetragen haben !!