[SOLVED)Astro Bindung - Wie setze ich das denn nun ein?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

[SOLVED)Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von Boris099 »

Pi4, OH 2.5.12
Ich habe bisher das Astro Bindung nicht verwendet, da ich im Haus einige PIRs mit Luminance Sensor besitze,
und bisher damit meine Schaltlogik gesteuert habe.
Nun habe ich mir ein neues Spielzeug eingerichtet, das ist ein Reed-Kontakt im Außenbereich am Tor, womit ich abhängig
von Tor Auf/Zu die Beleuchtung in der Einfahrt steuern möchte. Also ich denke ich brauche das Astro Binding,
um das Licht auch nur zu Schalten wenn es Dunkel ist.
OK, Binding ist installiert und das Thing ist auch da - und nun erschlägt es mich mit Channels :D
Meine Güte ich wusste gar nicht wie viele Arten von Sonnenuntergängen existieren, ich dachte es gibt nur einen, Pffff
Unabhängig davon kann ich mir nicht vorstellen welchen Channel ich hier für meine Zweck sinnvoll anwende,
und wie ich das in das Rule einbaue, Könnt ihr mir weiterhelfen?

Meine Location ist gesetzt und ich bekomme die entsprechenden Daten angezeigt
Bild_2021-12-16_181622.png
Ich habe das Rule schon mal gebaut, halt jetzt noch ohne Sonnenuntergang-Abhängigkeit.
Ich denke ich muss den Sonnenuntergang mit Offset (also wenn es wirklich dunkel wird, der nautische Wert sieht ja schon ganz gut aus)
verwenden und dann die Gültigkeit mit dem Sonnenaufgang mit Offset beenden oder etwa ganz anders?
Habt ihr hier einen Tipp wie das aussehen sollte?
Nehme ich da einfach z.B. astro:sun:local:nauticDusk#start und astro:sun:local:nauticDawn#start
aber wie lese ich nur die Uhrzeit als Trigger, brauche ja kein Datum und wie baue ich dann evtl. noch ein Offset ein?

Das ist das momentane Rule

Code: Alles auswählen

// Globale Variablen
var Timer Einfahrt_Timer = null                                              
// Globale Konstanten
val Integer Einfahrt_TimeOut = 300                                           

rule "Einfahrt_Licht"
when
        Item DW2_TOR received update ON
then
        Einfahrt_Timer?.cancel                                               
        if(Lampe_Einfahrt != ON) {                                           
        Lampe_Einfahrt.sendCommand(ON)
        }
        if(LED_Nachbar != ON) {
        LED_Nachbar.sendCommand(ON)
        }
        Einfahrt_Timer = createTimer(now.plusSeconds(Einfahrt_TimeOut), [|   
        Lampe_Einfahrt.sendCommand(OFF)                                      
        LED_Nachbar.sendCommand(OFF)
        ])
end
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Boris099 am 20. Dez 2021 11:12, insgesamt 3-mal geändert.
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von udo1toni »

Thema Sonnenuntergang/Sonnenaufgang und die verschiedenen Werte:

Sonnen auf/Untergang ist definiert als der Zeitpunkt, wenn die Sonne die 0° Höhenlinie kreuzt.
Die Bürgerliche Dämmerung ist beim kreuzen der -6° Höhenlinie erreicht.
Die Nautische Dämmerung findet bei -12°Höhe statt.
Die astronomische Dämmerung ist bei -18° Höhe erreicht.
Da es sich bei der Sonne nicht um einen unendlich kleinen Punkt handelt, gibt es einen definierten Zeitpunkt, zu dem die Sonne beginnt, die jeweilige Höhenlinie zu berühren und einen Zeitpunkt, an dem sie damit aufhört. Diese beiden Zeitpunkte werden als Beginn und Ende des jeweiligen Ereignisses definiert.
Die DateTime Channel liefern die Zeitpunkte als Zeitstempel. Zusätzlich gibt es noch die Range Event Channel, welche das Ereignis START und END liefern, wenn die jeweiligen Zeitpunkte erreicht werden.

Weiterhin kannst Du in jedem Channel komplett unabhängig vom Rest jeweils drei Werte setzen, das sind die Grenzwerte earliest und latest (frühester Zeitpunkt, spätester Zeitpunkt) sowie offset (Versatz zum tatsächlichen Zeitpunkt in Minuten, negative Werte -> früher als real, positive Werte -> später als real).

Du willst Dich überhaupt nicht mit Uhrzeit oder Datum herum schlagen! Du möchtest ein Item, welches zu einem variablen Zeitpunkt von Tag auf Nacht umschaltet und umgekehrt. Welche der möglichen Trigger Du dafür verwendest, bleibt Dir überlassen. Grundsätzlich sieht das aber so aus:

Code: Alles auswählen

rule "Tag"
when
    Channel "astro:sun:local:civilDawn#event" triggered START
then
    Nacht.postUpdate(OFF)
end

rule "Nacht"
when
    Channel "astro:sun:local:nauticDusk#event" triggered START
then
    Nacht.postUpdate(ON)
end
Nun hast Du ein Item Nacht, welches nachts ON ist und tagsüber OFF. Dieses kannst Du bequem in Deiner Rule abfragen.

Wenn die Zeit um einige Minuten nicht passt,. kannst Du im jeweiligen Range Event Channel den Offset setzen. die Zeitanzeigen bleiben davon unberührt. Sollen die Zeiten mit Offset angezeigt werden, musst Du den Offset auch in den betreffenden DateTime Channeln eintragen.


EDIT: Tippfehler in der Rule, Trigger muss mit einem großen C geschrieben werde...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von Boris099 »

Ok Super, das klingt cool.
Hast du aus einem bestimmten Grund einmal civil und einmal nautic genommen oder nur Zufall?
Und im Channel direkt, d.h. in paperui stelle ich einen eventuellen Offset ein, muss ich gleich checken bin gerade noch unterwegs.
Danke dir
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
Snatsch
Beiträge: 455
Registriert: 9. Jan 2021 22:55
Answers: 0

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von Snatsch »

sind 2 verschiedene Sachen z.B. Bürgerliche Dämmerung und Nautische Morgendämmerung.
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von udo1toni »

Boris099 hat geschrieben: 16. Dez 2021 22:08 Hast du aus einem bestimmten Grund einmal civil und einmal nautic genommen oder nur Zufall?
Die Idee war, zu zeigen, dass es wurscht ist, welche Events Du nutzt.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von Boris099 »

Also "Nacht" habe ich nun hinein montiert, cool ist ja dass man so einfach mit diesen Rules (dein Beispiel) ein Item erstellt, war mir nicht bewusst.
Jetzt fehlt mir noch eine Feinheit, wobei ich nicht weiß wie man das ausdrückt... wenn die Lampen vorher schon an waren, dann sollen sie auch
mit dem Timer "nicht" ausgeschaltet werden. Wahrscheinlich irgendwie mit dem state, oder?
Das Rule sieht momentan wie folgt aus:

Code: Alles auswählen

// Globale Variablen
var Timer Einfahrt_Timer = null

// Globale Konstanten
val Integer Einfahrt_TimeOut = 300

rule "Einfahrt_Licht"
when
        Item DW2_TOR received update ON
then
        if(Nacht != OFF) {
                Einfahrt_Timer?.cancel
                if(Lampe_Einfahrt != ON) {
                Lampe_Einfahrt.sendCommand(ON)
                }
                if(LED_Nachbar != ON) {
                LED_Nachbar.sendCommand(ON)
                }
                if(Lampe_Kandelaber != ON) {
                Lampe_Kandelaber.sendCommand(ON)
                }
                Einfahrt_Timer = createTimer(now.plusSeconds(Einfahrt_TimeOut), [|
                Lampe_Einfahrt.sendCommand(OFF)
                LED_Nachbar.sendCommand(OFF)
                ])
        }
end
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von OliverCJ »

Moin!

Mag sein, dass da irgendwas an mir vorbeigegangen ist, aber eine rule erstellt normalerweise kein Item selbstständig. Das musst Du vorher schon definieren (hier wird dann gerne mal der Begriff "Dummy-item" verwendet, weil es nicht an einen channel eines thing gebunden ist. Korrekter wäre daher wohl "ungebundenes item"). Hier wäre es also ein item vom Typ Switch, welches Du dann in einer rule ON oder OFF schalten kannst.

Aber wie gesagt, vielleicht habe ich da auch was verpasst und es funktioniert tatsächlich, dass eine rule ein item erstellt... ???

Was die rule angeht, versuch mal

Code: Alles auswählen

...
if(Lampe_Einfahrt.state == OFF) {
Lampe_Einfahrt.sendCommand(ON)
}
...
Auch bei den anderen If-Abfragen, immer auf .state abfragen, dann sollte das gehen..

Oliver

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von Boris099 »

Hi Oliver,
Udo hatte oben ein separates rule als Beispiel gezeigt (auch hier unten nochmal), und damit wird das Item "Nacht" erstellt.
Ich habe das genauso auch erstellt und in meinem anderen Rule verwendet, das hat OH ohne Meckern aktzeptiert,
gehe davon aus das funktioniert, denn gerade jetzt ist die "Nacht" OFF und die Lampen bleiben aus, cool!
Aber meine Frage war ja genau andersrum, ich bekomme die Lampen ja an, und frage auch, ob sie an waren, aber ich möchte halt die Lampen ON lassen, wenn sie vorher schon evtl. manuell angeschaltet waren. Also der Timer soll diese Lampen dann nicht anfassen.

Das ist das rule für das "Nacht" item.

Code: Alles auswählen

rule "Tag"
when
    channel "astro:sun:local:civilDawn#event" triggered START
then
    Nacht.postUpdate(OFF)
end
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

Boris099
Beiträge: 383
Registriert: 19. Feb 2020 20:51
Answers: 3
Wohnort: Saarbrücken

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von Boris099 »

Kurzer Nachtrag es braucht doch den Dummy-Switch, also einfach den Eintrag "Switch Nacht" in der Items Datei -> und läuft:-)

Jetzt bleib nur noch mein Problem wie oben schon gefragt, wie hindere ich den Timer diese Lampen auszuschalten, die vorher manuell schon ON waren?
Raspberry 4, Rev.1.2b, 4GB, Openhab 2.5.12 (OH3 kommt im Winter dran:-))

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Astro Bindung - Wie setze ich das denn nun ein?

Beitrag von int5749 »

Boris099 hat geschrieben: 17. Dez 2021 10:51 Udo hatte oben ein separates rule als Beispiel gezeigt (auch hier unten nochmal), und damit wird das Item "Nacht" erstellt.
Also Items werden ausschließlich in einer Item-Datei oder über die Main UI erstellt. Aus einer Rule herause funktioniert dies nicht!
Boris099 hat geschrieben: 17. Dez 2021 10:51 Ich habe das genauso auch erstellt und in meinem anderen Rule verwendet, das hat OH ohne Meckern aktzeptiert,
Hier lege ich Die Visual Studio Code ans Herz. Mit dem OH AddOn hast Du neben einer Codeprüfung auch die Möglichkeit Items direkt von den Channels heraus zu erstellten => Hier dann übrigens in eine .Items Datei.
Boris099 hat geschrieben: 17. Dez 2021 10:51 gehe davon aus das funktioniert, denn gerade jetzt ist die "Nacht" OFF und die Lampen bleiben aus, cool!
Nun ja, dass dies nicht funktioniert hat, zeigte ja Dein nächster Post ;-)
Boris099 hat geschrieben: 17. Dez 2021 10:51 Aber meine Frage war ja genau andersrum, ich bekomme die Lampen ja an, und frage auch, ob sie an waren, aber ich möchte halt die Lampen ON lassen, wenn sie vorher schon evtl. manuell angeschaltet waren. Also der Timer soll diese Lampen dann nicht anfassen.
Hier muss Du noch für Dich entscheiden, ob eine der beiden Lampen die andere beeinflussen kann oder jede einzeln reagieren soll? Wenn einzeln, braucht es 2 Timer.

Beispiel

Code: Alles auswählen

if (Lampe_Einfahrt.state != ON) {
    Lampe_Einfahrt.sendCommand(ON)
    Einfahrt_Timer = createTimer(now.plusSeconds(Einfahrt_TimeOut), [|
    Lampe_Einfahrt.sendCommand(OFF)
    ])
}
Natürlich darf die dann oben in der Rule nicht mehr geschaltet sein.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Antworten