Code: Alles auswählen
if(now.getDayOfWeek.getValue > 5) iStart = 12
Da mir die Items fehlen, konnte ich nur bedingt testen.
Also noch ein Versuch:
Code: Alles auswählen
var Timer tAuto = null
rule "Timer Beduftung starten jetzt"
when
Time cron "0 0 6 ? * MON-FRI" or // Montag bis Freitag 14 Uhr
Time cron "0 0 12 ? * SAT,SUN" or // Samstag und Sonntag 12 Uhr
Item Beduftunghauptschalter received command ON // Hauptschalter wurde geschaltet
then
var Integer iStart = 14 // Startzeitvariable
if(now.getDayOfWeek.getValue > 5) iStart = 12 // Falls Wochenende
if((receivedCommand === null && Beduftunghauptschalter.state != ON)
|| (receivedCommand == ON && now.plusHours(3).getHour <= iStart + 2)) { // Siehe Text
logInfo("Beduftung","Regel abgebrochen")
return;
}
tAuto?.cancel // eventuell vorhandenen Timer entfernen
tAuto = createTimer(now.plusNanos(10000000), [| // Timer initialisieren
logInfo("Beduftung","Timer initialisiert")
if(Beduftung_An_Aus.state != ON) { // Falls Beduftung aus
var Integer iOnTime = 10 // Default ON-Zeit
if(Beduftung_Timer_Anzeit.state instanceof Number) // falls gültiger Wert
iOnTime = (Beduftung_Timer_Anzeit.state as Number).intValue // übernimm ON-Zeit aus Item
Beduftung_An_Aus.sendCommand(ON) //Beduftung an
tAuto.reschedule(now.plusSeconds(iOnTime)) // Timer bis zum erneuten Ausschalten
} else { // ansonsten
var Integer iOffTime = 290 // Default OFF-Zeit
if(Beduftung_Timer_Auszeit.state instanceof Number) // falls gültiger Wert
iOffTime = (Beduftung_Timer_Auszeit.state as Number).intValue // übernimm OFF-Zeit aus Item
Beduftung_An_Aus.sendCommand(OFF) // Beduftung aus
tAuto.reschedule(now.plusSeconds(iOffTime)) // Timer bis zum erneuten Einschalten
}
])
end
Was mir auch noch aufgefallen ist, ist das da eine Fehlermeldung für "timer-3" und "timer-1" kommt. Da passt also noch was nicht.