Sonnenaufgang und Sonnenuntergang mit openHAB berechnen

Ab und zu benötigt man zur Steuerung nicht nur fixe Uhrzeiten, sondern auch astronomische Ereignisse z.B. Sonnenaufgang oder Sonnenuntergang.

Wir möchten zum Beispiel die Weihnachtsbeleuchtung einschalten, wenn die Sonne untergegangen ist. Oder die Jalousien öffnen, eine Stunde bevor die Sonne aufgegangen ist.

Dazu benötigt man in openHAB das Astro-Binding.

Astro.things

In der Things-Datei dazu die notwendige Konfiguration vornehmen und mit den GPS-Koordinaten vervollständigen:

astro:sun:home [ geolocation="xx.xxxxxx,xx.xxxxxx", interval=60]
astro:moon:home [ geolocation="xx.xxxxxx,xx.xxxxxx", interval=60]

Orte kann man sich hier in GPS-Koordinaten darstellen lassen.

Astro.items

Nun kann man aus der Dokumentation die Items in seine Konfiguration übernehmen:

DateTime Sunrise_Time "Sonnenaufgang [%1$tH:%1$tM]" {channel="astro:sun:home:rise#start"}
DateTime Sunset_Time "Sonnenuntergang [%1$tH:%1$tM]" {channel="astro:sun:home:set#start"}
Number Azimuth "Azimut" {channel="astro:sun:home:position#azimuth"}
Number Elevation "Höhenlage" {channel="astro:sun:home:position#elevation"}
String MoonPhase "Mondphase" {channel="astro:moon:home:phase#name"}

Astro.rules

Etwas komplizierter wird es mit den Regeln. Hier fehlt im Gegensatz zu openHAB 1.x in der 2.x Version noch die Funktion „trigger channels“ anzusprechen (das Verhalten ist hier und hier beschrieben).

Behelfen kann man sich aber, indem man die Regel z.B. alle 8 Minuten startet und dann entsprechend reagiert (bis die oben genannten Requests umgesetzt wurden):

rule "sunrise-sunset"
when
 //Channel 'astro:sun:home:rise#event' triggered START 
 Time cron "8 * * * * ?"
then
 val now_ms = now.millis
 val sunrise = (Sunrise_Time.state as DateTimeType)
 val sunset = (Sunset_Time.state as DateTimeType)

 logInfo("Astro Rules", "sunrise: "+ sunrise)
 logInfo("Astro Rules", "sunset: "+ sunset)
 logInfo("Astro Rules", "now in ms: "+ now_ms)
end

 

0 Kommentare

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.