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
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!