ich würde gerne eine alte OH2 Rule für OH 4 anpassen, da ich gerade mein System neu aufsetze.
Ziel ist, dass, wenn ich auf Urlaub bin, sich in einem gewissen Zeitraum sich Lichter im Haus automatisch aus und einschalten. Dieser Zeitraum sollte nicht gleich sein und die Lichter zufällig schalten, auch die Brenndauer soll zufällig sein.
Ich finde nur keinen RandomLightsTimer wie in der alten Rule (ich tu mir generell etwas hart mit dem Umstieg.
Hat wer eine Idee? Hier zur Info die alte Rule:
Code: Alles auswählen
val String filename ="dev.rules"
var Timer RandomLightsTimer=null
val java.util.concurrent.ThreadLocalRandom random = (new java.util.concurrent.ThreadLocalRandom)
// ab hier kommen die Rules
rule"Präsenzsimulation"
when
Time cron "0 */15 5-23 * * ?"
then
if(Urlaub.state == ON) {
logInfo(filename,"Urlaub ON")
val sunrise =(Nautic_Dawn.state as DateTimeType).calendar.timeInMillis
logInfo(filename,"Sunrise {}",sunrise)
val sunset = (Nautic_Dusk.state as DateTimeType).calendar.timeInMillis
logInfo(filename,"Sunset {}",sunset)
if (now.isBefore(sunrise) || now.isAfter(sunset)) {
logInfo(filename,"Nach Sonnenuntergang und vor Sonnenaufgang")
var int randomTime = random.nextInt(240)
logInfo(filename,"Neuer Wert Zufallstimer: {} Sekunden.",randomTime)
RandomLightsTimer = createTimer(now.plusSeconds(randomTime)) [ |
var randomItem = gUr.members.get(random.nextInt(gUr.members.size))
var randomLightCurrentState = randomItem.state
// ersetzen der Dimmer-Werte von "0" auf "OFF"
if (randomLightCurrentState == 0) randomLightCurrentState = OFF
// alle Dimmer-Werte von 1-100 werden als ON gewertet
var randomLightNewState = if (randomLightCurrentState != OFF) OFF else ON
logInfo(filename, "Schalte Licht {} von {} nach {}",randomItem.name,randomLightCurrentState,randomLightNewState)
randomItem.sendCommand(randomLightNewState)
]
} else logInfo(filename,"Tagsüber")
} else logInfo(filename,"Urlaub OFF")
end
rule "Licht Urlaub aus Nacht"
when
Time cron "0 5 23 1/1 * ? *"
then
if (Urlaub.state==ON) {
gUr.members.forEach(Light|if (Light.state!=OFF) Light.sendCommand(OFF))
}
end
rule "Licht Urlaub aus Tag"
when
Time cron "0 3 8 1/1 * ? *"
then
if (Urlaub.state==ON) {
gUr.members.forEach(Light|if (Light.state!=OFF) Light.sendCommand(OFF))
}
end