Hallo Leute,
seit dem Umstieg auf openHAB2 habe ich mit dem Events für Sonnenauf- und Untergang zu kämpfen. Der Event über das Astro-Plugin wird ja in OH2 derzeit nicht unterstützt. Das ist einerseits kein Problem, da ich einen Helligkeitssensor in der Wetterstation auf dem Dach habe und damit dann meine Rollläden steuere.
In einem anderen Gebäude gibt es aber keine Wetterstation und derzeit auch keine anderen Außensensoren, somit habe ich diverse Forenbeiträge aufgegriffen und versuche in den rules den Sonnenaufgang über die vom Astro-Plugin gelieferten Werte
{ channel="astro:sun:local:rise#start" } und { channel="astro:sun:local:set#start" }
zu lösen, mit Berechnungen.
Leider habe ich keine einzige Lösung in den Foren etc. gefunden, die in meinem Kontext funktioniert.
Ich verwende die Methoden "plusMinutes(xx)" und "minusMinutes(xx)" bei eigenen Variablen oder Items. Leider wirft das immer eine Fehler aus. Ich habe das Gefühl, dass das mit diesen beiden Methoden nur in Verbindung mit Timern richtig funktioniert.
Hier mal ein Beispiel, dass ich ausprobiert habe:
// Test-Regel Datumsvergleich
rule "Test_OnTimer"
when
Time cron "0 /1 * * * ?"
then
// Variable fuer Zeitberechnungen
var String timTimestamp = String::format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", new Date())
logInfo("Test_OnTimer", "Aktueller Zeitstempel: " + timTimestamp)
var year = now.getYear
var month = now.getMonthOfYear
var day = now.getDayOfMonth
var datum = year+"-"+month+"-"+day+" "+Sun_Sunrise_Time.state <--- das funktioniert, ist aber bei den Jahreszahlen
doppelt gemoppelt, da dies im Datumswert mit drin ist
logInfo("Test_OnTimer", "Sonnenaufgang: " + datum)
var DateTime datSunrise = Sun_Sunrise_time.state <--- das funktioniert noch
logInfo("Test_OnTimer", "Sonnenaufgang: " + datSunrise)
datSunrise = datSunrise.plusMinutes(30) <--- hier kommt nun die Fehlermeldung
logInfo("Test_OnTimer", "Sonnenaufgang + 30 Minuten: " + datSunrise)
end
Was z. B. auch nicht geht ist folgendes: Der Ansatz die Minuten bis zum Sonnenaufgang ab Mitternacht berechnen, dann so gegen 04:00 Uhr eine cron laufen lassen und dann aus der Differenz von 04:00 Uhr und Mitternacht einen Timer generieren, der dann nach Ablauf (also zu Sonnenaufgang) z. B. die Rollos hochfährt.
.....
// Sonnenaufgangszeit in Variable holen
var DateTime datSunrise = Sun_Sunrise_time.state <-- Sonnenaufgangsdatum und -uhrzeit holen vom Astro-Plugin
// Minuten berechnen, von Mitternacht ab
var int intSunriseMinutes = (datSunrise.getHourOfDay() * 60) + datSunrise.getMinuteOfHour()
// cron Startzeit abziehen: 04:00 Uhr = 4 + 60 = 240 Minuten
int SunriseMinutes = intSunriseMinutes - 240
// Timer setzen und starten
createTimer(now.plusMinutes(intSunriseMinutes)) [|
//Rollos hoch
]
......
Hier nun meine Fragen/Bitten:
- es heißt doch, dass man in OH2 keine mathematischen oder sonstige Libraries mehr einbinden muss. Ist das richtig oder fehlt mir da vielleicht der eine oder andere import?
- hat jemand ein funktionierendes Beispiel für die Berechnung des Sonnenaufgangs bzw. Hilfe/Tipps/URLs für funktionierende Beispiele oder Erklärungen für Nicht-Java-Könnende, die es aber gerne lernen würden?
- sonstige Ansätze (außer den Einbau von Sensoren etc.)?
Ich dank euch schon mal sakrisch für eure Antworten.
Habe die Ehre
Cornel aus bei München
seit dem Umstieg auf openHAB2 habe ich mit dem Events für Sonnenauf- und Untergang zu kämpfen. Der Event über das Astro-Plugin wird ja in OH2 derzeit nicht unterstützt. Das ist einerseits kein Problem, da ich einen Helligkeitssensor in der Wetterstation auf dem Dach habe und damit dann meine Rollläden steuere.
In einem anderen Gebäude gibt es aber keine Wetterstation und derzeit auch keine anderen Außensensoren, somit habe ich diverse Forenbeiträge aufgegriffen und versuche in den rules den Sonnenaufgang über die vom Astro-Plugin gelieferten Werte
{ channel="astro:sun:local:rise#start" } und { channel="astro:sun:local:set#start" }
zu lösen, mit Berechnungen.
Leider habe ich keine einzige Lösung in den Foren etc. gefunden, die in meinem Kontext funktioniert.
Ich verwende die Methoden "plusMinutes(xx)" und "minusMinutes(xx)" bei eigenen Variablen oder Items. Leider wirft das immer eine Fehler aus. Ich habe das Gefühl, dass das mit diesen beiden Methoden nur in Verbindung mit Timern richtig funktioniert.
Hier mal ein Beispiel, dass ich ausprobiert habe:
// Test-Regel Datumsvergleich
rule "Test_OnTimer"
when
Time cron "0 /1 * * * ?"
then
// Variable fuer Zeitberechnungen
var String timTimestamp = String::format("%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS", new Date())
logInfo("Test_OnTimer", "Aktueller Zeitstempel: " + timTimestamp)
var year = now.getYear
var month = now.getMonthOfYear
var day = now.getDayOfMonth
var datum = year+"-"+month+"-"+day+" "+Sun_Sunrise_Time.state <--- das funktioniert, ist aber bei den Jahreszahlen
doppelt gemoppelt, da dies im Datumswert mit drin ist
logInfo("Test_OnTimer", "Sonnenaufgang: " + datum)
var DateTime datSunrise = Sun_Sunrise_time.state <--- das funktioniert noch
logInfo("Test_OnTimer", "Sonnenaufgang: " + datSunrise)
datSunrise = datSunrise.plusMinutes(30) <--- hier kommt nun die Fehlermeldung
logInfo("Test_OnTimer", "Sonnenaufgang + 30 Minuten: " + datSunrise)
end
Was z. B. auch nicht geht ist folgendes: Der Ansatz die Minuten bis zum Sonnenaufgang ab Mitternacht berechnen, dann so gegen 04:00 Uhr eine cron laufen lassen und dann aus der Differenz von 04:00 Uhr und Mitternacht einen Timer generieren, der dann nach Ablauf (also zu Sonnenaufgang) z. B. die Rollos hochfährt.
.....
// Sonnenaufgangszeit in Variable holen
var DateTime datSunrise = Sun_Sunrise_time.state <-- Sonnenaufgangsdatum und -uhrzeit holen vom Astro-Plugin
// Minuten berechnen, von Mitternacht ab
var int intSunriseMinutes = (datSunrise.getHourOfDay() * 60) + datSunrise.getMinuteOfHour()
// cron Startzeit abziehen: 04:00 Uhr = 4 + 60 = 240 Minuten
int SunriseMinutes = intSunriseMinutes - 240
// Timer setzen und starten
createTimer(now.plusMinutes(intSunriseMinutes)) [|
//Rollos hoch
]
......
Hier nun meine Fragen/Bitten:
- es heißt doch, dass man in OH2 keine mathematischen oder sonstige Libraries mehr einbinden muss. Ist das richtig oder fehlt mir da vielleicht der eine oder andere import?
- hat jemand ein funktionierendes Beispiel für die Berechnung des Sonnenaufgangs bzw. Hilfe/Tipps/URLs für funktionierende Beispiele oder Erklärungen für Nicht-Java-Könnende, die es aber gerne lernen würden?
- sonstige Ansätze (außer den Einbau von Sensoren etc.)?
Ich dank euch schon mal sakrisch für eure Antworten.
Habe die Ehre
Cornel aus bei München
Kommentar