Hallo zusammen.
Habe für einen Lichtwechsel ein DOIF schrieben.
Dies soll über repeatsame x mal wieerholt werden. Diesen Wert habe ich in einem Dummy mit Slider konfiguriert.
Wie ich es bis jetzt gemacht habe, funktioniert es nicht. Die Lampen werden um 3 Uhr morgens ausgeschaltet und nicht schon nach x wiederholungen.
DOIF
Internals:
DEF ([lichtsens:Indikator:d] < [lichtanteil] and [?16:00-03:00]) (set LS scene 01) (set LS scene 02)
DOELSE (set LS scene Off)
NAME LW1
NR 167
NTFY_ORDER 50-LW1
STATE cmd_1_1
TYPE DOIF
READINGS:
2017-12-15 16:43:09 Device lichtsens
2017-12-15 16:27:55 cmd 1.1
2017-12-15 16:27:55 cmd_count 1
2017-12-15 16:27:55 cmd_event lichtsens
2017-12-15 16:27:55 cmd_nr 1
2017-12-15 16:27:55 cmd_seqnr 1
2017-12-11 18:07:34 e_lichtanteil_STATE 13
2017-12-15 16:43:09 e_lichtsens_Indikator 1
2017-08-02 15:47:49 mode enable
2017-12-15 16:27:55 state cmd_1_1
2017-12-15 03:00:00 timer_01_c01 15.12.2017 16:00:00
2017-12-15 03:00:00 timer_02_c01 16.12.2017 03:00:00
2017-12-15 16:27:55 wait_timer 15.12.2017 17:27:55 cmd_1_2 lichtsens
Regex:
condition:
0 ReadingValDoIf($hash,'lichtsens','Indikator','','d') < InternalDoIf($hash,'lichtanteil','STATE') and DOIF_time($hash,0,1,$wday,$hms)
days:
devices:
0 lichtsens lichtanteil
all lichtsens lichtanteil
do:
0:
0 set LS scene 01
1 set LS scene 02
1:
0 set LS scene Off
helper:
DOIF_Readings_events
DOIF_eventas
event Indikator: 1
globalinit 1
last_timer 2
sleepdevice lichtsens
sleepsubtimer 1
sleeptimer 0
timerdev lichtsens
timerevent Indikator: 1
triggerDev lichtsens
timerevents:
Indikator: 1
timereventsState:
Indikator: 1
triggerEvents:
Indikator: 1
triggerEventsState:
Indikator: 1
internals:
0 lichtanteil:STATE
all lichtanteil:STATE
interval:
0 -1
1 0
itimer:
localtime:
0 1513350000
1 1513389600
readings:
0 lichtsens:Indikator
all lichtsens:Indikator
realtime:
0 16:00:00
1 03:00:00
time:
0 16:00:00
1 03:00:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
trigger:
triggertime:
1513389600:
localtime 1513389600
hash:
uiState:
uiTable:
Attributes:
devStateIcon cmd_2:rc_2:disable disabled:general_aus@red:initialize initialize:general_an@lime:disable cmd_1_1:rc_1:disable cmd_1_2:rc_2:disable cmd_1_3:rc_3:disable cmd_1_4:rc_4:disable initialized:general_an@orange:initialize
icon light_light_dim_100@yellow
loglevel 2
repeatsame [repeats:state]
room 10_Draussen
wait 30,3600,3600
Dummy
Internals:
NAME repeats
NR 337
STATE 2
TYPE dummy
READINGS:
2017-06-21 23:21:38 state 2
Attributes:
room 10_Draussen
setList state:slider,1,1,5
webCmd state
Jemand eine Idee, wie man den Wert aus dem Slider Dummy in das repeatsame Attribut hinein bekommt ?!?!?
Gruß und Danke
Sascha
Keiner eine Idee?
Gruß Sascha
Gesendet von meinem...... was auch immer
Auf Perlebene und dann ReadingsNum versuchen.
Sprich den Wert aus dem Slider auslesen und dann ob das Attribut Schreiben bzw. Die ganze Auslese Routine als Attribut hinterlegen!?
Gruß Sascha
Gesendet von meinem...... was auch immer
Zitat von: sash.sc am 17 Dezember 2017, 10:55:03
Sprich den Wert aus dem Slider auslesen und dann ob das Attribut Schreiben bzw. Die ganze Auslese Routine als Attribut hinterlegen!?
Gruß Sascha
Gesendet von meinem...... was auch immer
Wahrscheinlich brauchst du für dein Vorhaben repeatcmd und nicht repeatsame.
Reading-Angaben in eckigen Klammern bei diesen Attributen werden immer aktuell ausgelesen, da muss man nichts ins Attribut schreiben.
Habe jetzt das repeatsame gelöscht und entsprechend das DOIF geändert.
Internals:
DEF ([lichtsens:Indikator:d] < [lichtanteil] and [?16:00-03:00]) (set LS scene 01) (set LS scene 02)
DOELSE (set LS scene Off)
NAME LW1
NR 167
NTFY_ORDER 50-LW1
STATE cmd_2
TYPE DOIF
READINGS:
2017-12-17 11:04:38 Device lichtsens
2017-12-17 03:07:14 cmd 2
2017-12-17 03:07:14 cmd_event lichtsens
2017-12-17 03:07:14 cmd_nr 2
2017-12-11 18:07:34 e_lichtanteil_STATE 13
2017-12-17 11:04:38 e_lichtsens_Indikator 85
2017-08-02 15:47:49 mode enable
2017-12-17 03:07:14 state cmd_2
2017-12-17 03:00:00 timer_01_c01 17.12.2017 16:00:00
2017-12-17 03:00:00 timer_02_c01 18.12.2017 03:00:00
2017-12-17 02:52:36 wait_timer no timer
Regex:
condition:
0 ReadingValDoIf($hash,'lichtsens','Indikator','','d') < InternalDoIf($hash,'lichtanteil','STATE') and DOIF_time($hash,0,1,$wday,$hms)
days:
devices:
0 lichtsens lichtanteil
all lichtsens lichtanteil
do:
0:
0 set LS scene 01
1 set LS scene 02
1:
0 set LS scene Off
helper:
DOIF_Readings_events
DOIF_eventas
event Indikator: 85
globalinit 1
last_timer 2
sleepdevice lichtsens
sleepsubtimer -1
sleeptimer -1
timerdev lichtsens
timerevent Indikator: 85
triggerDev lichtsens
timerevents:
Indikator: 85
timereventsState:
Indikator: 85
triggerEvents:
Indikator: 85
triggerEventsState:
Indikator: 85
internals:
0 lichtanteil:STATE
all lichtanteil:STATE
interval:
0 -1
1 0
itimer:
localtime:
0 1513522800
1 1513562400
readings:
0 lichtsens:Indikator
all lichtsens:Indikator
realtime:
0 16:00:00
1 03:00:00
time:
0 16:00:00
1 03:00:00
timeCond:
0 0
1 0
timer:
0 0
1 0
timers:
trigger:
triggertime:
1513522800:
localtime 1513522800
hash:
1513562400:
localtime 1513562400
hash:
uiState:
uiTable:
Attributes:
devStateIcon cmd_2:rc_2:disable disabled:general_aus@red:initialize initialize:general_an@lime:disable cmd_1_1:rc_1:disable cmd_1_2:rc_2:disable cmd_1_3:rc_3:disable cmd_1_4:rc_4:disable initialized:general_an@orange:initialize
icon light_light_dim_100@yellow
loglevel 2
repeatcmd [repeats]
room 10_Draussen
wait 30,3600,3600
Der Dummy repeats hatr sich nicht geandert !
@Damian
So meintest Du das ??
Gruß un Danke
Sascha
Also für repeatsame wird das genommen, was in repeats drin steht. Egal wie es da reingekommen ist (slider oder sonst was).
repeatsame begrenzt nur Wiederholung, die Wiederholung kommt aber nicht von alleine, das wird über repeatcmd definiert.
hier ist es beschrieben: https://fhem.de/commandref_DE.html#DOIF_repeatcmd
Habe es jetzt mal so eingesetzt, in den Attributen.
Internals:
DEF ([lichtsens:Indikator:d] < [lichtanteil] and [?16:00-01:00]) (set LS scene 01) (set LS scene 02)
DOELSE (set LS scene Off)
NAME LW1
NR 167
NTFY_ORDER 50-LW1
STATE cmd_2
TYPE DOIF
READINGS:
2017-12-17 12:30:30 Device lichtsens
2017-12-17 12:30:30 cmd 2
2017-12-17 12:30:30 cmd_event lichtsens
2017-12-17 12:30:30 cmd_nr 2
2017-12-17 12:30:30 e_lichtsens_Indikator 73
2017-12-17 12:30:30 state cmd_2
2017-12-17 12:28:53 timer_01_c01 17.12.2017 16:00:00
2017-12-17 12:28:53 timer_02_c01 18.12.2017 01:00:00
Regex:
condition:
0 ReadingValDoIf($hash,'lichtsens','Indikator','','d') < InternalDoIf($hash,'lichtanteil','STATE') and DOIF_time($hash,0,1,$wday,$hms)
days:
devices:
0 lichtsens lichtanteil
all lichtsens lichtanteil
do:
0:
0 set LS scene 01
1 set LS scene 02
1:
0 set LS scene Off
helper:
DOIF_Readings_events
DOIF_eventas
event Indikator: 73
globalinit 1
last_timer 2
sleeptimer -1
timerdev lichtsens
timerevent Indikator: 73
triggerDev lichtsens
timerevents:
Indikator: 73
timereventsState:
Indikator: 73
triggerEvents:
Indikator: 73
triggerEventsState:
Indikator: 73
internals:
0 lichtanteil:STATE
all lichtanteil:STATE
interval:
0 -1
1 0
itimer:
localtime:
0 1513522800
1 1513555200
readings:
0 lichtsens:Indikator
all lichtsens:Indikator
realtime:
0 16:00:00
1 01:00:00
time:
0 16:00:00
1 01:00:00
timeCond:
0 0
1 0
timer:
0 0
1 0
trigger:
triggertime:
1513522800:
localtime 1513522800
hash:
1513555200:
localtime 1513555200
hash:
uiState:
uiTable:
Attributes:
devStateIcon cmd_2:rc_2:disable disabled:general_aus@red:initialize initialize:general_an@lime:disable cmd_1_1:rc_1:disable cmd_1_2:rc_2:disable cmd_1_3:rc_3:disable cmd_1_4:rc_4:disable initialized:general_an@orange:initialize
icon light_light_dim_100@yellow
loglevel 2
repeatcmd 3600,3600
repeatsame [repeats]
room 10_Draussen
wait 30,3600,3600
Mal schauen ob das so funktioniert !!!
Gruß und Danke
Sascha
Du musst dir noch mal genauer die Syntax zu wait, repeatcmd, repeatsame in der Commandref anschauen.
Diese Definition passt nicht zu deinem DOIF:
wait 30,3600,3600
auch das
repeatcmd 3600,3600
Tipp: Bedeutung von Komma und Doppelpunkt