openHAB und das Astro Binding
Die ersten Versuche mit meiner Funksteckdose machte ich davon abhängig, ob jemand von uns zu Hause war; es war Weihnachtszeit, und waren wir zu Hause, so durfte die Lichterkette an sein.
Saisonal bedingt hängt an der Funksteckdose inzwischen ein LED-Band, und es ist nicht nötig, dieses ständig leuchten zu lassen. Ich könnte mir Regeln definieren, die das Band zu bestimmten Uhrzeiten an- und ausschalten; ich könnte es aber auch vom Stand der Sonne abhängig machen. Das klingt nun irgendwie ein Stück weit irre, ist in der Praxis aber ziemlich einfach umzusetzen: openHAB bietet hierfür das Astro binding. Das müssen wir in die addons/ schieben (cp org.openhab.binding.astro-$VERSION.jar /opt/openhab/addons/), konfigurieren – und schon können wir eine Fülle an Parametern nutzen, um unser Regelwerk zu verfeinern.
## configurations/openhab.cfg
############################# Astro Binding ###################################
## Für diese Demo setze ich die Koordinaten auf den Eiffelturm in Paris
astro:latitude=48.858370
astro:longitude=2.294481
# astro:interval=
Die Lat/Long-Angaben habe ich analog zu meiner mqtt-Konfiguration gemacht. Ist das JAR an Ort und Stelle und die Konfiguration syntaktisch korrekt, werden beim start_debug.sh Meldungen wie diese hier auftauchen:
09:04:19.438 [DEBUG] [.a.internal.bus.AstroActivator:32 ] - Astro binding has been started.
09:04:20.954 [INFO ] [.b.a.internal.bus.AstroBinding:70 ] - AstroConfig[latitude=48.858370,longitude=2.294481,interval=disabled,systemTimezone=Europe/Berlin (CET +0100),daylightSavings=false]
Großartig! Darauf lässt sich nun ein Regelwerk aufsetzen, wir können Items definieren, Switches, Events – wie gehabt. Zu beachten ist hierbei natürlich, dass wir Map-Files benötigen, um die Rückgabewerte „einzudeutschen“; aufgrund gestiegener Nachfrage verwalte ich die Konfigurationen nun per GitHub, und ihr dürft sie gerne aus Ausgangspunkt für eigene Spielereien verwenden. Sie gehören nach /opt/openhab/configurations/transform.
- Ich nutze eines, das mir die Mondphasen übersetzt: Mond.map
- eines für die Jahreszeiten Jahreszeit.map und
- eines für die Tierkreiszeichen Tierkreiszeichen.map
Als erstes wollen wir uns in unserer Sitemap eine kleine Übersicht anzeigen lassen. Der Übersichtlichkeit halber erstellen wir uns dazu eine neue Item-Konfiguration: astro.items
## /opt/openhab/configurations/items/astro.items
Group Astro <sun> (All)
DateTime Sonnenaufgang_Time "Sonnenaufgang [%1$tH:%1$tM]" <sun> (Astro) { astro="planet=sun, type=rise, property=start" }
DateTime Sonnenuntergang_Time "Sonnenuntergang [%1$tH:%1$tM]" <sun> (Astro) { astro="planet=sun, type=set, property=end" }
String Mondphase "Mondphase [MAP(Mond.map):%s]" <moon> (Astro) { astro="planet=moon, type=phase, property=name" }
String Sternzeichen "Sternzeichen [MAP(Tierkreiszeichen.map):%s]" <colorwheel> (Astro) { astro="planet=sun, type=zodiac, property=sign" }
String Jahreszeit "Jahreszeit [MAP(Jahreszeit.map):%s]" <sun_clouds> (Astro) { astro="planet=sun, type=season, property=name" }
// Setzt den Switch zur Zeit auf ON, gefolgt von OFF
// Event genau zum Sonnenaufgang
Switch Sonnenaufgang_Event { astro="planet=sun, type=rise, property=start" }
// Event genau zum Sonnenuntergang
Switch Sonnenuntergang_Event { astro="planet=sun, type=set, property=end" }
// Event 20min *nach* Sonnenaufgang
Switch Sonnenaufgang_20A_Event { astro="planet=sun, type=rise, property=start, offset=20" }
// Event 10min *vor* Sonnenaufgang
Switch Sonnenaufgang_10B_Event { astro="planet=sun, type=rise, property=start, offset=-10" }
// Event 20min *nach* Sonnenuntergang
Switch Sonnenuntergang_20A_Event { astro="planet=sun, type=set, property=end, offset=20" }
// Event wenn Vollmond ist
Switch Vollmond_Event
In der Sitemap kann es nun einfach eingebunden werden; für diese Demo erstelle ich eine neue sitemap und nenne sie astro.sitemap.
sitemap default label="Mein Haus" {
Frame {
Group item=Astro
}
}
Bringt man nun alles zusammen und startet den Dienst im Debug-Mode, so erhält man unter anderem Output wie diesen:
12:42:22.411 [INFO ] [c.internal.ModelRepositoryImpl:80 ] - Loading model 'astro.sitemap'
12:42:22.528 [INFO ] [c.internal.ModelRepositoryImpl:80 ] - Loading model 'astro.items'
12:42:22.574 [DEBUG] [i.internal.GenericItemProvider:154 ] - Processing binding configs for items from model 'astro.items'
12:42:22.578 [DEBUG] [i.internal.GenericItemProvider:133 ] - Read items from model 'astro.items'
12:42:23.575 [INFO ] [.o.u.w.i.servlet.WebAppServlet:79 ] - Started Classic UI at /openhab.app
12:42:26.495 [DEBUG] [.a.internal.bus.AstroActivator:32 ] - Astro binding has been started.
12:42:26.801 [INFO ] [.b.a.internal.bus.AstroBinding:70 ] - AstroConfig[latitude=48.85837,longitude=2.294481,interval=disabled,systemTimezone=Europe/Berlin (CET +0100),daylightSavings=false]
12:42:29.820 [DEBUG] [a.internal.job.AbstractBaseJob:40 ] - Starting Astro DailyJob
12:42:29.841 [DEBUG] [.b.a.internal.job.JobScheduler:207 ] - Scheduled job with name Season at 2015-03-20 23:46:00
12:42:29.846 [DEBUG] [.b.a.internal.job.JobScheduler:212 ] - Skipping job with name Sonnenaufgang_Event for today, starttime is in the past
12:42:29.848 [DEBUG] [.b.a.internal.job.JobScheduler:212 ] - Skipping job with name Sonnenaufgang_10B_Event for today, starttime is in the past
12:42:29.848 [DEBUG] [.b.a.internal.job.JobScheduler:207 ] - Scheduled job with name Sonnenuntergang_Event at 2015-02-24 18:26:00
12:42:29.849 [DEBUG] [.b.a.internal.job.JobScheduler:207 ] - Scheduled job with name Sonnenuntergang_20A_Event at 2015-02-24 18:46:00
12:42:29.849 [DEBUG] [.b.a.internal.job.JobScheduler:212 ] - Skipping job with name Sonnenaufgang_20A_Event for today, starttime is in the past
12:42:29.851 [INFO ] [runtime.busevents :26 ] - Sonnenaufgang_Time state updated to 2015-02-24T07:45:00
12:42:29.852 [INFO ] [runtime.busevents :26 ] - Jahreszeit state updated to Winter
12:42:29.853 [INFO ] [runtime.busevents :26 ] - Sonnenuntergang_Time state updated to 2015-02-24T18:26:00
12:42:29.853 [INFO ] [runtime.busevents :26 ] - Sternzeichen state updated to Pisces
12:42:29.854 [INFO ] [runtime.busevents :26 ] - Mondphase state updated to Waxing Crescent
12:42:29.854 [DEBUG] [.b.a.internal.job.JobScheduler:207 ] - Scheduled job with name Vollmond_Event at 2015-03-05 19:07:00
Abrufbar ist die Seite per http://$SERVERNAME:8080/openhab.app?sitemap=astro; ich nutze greent, da ist die Adresse einfach http://localhost:8080/greent/, die astro.sitemap habe ich dann ausgewählt. Basierend auf den Items & Co. können nun natürlich wiederum Regeln definiert werden: schalte das LED-Band 20min vor Sonnenaufgang an. Schalte es zu Sonnenuntergang ab, aber nur, wenn draußen weniger als 5°C herrschen. Schalte es zu Vollmond an, aber nur im Winter und… okay, ihr versteht. Meine astro.rules ist noch in Arbeit; das Partnerdings sabotiert sie, indem es ständig auf dem Knopf der Funksteckdose herumdrückt. Sobald ich eine einigermaßen getestete Version habe, stelle ich sie als Idee hier (bzw. auch auf GitHub) zur Diskussion.
9 Kommentare
Von: Jürgen
2015-03-25 23:52:27 +0100
Hi,
Danke für die sehr ausführliche Erklärung zum Astro-Binding, ich konnte mit Hilfe deiner Beschreibung auf Anhieb das Astro auf meinem openhab-raspberry-pi einrichten um meine Rolläden auf KNX anzusteuern, bisher hatte ich eine timer-rule die ständig manuell entsprechend der Jahreszeit nachgestellt werden musste.
Besonders gut ist die Sache mit den 20 Minuten nach Sonnen- Auf/Untergang, es passt dadurch wirklich sehr genau !
Bis dann Jürgen...........
Von: Chris
2016-02-08 00:40:40 +0100
Hallo,
Bei mir klappt das Astro Binding nicht. Hast du einen Tipp für mich? Fehler bei der Initialisierung... Wollte darüber meine Rollos steuern. Hast du vielleicht dafür eine passende rule bzw Sitemap. Bin totaler Anfänger aber deine Beispiele haben mir schon sehr geholfen. Vielen dank!
Von: Marianne M. Spiller
2016-02-08 13:14:56 +0100
Hi Chris,
welche OpenHAB-Version setzt du denn ein? Kannst du den Output der Debug-Konsole mal zeigen? An der Sache mit den Rollos sitze ich gerade, hab aber leider noch keine Aktoren, so dass ich es nicht wirklich testen kann :-/
Viele Grüße,
Marianne
Von: Chris
2016-02-08 14:23:12 +0100
Hi,
danke für die schnelle Antwort. Ich nutze die Version 1.8.0 von openhab.
Ich versuche gerade schon herauszufinden, wie ich den debug starten kann, start_debug.sh geht bei mir leider nicht...
Wenn Du eine Idee hättest, wäre ich dir sehr dankbar. Ich habe gefühlt schon das gesamte Netz abgesucht ;-)
LG
Chris
Von: Marianne M. Spiller
2016-02-08 14:27:53 +0100
Hm, ich hab vor etwa zwei Wochen ein Update meines 1.7.1-Produktivsystems auf 1.8 versucht und bin kläglich gescheitert - da lief irgendwie überhaupt nichts mehr rund. Ehe ich das nochmal angehe wollte ich es in einer Testumgebung ausprobieren. Die Twitter-Action hat beispielsweise überhaupt nicht funktioniert...
Insofern: zu 1.8 kann ich im Moment wenig sagen. Unter 1.7.1 läuft alles fehlerfrei :-/
Viele Grüße!
Von: Chris
2016-02-08 14:36:03 +0100
ok, dann trotzdem vielen Dank! Falls Du noch etwas finden solltest, gib mir gerne bescheid :-) Ich schau des öfteren auf deine Seite :-)
LG
Von: Marianne M. Spiller
2016-02-13 14:24:09 +0100
Nimm doch mal die 1.8.1, das ist die aktuelle STABLE - ich bin gerade dabei, sie innerhalb einer Testumgebung aufzusetzen, und im Zusammenspiel mit dem Astro-Binding tut alles tadellos bei mir. Und wenn start_debug.sh bei dir nicht funktioniert, scheint da ja insgesamt was im Argen zu liegen :-)
Von: Marvin Emil Brach
2015-02-24 18:03:22 +0100
Nice!Muss ich mal nem Kollegen sagen, der renoviert gerade und installiert EIB, mal schauen ob das dort sinvoll integrierbar ist :D
Von: Deltatag
2016-12-17 16:08:32 +0100
Vielen Dank für die gute Anleitung :) Damit konnte ich die Astro Binding endlich zum laufen bringen ;)
Hinterlasse einen Kommentar
Ich freue mich über jeden Kommentar, es sei denn, er ist blöd.
Deshalb sind die Kommentare auf dieser Seite auch generell moderiert.