Hallo zusammen,
ich habe eine Rule bei der ich den Status eines Items von Nacht auf Tag (und umgekehrt) abhängig von Astro umschalte.
Die Rule schaut folgendermaßen aus:
rule "OpenHAB system started - astro"
when
System started
then
createTimer(now.plusSeconds(180)) [ |
logInfo("RULE", "--> astro init")
if (now.isAfter((Sunset_Time.state as DateTimeType).calendar.timeInMillis) ||
now.isBefore((Sunrise_Time.state as DateTimeType).calendar.timeInMillis)
) {
logInfo("RULE", "--> Night_State ON")
postUpdate(Night_State, ON)
} else {
logInfo("RULE", "--> Night_State OFF")
postUpdate(Night_State, OFF)
}
]
end
Allerdings bekomme ich immer folgenden Fehler angezeigt:
rule "Tag oder Nacht"
when
Item AstroElevation changed
then
var Nacht = OFF
if((AstroElevation.state as Number).intValue < -3)
Nacht = ON
if(Night_State.state != Nacht)
Night_State.postUpdate(Nacht.toString)
end
Die Rule benötigt ein Item (AstroElevation), welches mit dem Channel astro:sun:local:position#elevation verbunden ist. Die Rule triggert bei jeder Aktualisierung von astro, was auch beim Systemstart geschieht Wenn die Sonne unterhalb des festgelegten Grenzwertes liegt, wird der Status entsprechend gekippt. Der Status wird nur gesetzt, wenn dies notwendig ist.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte
rule "Update NightState"
when
Item Sun_Elevation changed
then
if(Sun_Elevation.state > 0){
if(Night_State.state != OFF) postUpdate(Night_State, OFF)
} else {
if(Night_State.state != ON) postUpdate(Night_State, ON)
}
end
Die erste Rule "system started" hatte ich eingebunden um bei einem Neustart den richtigen Zustand zu haben, sodass wir nicht auf ein update von Sun Evelation warten müssen.
Der Punkt ist, dass Du die Rule für System started gar nicht brauchst. Sun_Elevation wird ja gesetzt, sobald astro online geht. Das dürfte wesentlich früher geschehen als 3 Minuten nach dem Start der Rules Engine.
openHAB5.1.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox VE 9.1.9 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte