Hallo,
ich habe da mal wieder ein Problem.
Ich habe mehrere unabhängige DOIFs erstellt die alle mit Zufallstimern arbeiten. Komischerweise werden beim ausführen eines Timers alle anderen Timer ebenfalls neu berechnet. Dadurch passiert es leider, das bestimmte Timer dann mit mal vor der Uhrzeit liegen und nicht mehr ausgeführt werden.
Ich habe die Änderungen mal in Readings zusammengefasst und erstellt.
Das sind die Bilder 1 - 4 in chronologischer Reihenfolge.
Hier der Code für die einzelnen Timer: (Das Sonderprojekt ML lassen wir mal außen vor)
define eg.fl.hmsd.sonder.1.doif DOIF ([([06:15] + int(rand(900)))]) (set eg.fl.hmsd.sonder.1 on) \
DOELSEIF ([([myTwilight:sr_indoor] + int(rand(900)))]) (set eg.fl.hmsd.sonder.1 off) \
DOELSEIF ([([myTwilight:ss] - int(rand(900)))]) (set eg.fl.hmsd.sonder.1 on) \
DOELSEIF ([([00:00] - int(rand(900)) + int(rand(900)))]) (set eg.fl.hmsd.sonder.1 off)
attr eg.fl.hmsd.sonder.1.doif alias EG Flur Sonderprojekt hmSD
attr eg.fl.hmsd.sonder.1.doif cmdState Sonderprojekt an|Sonderprojekt aus|Sonderprojekt an|Sonderprojekt aus
attr eg.fl.hmsd.sonder.1.doif group DOIF
attr eg.fl.hmsd.sonder.1.doif room Timer
define eg.ku.sd.sonder.1.doif DOIF ([([06:15] + int(rand(900)))]) (set eg.ku.sd.sonder.1 on) \
DOELSEIF ([([myTwilight:sr_indoor] + int(rand(900)))]) (set eg.ku.sd.sonder.1 off) \
DOELSEIF ([([myTwilight:ss] - int(rand(900)))]) (set eg.ku.sd.sonder.1 on) \
DOELSEIF ([([00:00] - int(rand(900)) + int(rand(900)))]) (set eg.ku.sd.sonder.1 off)
attr eg.ku.sd.sonder.1.doif alias EG Küche Sonderprojekt 1 SD
attr eg.ku.sd.sonder.1.doif cmdState Sonderprojekt an|Sonderprojekt aus|Sonderprojekt an|Sonderprojekt aus
attr eg.ku.sd.sonder.1.doif group DOIF
attr eg.ku.sd.sonder.1.doif room Timer
define eg.wz.sd.sonder.2.doif DOIF ([([06:15] + int(rand(900)))]) (set eg.wz.sd.sonder.2 on) \
DOELSEIF ([([myTwilight:sr_indoor] + int(rand(900)))]) (set eg.wz.sd.sonder.2 off) \
DOELSEIF ([([myTwilight:ss] - int(rand(900)))]) (set eg.wz.sd.sonder.2 on) \
DOELSEIF ([([00:00] - int(rand(900)) + int(rand(900)))]) (set eg.wz.sd.sonder.2 off)
attr eg.wz.sd.sonder.2.doif alias EG Wohnzimmer Sonderprojekt 2 SD
attr eg.wz.sd.sonder.2.doif cmdState Sonderprojekt an|Sonderprojekt aus|Sonderprojekt an|Sonderprojekt night
attr eg.wz.sd.sonder.2.doif group DOIF
attr eg.wz.sd.sonder.2.doif room Timer
define eg.wz.sd.sonder.3.doif DOIF ([([06:15] + int(rand(900)))]) (set eg.wz.sd.sonder.3 on) \
DOELSEIF ([([myTwilight:sr_indoor] + int(rand(900)))]) (set eg.wz.sd.sonder.3 off) \
DOELSEIF ([([myTwilight:ss] - int(rand(900)))]) (set eg.wz.sd.sonder.3 on) \
DOELSEIF ([([00:00] - int(rand(900)) + int(rand(900)))]) (set eg.wz.sd.sonder.3 off)
attr eg.wz.sd.sonder.3.doif alias EG Wohnzimmer Sonderprojekt 3 SD
attr eg.wz.sd.sonder.3.doif cmdState Sonderprojekt an|Sonderprojekt aus|Sonderprojekt an|Sonderprojekt night
attr eg.wz.sd.sonder.3.doif group DOIF
attr eg.wz.sd.sonder.3.doif room Timer
hier noch der Auszug aus dem Logfile, wann was geschaltet wurde.
2016-11-22_15:52:31 eg.ku.sd.sonder.1.doif cmd_nr: 3
2016-11-22_15:52:31 eg.ku.sd.sonder.1.doif cmd: 3
2016-11-22_15:52:31 eg.ku.sd.sonder.1.doif cmd_event: timer_3
2016-11-22_15:52:31 eg.ku.sd.sonder.1.doif Sonderprojekt an
2016-11-22_15:54:32 eg.wz.sd.sonder.2.doif cmd_nr: 3
2016-11-22_15:54:32 eg.wz.sd.sonder.2.doif cmd: 3
2016-11-22_15:54:32 eg.wz.sd.sonder.2.doif cmd_event: timer_3
2016-11-22_15:54:32 eg.wz.sd.sonder.2.doif Sonderprojekt an
2016-11-22_15:54:36 eg.fl.hmsd.sonder.1.doif cmd_nr: 3
2016-11-22_15:54:36 eg.fl.hmsd.sonder.1.doif cmd: 3
2016-11-22_15:54:36 eg.fl.hmsd.sonder.1.doif cmd_event: timer_3
2016-11-22_15:54:36 eg.fl.hmsd.sonder.1.doif Sonderprojekt an
2016-11-22_16:01:12 eg.wz.sd.sonder.3.doif cmd_nr: 3
2016-11-22_16:01:12 eg.wz.sd.sonder.3.doif cmd: 3
2016-11-22_16:01:12 eg.wz.sd.sonder.3.doif cmd_event: timer_3
2016-11-22_16:01:12 eg.wz.sd.sonder.3.doif Sonderprojekt an
für Hilfe wäre ich Dankbar
Marc
Ein ähnliches Problem und eine Lösung wird ab hier beschrieben: https://forum.fhem.de/index.php/topic,58556.msg523076.html#msg523076