Ok, danke für den Tipp. Dass || eine oder-Verknüpfung ist, wusste ich nicht. Das habe ich mir aus MadDogs Rule geklaut und es als und-Verknüpfung interpretiert.
Jetzt klappt es, danke!
Jetzt klappt es, danke!
rule "Öffne alle Rollos,wenn Lucas zwischen 6 Uhr und 9 Uhr wach wird"
when
Item Shutter_G1OG_Child received command UP
then
if (now.getHourOfDay >= 6 && now.getHourofDay <= 9)
then
Shutter_GKG_Kitchen.sendCommand(UP)
Shutter_GKG_Living.sendCommand(UP)
end
import org.openhab.core.library.types.*
import java.lang.Math
// Constants
var Number K = 0.017453
// Change this reflecting your destination
var Number latitude = 49.656030
var Number longitude = 08.649870
rule "Set Sun sonnenhoehe and Dawn States"
when
Time cron "0 0/5 * * * ?"
then
var Number tageszahl
var Number deklination
var Number zeitgleichung
var Number stundenwinkel
var Number x
var Number y
var Number sonnenhoehe
var Number azimut
var month = now.getMonthOfYear
var day = now.getDayOfMonth
var hour = now.getHourOfDay
var minute = now.getMinuteOfHour
// Source: http://www.jgiesen.de/SME/tk/index.htm
tageszahl = (month - 1) * 30 + day + hour / 24
deklination = -23.45 * Math::cos((K * 360 * (tageszahl + 10) / 365).doubleValue)
zeitgleichung = 60.0 * (-0.171 * Math::sin((0.0337*tageszahl+0.465).doubleValue) - 0.1299 * Math::sin((0.01787*tageszahl-0.168).doubleValue))
stundenwinkel = 15.0 * (hour.doubleValue + (minute.doubleValue/60.0) - (15.0-longitude)/15.0 - 12.0 + zeitgleichung/60.0)
x = Math::sin((K * latitude).doubleValue()) * Math::sin((K * deklination).doubleValue()) + Math::cos((K * latitude).doubleValue()) * Math::cos((K * deklination).doubleValue()) * Math::cos((K * stundenwinkel).doubleValue())
y = - (Math::sin((K*latitude).doubleValue) * x - Math::sin((K*deklination).doubleValue)) / (Math::cos((K*latitude).doubleValue) * Math::sin(Math::acos(x.doubleValue)))
sonnenhoehe = Math::asin(x.doubleValue) / K
var break = hour.doubleValue + (minute.doubleValue/60.0) <= 12.0 + (15.0-longitude)/15.0 - zeitgleichung/60.0
if (break) {
azimut = Math::acos(y.doubleValue) / K
} else {
azimut = 360.0 - Math::acos(y.doubleValue) / K
}
logDebug("Sun.rules", "month: " + month)
logDebug("Sun.rules", "day: " + day)
logDebug("Sun.rules", "hour: " + hour)
logDebug("Sun.rules", "minute: " + minute)
logDebug("Sun.rules", "tageszahl: " + tageszahl)
logDebug("Sun.rules", "deklination: " + deklination)
logDebug("Sun.rules", "zeitgleichung: " + zeitgleichung)
logDebug("Sun.rules", "stundenwinkel: " + stundenwinkel)
logDebug("Sun.rules", "x: " + x)
logDebug("Sun.rules", "y: " + y)
logDebug("Sun.rules", "sonnenhoehe: " + sonnenhoehe)
logDebug("Sun.rules", "azimut: " + azimut)
logDebug("Sun.rules", "Calculated new SunHeight angle '" + sonnenhoehe + "°'")
logDebug("Sun.rules", "Calculated new Azimut angle '" + azimut + "°'")
// Berechnungen auf den Bus schicken ...
Sun_Height.postUpdate(sonnenhoehe)
Sun_Azimut.postUpdate(azimut)
end
rule "calculate dawn"
when
Item Sun_Height changed
then
Sun_Dawn_Solar.postUpdate( if (Sun_Height.state < 0) ON else OFF )
Sun_Dawn_Civil.postUpdate( if (Sun_Height.state < -3.5) ON else OFF )
Sun_Dawn_Nautical.postUpdate( if (Sun_Height.state < -12) ON else OFF )
Sun_Dawn_Astronomical.postUpdate( if (Sun_Height.state < -18) ON else OFF)
end
rule "Schliesse Rollaeden bei Sonnenuntergang"
when
Item Sun_Dawn_Civil changed to ON
then
Shutter_GKG_Kitchen.sendCommand(DOWN)
Shutter_GKG_Living.sendCommand(DOWN)
Shutter_GEG_LivingWindow.sendCommand(DOWN)
Shutter_GEG_LivingBalkon.sendCommand(DOWN)
Shutter_GEG_Living.sendCommand(DOWN)
Shutter_GEG_LivingTerrasse.sendCommand(DOWN)
Shutter_GEG_Toilet.sendCommand(DOWN)
Shutter_GEG_KitchenEast.sendCommand(DOWN)
Shutter_GEG_KitchenSouth.sendCommand(DOWN)
Shutter_G1OG_Bath.sendCommand(DOWN)
Shutter_G1OG_Parents1.sendCommand(DOWN)
Shutter_G1OG_Parents2.sendCommand(DOWN)
Shutter_G1OG_Zimmer1.sendCommand(DOWN)
Shutter_G1OG_Zimmer2.sendCommand(DOWN)
Shutter_GDG_Buero.sendCommand(DOWN)
Shutter_GDG_Buero2.sendCommand(DOWN)
Shutter_GDG_Zimmer.sendCommand(DOWN)
end
rule "oeffne Rollaeden bei Sonnenaufgang"
when
Item Sun_Dawn_Solar changed to OFF
then
Shutter_GKG_Kitchen.sendCommand(UP)
Shutter_GKG_Living.sendCommand(UP)
Shutter_GEG_LivingWindow.sendCommand(UP)
Shutter_GEG_LivingBalkon.sendCommand(UP)
Shutter_GEG_Living.sendCommand(UP)
Shutter_GEG_LivingTerrasse.sendCommand(UP)
Shutter_GEG_Toilet.sendCommand(UP)
Shutter_GEG_KitchenEast.sendCommand(UP)
Shutter_GEG_KitchenSouth.sendCommand(UP)
Shutter_G1OG_Bath.sendCommand(UP)
Shutter_G1OG_Zimmer1.sendCommand(UP)
Shutter_G1OG_Zimmer2.sendCommand(UP)
Shutter_GDG_Buero.sendCommand(UP)
Shutter_GDG_Buero2.sendCommand(UP)
end
rule "Öffne wenn Lucas zwischen 6 Uhr und 9 Uhr wach wird"
when
Item Shutter_G1OG_Child received command UP
then
if (now.getHourofDay >= 6 && now.getHourofDay <= 9)
then
Shutter_GKG_Kitchen.sendCommand(UP)
Shutter_GKG_Living.sendCommand(UP)
Shutter_GEG_LivingWindow.sendCommand(UP)
Shutter_GEG_LivingBalkon.sendCommand(UP)
Shutter_GEG_Living.sendCommand(UP)
Shutter_GEG_LivingTerrasse.sendCommand(UP)
Shutter_GEG_Toilet.sendCommand(UP)
Shutter_GEG_KitchenEast.sendCommand(UP)
Shutter_GEG_KitchenSouth.sendCommand(UP)
Shutter_G1OG_Bath.sendCommand(UP)
Shutter_G1OG_Parents1.sendCommand(UP)
Shutter_G1OG_Parents2.sendCommand(UP)
Shutter_G1OG_Zimmer1.sendCommand(UP)
Shutter_G1OG_Zimmer2.sendCommand(UP)
Shutter_GDG_Buero.sendCommand(UP)
Shutter_GDG_Buero2.sendCommand(UP)
Shutter_GDG_Zimmer.sendCommand(UP)
Shutter_GDG_Zimmer.sendCommand(UP)
end
rule "Öffne alle Rollos,wenn Lucas zwischen 6 Uhr und 9 Uhr wach wird"
when
Item Shutter_G1OG_Child received command UP
then
if (now.getHourOfDay >= 6 && now.getHourOfDay <= 9) {
Shutter_GKG_Kitchen.sendCommand(UP)
Shutter_GKG_Living.sendCommand(UP)
}
end
Shutter_GKG_Living.sendCommand(UP)
sendCommand(Shutter_GKG_Living, UP)
now.getHourOfDay == 15
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.


Kommentar