Relativ zum Sonnenstand: Dafür nutzt Du in der Tat das Astro Binding. Hast Du den Standort des openHAB Systems in Paper UI schon festgelegt, wird beim Installieren des Astro Bindings automatisch ein Thing "Lokale Sonnendaten" erzeugt. Ansonsten musst Du das Thing halt von Hand erzeugen - oder in einer *.things Datei, da Astro ein v2 Binding ist.
Sieht dann so aus:
Code: Alles auswählen
Thing astro:sun:home "Sonne" [
geolocation="breite,länge,höhe",
interval=300
]
breite, länge und höhe sind natürlich durch die entsprechenden Zahlen zu ersetzen.
Das interval ist in Sekunden angegeben und bestimmt, wie oft die Werte aktualisiert werden. Für die Zeitpunkte reicht eine Berechnung um Mitternacht, auch die Trigger werden immer ausgeführt. Wer aber den Sonnenstand in Azimuth und Elevation sehen möchte, braucht eine ständige Aktualisierung der Daten.
Alle Channel werden automatisch mit Default Werten angelegt. Möchtest Du abweichende Werte definieren, so musst Du die Definition nur um die Channel mit abweichenden Werten ergänzen, z.B. so:
Code: Alles auswählen
Thing astro:sun:home "Sonne" [
geolocation="breite,länge,höhe",
interval=300
] {
Channels:
Type start : civilDawn#start [
offset=10,
earliest="06:00",
latest="08:00"
]
Type rangeEvent : civilDawn#event [
offset=10,
earliest="06:00",
latest="08:00"
]
Type start : civilDusk#start [
offset=15,
earliest="16:00",
latest="22:00"
]
Type rangeEvent : civilDusk#event [
offset=15,
earliest="16:00",
latest="22:00"
]
}
Hier werden sowohl die Anzeige (#start) als auch der Rule Trigger (#event) für die bürgerliche Dämmerung (Auf- und Untergang) manipuliert. Ein Offset von 10 bedeutet, dass das Ereignis zehn Minuten später stattfindet, earliest und latest sind Unter- und Obergrenze. Wenn also um 5 Uhr Sonnenaufgang ist, triggert eine passende Rule dennoch erst um 6 Uhr. Ist um 5:55 Uhr Sonnenaufgang, triggert die Rule um 6:05 Uhr. Ist um 8:30 Sonnenaufgang, triggert die Rule dennoch schon um 8:00 Uhr.
Entsprechendes gilt dann für den Sonnenuntergang.
Um eine Rule triggern zu lassen, musst Du das Event nutzen:
Code: Alles auswählen
rule "Sonnenuntergang"
when
Channel "astro:sun:home:civilDusk#event" triggered START
then
Steckdose_01.sendCommand(ON)
end
Diese Rule triggert, sobald der bürgerliche Sonnenuntergang beginnt (das heißt, die Sonne beginnt, die gedachte -6° Linie zu berühren).
Die Rule sendet zu diesem Zeitpunkt das Kommando ON an das Item Steckdose_01.
Beim Trigger END beendet die Sonne die Berührung, das ist also wenige Minuten später).
Eine Zeitsteuerung realisierst Du über den Time cron Trigger:
Code: Alles auswählen
when
Time cron "0 0 12 * * ?" // täglich 12:00:00 mittags
then
Für die exakte Schreibweise suche nach
quartz cron. In Kürze: die erste Stelle ist die Sekunde, die zweite Stelle ist die Minute, die dritte Stelle ist die Stunde, die vierte Stelle ist der Tag im Monat, die fünfte Stelle ist der Monat im Jahr, die sechste Stelle ist der Wochentag (1 - 7, entspricht Sonntag bis Samstag). Man kann optional auch das Jahr an siebter Stelle angeben.
Felder, die keine Rolle spielen, werden mit einem * markiert (im Beispiel Tag und Monat). Ein gültiger Cron-Ausdruck muss exakt ein Fragezeichen enthalten, und zwar entweder für den Tag im Monat oder für den Wochentag. Damit fällt die Möglichkeit flach, eine Steckdose nur dann einzuschalten, wenn gerade Freitag der 13. ist

aber man kann diesen "Mangel" natürlich anders umgehen

Man darf auch Bereiche (1-5) oder Mengen (1,3,7,15,17-25) angeben sowie bei den Wochentagen alternativ MON,TUE,WED,THU,FRI,SAT,SUN sowie MON-FRI oder auch SAT,SUN (oder natürlich auch beliebige Kombi) angeben, das funktioniert entsprechend auch für die Monate. Abstände sind auch möglich, z.B. 0/5 an zweiter Stelle für alle 5 Minuten, beginnend mit 00. Auch Sonderfunktionen wie der letzte Sonntag im März sind einfach machbar.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet