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 ?
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.
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
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.
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 ..
Zitat von: Rampler am 01 Juni 2023, 04:53:39Zitat 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.
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 ...
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.
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 ..
Oder du stellst deine Definition auf Perl-Modus um, dort kannst du den Status setzen wie es dir passt.
Was ich suche ist quasi ein "branchstate" ..