Astro Binding, alle Trigger in einer Rule

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

mad-mike
Beiträge: 403
Registriert: 6. Jan 2021 18:05
Answers: 2

Astro Binding, alle Trigger in einer Rule

Beitrag von mad-mike »

Moin zusammen,

kann man eine Rule machen, wo alle Trigger vom Astro binding in einer Rule Verarbeitet werden können und dann mittels :

Code: Alles auswählen

        sendBroadcastNotification(" Welches event???? ")                                 // Nachricht        

senden könnte.??

Oder muss ich wirklich für jeden eine einzelne Rule machen mit START, END usw??

Hintergrund:

Ich Experimentiere nebenbei mit dem Astro binding etwas hin und her, möchte aber gerne mal sehen, wann was passiert... ;)



ich denke an:

Code: Alles auswählen

rule "Astro"
when
    Channel "astro:sun:local:rise#event"  triggered  or
    Channel "astro:sun:local:nauticDusk#event" triggered  or
        
        ....
                       
then
        sendBroadcastNotification(" Welcher Channel???  welches Event???? ")                                 // Nachricht        
end


Danke und Gruss ;)
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

mad-mike
Beiträge: 403
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von mad-mike »

So in etwa:

Code: Alles auswählen

rule "Astro"
when
    Channel "astro:sun:local:rise#event"  triggered  or                         // Sonnenaufgang
    Channel "astro:sun:local:set#event" triggered  or                           // Sonnenuntergang
    Channel "astro:sun:local:noon#event" triggered  or                          // Mittag
    Channel "astro:sun:local:night#event" triggered  or                         // Nacht
    Channel "astro:sun:local:morningNight#event" triggered  or                  // Morgendliche Nacht
    Channel "astro:sun:local:astroDawn#event" triggered  or                     // Astronomische Morgendämmerung
    Channel "astro:sun:local:nauticDawn#event" triggered  or                    // Nautische Morgendämmerung
    Channel "astro:sun:local:civilDawn#event" triggered  or                     // Bürgerliche Morgendämmerung
    Channel "astro:sun:local:civilDawn#event" triggered  or                     // Astronomische Abenddämmerung
    Channel "astro:sun:local:nauticDusk#event" triggered  or                    // Nautische Abenddämmerung
    Channel "astro:sun:local:civilDusk#event" triggered  or                     // Bürgerliche Abenddämmerung
    Channel "astro:sun:local:eveningNight#event" triggered  or                  // Abendliche Nacht
    Channel "astro:sun:local:daylight#event" triggered                          // Tageslicht
then
        sendBroadcastNotification(" Welcher Channel???  welches Event???? ")                                 // Nachricht        
end

:?: :?:
Aber wie bekomme ich das in den "send Broadcast"??
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von udo1toni »

Es gibt auch für die Channel Trigger die impliziten Variablen

https://www.openhab.org/docs/configurat ... tion-block

receivedEvent liefert hier START oder END.
triggeringChannel liefert meines Wissens die komplette Channel UID, aus der man dann z.B. mittels

Code: Alles auswählen

triggeringChannel.split(":").get(3).split("#").get(0)
den nackten Channel Namen erhalten kann, also z.B. nauticDawn.

Für Testzwecke sicher interessant, ansonsten aber eher egal.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 403
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von mad-mike »

Danke dir. ;)

Code: Alles auswählen

    sendBroadcastNotification(""+receivedEvent + " "+triggeringChannel.split(":").get(3).split("#").get(0))                                 // Nachricht
so konnte ich dies nun erfolgreich einsetzen.
Ja natürlich ist das nur zum testen. Damit sehe ich halt, wann in etwa das Astro Binding wie Triggert...
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von udo1toni »

Das kannst Du Dir auch bequem anzeigen lassen, dafür gibt es die ganzen gleichnamigen Datetime Channel (die um 0 Uhr +300/-0 aktualisiert werden) Natürlich nur, solange man jeweils identische Offsets und Grenzwerte verwendet.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 403
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von mad-mike »

Ist das Astro Binding lokal? Oder ist Internet zwingend erforderlich?
Die Internet Verbindung Streikt alle Paar Wochen mal, und genau in dem Moment kam die Frage. :lol:

2.:
Ich habe gehofft, das man mit dem Astro binding noch meine Astro Rule unterstützt, welche derzeit ausschließlich von der PV anlage getriggert wird. ***

Das Funktioniert grundsätzlich sehr zufrieden stellend, :!: aber es kommt mal vor das die Helligkeit an den Ein und Ausschalt- Punkt kratzt...
Dann geht das licht hier immer an -> aus :D


***
In der jetzigen Jahreszeit passen die Trigger vom Astro binding einfach nicht zur Helligkeit. Das Licht würde viel zuspät einschalten, oder zu früh ausschalten. Also bleibe ich vorerst bei meiner PV als Trigger, und prüfe die Offset des Astro Bindings ob man hier noch was kombinieren kann...


Danke vielmals
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von udo1toni »

Das Astro Binding läuft ausschließlich lokal, es errechnet mittels Formeln die gelieferten Daten.
Es sind lediglich die genaue Uhrzeit und der genaue Standort als Quelldaten erforderlich, alles andere ist Mathematik.

Das Astro Binding liefert ja nur die Position von Sonne (und Mond) in Bezug auf den eigenen Standort, und daraus kann man dann Rückschlüsse auf die Helligkeit ziehen, allerdings nur unter der Voraussetzung, dass man einen wolkenlosen Himmel hat.
Wenn man also Astro allein für die Berechnung der Helligkeit heranzieht, wird das immer schief gehen, Du musst mindestens noch den Bewölkungsgrad als Größe nutzen.
Die PV liefert hier natürlich eine ganz gute Größe. Man könnte an dieser Stelle aber den Sonnenstand mit verwenden, um die theoretisch mögliche Leistung zu errechnen, dann kann man anhand der tatsächlichen Leistung ausrechnen, wie stark die Bewölkung derzeit ist. :)
Das funktioniert natürlich nur, solange die PV überhaupt Strom liefert. Meine 10kWp Anlage geht jedenfalls schon in Standby, bevor die Läden automatisch schließen.

Ich nutze zum Öffnen und Schließen der Läden die bürgerliche Dämmerung (civilDawn und civilDusk), wobei ich jeweils einen Offset von 10 Minuten mitgebe und zusätzlich mit earliest und latest noch Fixgrenzen definiert habe. Letztlich ist es ja auch Geschmacksache, wann man die Läden schließt, und oft ist es auch situationsabhängig (z.B. Gartenparty -> Läden sollen auch bei Dunkelheit offen bleiben)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 403
Registriert: 6. Jan 2021 18:05
Answers: 2

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von mad-mike »

Kann ich innerhalb einer Rule den Start bzw End trigger auswerten und ein Integer = 1 oder 2 von machen?

Ich stelle mir das so in etwa vor=

Code: Alles auswählen

Channel "astro:sun:local:daylight#event" triggered 
Start = 1
End = 2

So in etwa:

Code: Alles auswählen

var Integer iDay = 0                                                            // 0 = neutral, 1 = Start, 2 = End

rule "Daylight"
when
    Channel "astro:sun:local:daylight#event" triggered                          // Tageslicht  
then
    iDay = ????
    
end

Danke und gruss ;)
Gruss mad-mike

openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von udo1toni »

Du kannst den empfangenen Trigger innerhalb der Rule abfragen. Laut Doku sollte receivedEvent einen String mit dem triggernden Event (also in diesem Falle START oder END) enthalten.
Aber bitte immer im Hinterkopf behalten, dass es hier um ein paar Minuten Unterschied geht. Es geht um Beginn und Ende des jeweiligen Events, also z.B. civilDusk -> bürgerliche Abend-Dämmerung beginnt, wenn die Sonne beginnt, die -6 ° Höhenlinie zu unterschreiten und endet sobald sie die Höhenlinie vollständig passiert hat. Die Sonne ist kein Punkt, sondern ein Kreis, die Höhenlinie ist eine (imaginäre) Gerade. Mithin gibt es eine Passagedauer, das ist die Zeit zwischen START und END Event und die wird jeweils über einen eigenen Channel ausgegeben.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Oekel
Beiträge: 142
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Astro Binding, alle Trigger in einer Rule

Beitrag von Oekel »

(Muss das Thema noch mal auf machen, da es wie A* auf Eimer passt ;)
Bisher war ich mit sun:daylight#eventTriggered Event: END absolut ausreichend bedient.
Doch als ich mich mit den Winkelunterschieden von "Astronomische ..." "Bürgerliche ..." und "Nautische ..." auseinander gesetzt habe, wollte ich genau diesen Test fahren.
mad-mike hat geschrieben: 16. Nov 2023 20:19 So in etwa:

Code: Alles auswählen

rule "Astro"
when
    Channel "astro:sun:local:rise#event"  triggered  or                         // Sonnenaufgang
    Channel "astro:sun:local:set#event" triggered  or                           // Sonnenuntergang
    Channel "astro:sun:local:noon#event" triggered  or                          // Mittag
    Channel "astro:sun:local:night#event" triggered  or                         // Nacht
    Channel "astro:sun:local:morningNight#event" triggered  or                  // Morgendliche Nacht
    Channel "astro:sun:local:astroDawn#event" triggered  or                     // Astronomische Morgendämmerung
    Channel "astro:sun:local:nauticDawn#event" triggered  or                    // Nautische Morgendämmerung
    Channel "astro:sun:local:civilDawn#event" triggered  or                     // Bürgerliche Morgendämmerung
    Channel "astro:sun:local:civilDawn#event" triggered  or                     // Astronomische Abenddämmerung
    Channel "astro:sun:local:nauticDusk#event" triggered  or                    // Nautische Abenddämmerung
    Channel "astro:sun:local:civilDusk#event" triggered  or                     // Bürgerliche Abenddämmerung
    Channel "astro:sun:local:eveningNight#event" triggered  or                  // Abendliche Nacht
    Channel "astro:sun:local:daylight#event" triggered                          // Tageslicht
then
        sendBroadcastNotification(" Welcher Channel???  welches Event???? ")                                 // Nachricht        
end
Ergo hab ich mir nun einige Tage oben genannte Ereignisse via Telegram ausgeben lassen.
Was nun auffällt bzw. mich extrem irritiert ist, dass alle ein Event: START & Event: END haben.

Bis auf:
- sun:night#
- sun:eveningNight#


Wäre es möglich, dass ihr das bei euch gegenprüft? Kann mir nicht erklären, warum dies fehlt.

Antworten