Astro Rule für Rollladen öffnen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Selter
Beiträge: 59
Registriert: 9. Mär 2018 16:06
Answers: 0

Astro Rule für Rollladen öffnen

Beitrag von Selter »

Hallo,

kann mir bitte jemand mit dieser Regel helfen - sie wird nicht ausgelöst.

Things:

Code: Alles auswählen

 astro:sun:r-ogostrise "Astro: Sun r-ogostrise"    [ geolocation="xxxxxxx", interval=600 ] {
    Channels:
        Type rangeEvent : rise#event [
                offset=3
        ]
        Type start : rise#start [
                earliest="08:30", latest="10:00"
        ]
        Type end : rise#end [
                earliest="08:32", latest="10:02"
        ]
    }

Rule:

Code: Alles auswählen

rule "Rollladen OGost AUF"                                               
    when
        Channel 'astro:sun:r-ogostrise#event' triggered START
    then
        GrolloOpenO2.members.forEach[ i | i.sendCommand(0) ]
        Thread::sleep(100)
                val actions = getActions("pushover", "pushover:pushover-account:soundNone")
                actions.sendHtmlMessage("Rollläden geöffnet OG ost", "openHAB3")                
end
In der Gruppe "GrolloOpenO2" ist aktuell nur ein Item.
Manuell lässt sich der Rollladen über die UI aber steuern, das Item arbeitet also korrekt.

Danke
Selter
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh

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

Re: Astro Rule für Rollladen öffnen

Beitrag von udo1toni »

Dein Channel ist falsch :)
Hier mal mein Astro-Thing:

Code: Alles auswählen

// Astro
Thing astro:sun:local "Sonne" @ "zuhause" [geolocation="50.1,9.2,130", interval=300] {
    Channels:
        Type start : civilDawn#start [
            offset=10,
            earliest="06:00",
            latest="08:00"
        ]
        Type start : civilDusk#start [
            offset=15,
            earliest="16:00",
            latest="22:00"
        ]
        Type rangeEvent : civilDawn#event  [
            offset=10,
            earliest="06:00",
            latest="08:00"
        ]
        Type rangeEvent : civilDusk#event  [
            offset=15,
            earliest="16:00",
            latest="22:00"
        ]
}
Du kannst die Channel-ID nicht frei wählen. Nach addon und ThingType (hier sun) kommt die Bezeichnung der Location. Es gibt im Thing Namen niemals eine Beziehung für eine bestimmte Event-Art, die erfolgt immer über den Channel.
Wenn du ein eigenes Thing für eine bestimmte Event-Art haben willst, kannst Du natürlich die ID entsprechend definieren, aber die einzelnen Channel müssen dennoch mit verwendet werden, bei Dir wäre das also

Code: Alles auswählen

when
    Channel 'astro:sun:r-ogostrise:rise#event' triggered START
then
Statt eines zusätzlichen Things und rise/set nutze ich civilDawn und civilDusk, die jeweils bei -6 ° Höhenwinkel triggern. Und ich verschiebe diese Punkte noch etwas - aber das ist natürlich Geschmacksache)

Ach so... Das Thread::sleep() ist sinnlos. Eventuell willst Du eher das hier:

Code: Alles auswählen

rule "Rollladen OGost AUF"                                               
when
    Channel 'astro:sun:r-ogostrise:rise#event' triggered START
then
    GrolloOpenO2.members.forEach[ i |
        i.sendCommand(0)
        Thread.sleep(100)
    ]
    val actions = getActions("pushover", "pushover:pushover-account:soundNone")
    actions.sendHtmlMessage("Rollläden geöffnet OG ost", "openHAB3")                
end
So sendet openHAB maximal alle 100 Millisekunden einen Steuerbefehl an die einzelnen Rollladenaktoren. Manche System kommen nicht damit zurecht, wenn all zu viele Befehle innerhalb kürzester Zeit gesendet werden.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Selter
Beiträge: 59
Registriert: 9. Mär 2018 16:06
Answers: 0

Re: Astro Rule für Rollladen öffnen

Beitrag von Selter »

Danke für die Erklärung!

Den Channel habe ich geändert auf "astro:sun:r-ogostrise:rise#event" - der Rollladen hat auch öffnet.
Allerdings bereits um 7:10; also zum Sonnenaufgang.

Was muss ich anpassen, damit frühestens um 8:30 der Rollladen hochfährt. Ich dachte das wird mit "earliest" definiert?
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh

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

Re: Astro Rule für Rollladen öffnen

Beitrag von udo1toni »

Ja, das ist kein Wunder. Schau Dir noch mal mein Beispiel von oben an.

Es gibt für jeden Zeitpunkt drei bzw. vier Channel. Der erste Channel ist der RangeEvent Channel, der zum Triggern von Rules verwendet wird. Der zweite Channel ist vom Typ dateTime und gibt als Zeitstempel den Beginn des Ereignisses an (also den Zeitpunkt, wo der Range Event Channel START triggert). der dritte Channel gibt den Zeitpunkt des END Triggers an (logischerweise ebenfalls dateTime). Der vierte Channel vom Typ Number gibt die Dauer als Anzahl Minuten von START zu END an.
Jeweils die ersten drei Channel kannst Du konfigurieren (die Dauer nicht). Dabei kannst Du bei jedem der drei Channel offset, earliest und latest setzen. Jeder der Channel wird exklusiv konfiguriert und betrifft zwar das selbe Ereignis, ist aber von den anderen beiden Channeln unabhängig.
Um den Trigger für die Rules zu beeinflussen, musst Du also die Parameter alle für den rangeEvent Channel konfigurieren.


Und nur, weil es da auch immer wieder Missverständnisse gibt... die Dauer zwischen START und END ist die Dauer des Transits des Himmelskörpers durch die virtuelle Gerade, die den Trigger beschreibt.

Der Versuch einer Tabellendarstellung

Code: Alles auswählen

Schlüsselwort1 Höhenlinie 
   ...              0 °
   civil         -  6 °
   nautic        - 12 °
   astro         - 18 °

Schlüsselwort2 Richtung
 rise/Dawn      + <- -
  set/Dusk      + -> -
Die Dauer ergibt sich daraus, dass die Sonne kein Punkt ist, sondern eine runde Scheibe (als zweidimensionale Projektion), es gibt also einen Zeitpunkt, zu dem die Sonne beginnt, die Höhenlinie zu berühren, und einen Zeitpunkt, wo sich die Sonne von der Höhenline löst. Diese beiden Zeitpunkte sind START und END.
Es sind also (nur für die täglichen Sonnenauf-/-untergangszeiten) 8 x 4 Channel vorhanden.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Selter
Beiträge: 59
Registriert: 9. Mär 2018 16:06
Answers: 0

Re: Astro Rule für Rollladen öffnen

Beitrag von Selter »

Danke für die ausführliche Erklärung - ich dachte, ich habe es verstanden, aber der Rollladen öffnet weiterhin zu Sonnenaufgang.

Code: Alles auswählen

astro:sun:r-ogostrise "Astro: Sun r-ogostrise"    [ geolocation="xxxxxxxxx", interval=600 ] {
    Channels:
        Type rangeEvent : rise#event [
                offset=3,
                earliest="08:30", latest="10:00"
        ]
        Type start : rise#start [
                offset=3,
                earliest="08:30", latest="10:00"
        ]
        Type end : rise#end [
                offset=3,
                earliest="08:32", latest="10:02"
        ]
    }

Code: Alles auswählen

rule "Rollladen OGost AUF"                                               
    when
        Channel 'astro:sun:r-ogostrise:rise#event' triggered START
    then
        GrolloOpenO2.members.forEach[ i | i.sendCommand(0) ]
end
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh

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

Re: Astro Rule für Rollladen öffnen

Beitrag von udo1toni »

Hast Du Dich in der UI davon überzeugt, dass die Channel auch korrekt übernommen wurden?
Hast Du openHAB mal neu gestartet?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Selter
Beiträge: 59
Registriert: 9. Mär 2018 16:06
Answers: 0

Re: Astro Rule für Rollladen öffnen

Beitrag von Selter »

Neu gestartet habe ich bisher nicht ...


Das Thing steht auf "online"

Code: Alles auswählen

Status: 
ONLINE
 
Identifiersquare_on_square
astro:sun:r-ogostrise
Label
Astro: Sun r-ogostrise
Location
e.g. Kitchen
Information
lock_fill Note: this thing is not editable because it has been provisioned from a file.
Stellt astronomische Sonnendaten zur Verfügung
Configuration
Show advanced 
Ort der Sonnendaten
xxxxxx
Required Ort der Sonnendaten in geographischen Koordinaten (Breitengrad/Längengrad/Höhe).
Meteorologische Jahreszeit
false
Required Verwendung der meteorologischen Berechnungsmethode für die Jahreszeiten anstelle der astronomischen.
Aktualisierungsintervall
600
Intervall zur Aktualisierung der Positionsdaten (in s).

Allerdings:

Code: Alles auswählen

astro:sun:r-ogostrise:rise#start

Configuration
Verschiebung
0
Verschiebt den Zeitpunkt eines Triggers vor oder zurück (in Minuten).
Frühester Zeitpunkt
07:30

Spätester Zeitpunkt
10:00
Bei frühester Zeitpunkt müsste doch 8:30 stehen??? Und Offset 3 Minuten ...
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh

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

Re: Astro Rule für Rollladen öffnen

Beitrag von udo1toni »

Deshalb ja einmal Neustart...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Selter
Beiträge: 59
Registriert: 9. Mär 2018 16:06
Answers: 0

Re: Astro Rule für Rollladen öffnen

Beitrag von Selter »

Ok, nach Neustart des OH services sind die Zeiten und Offset korrekt.
Mal sehen, wenn der Rollladen morgen öffnet ...
openHAB 3.2 in einer Debian-VM mit openHABian unter Proxmox 6.4-13 auf Intel NUC 5i3ryh

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

Re: Astro Rule für Rollladen öffnen

Beitrag von udo1toni »

Wenn man Things über eine (oder meherere) *.things Datei(en) definiert, ist es immer gut, sich davon zu überzeugen, dass vorgenommene Änderungen auch übernommen wurden.
Hintergrund ist, dass Things erst mit openHAB2 eingeführt wurden. openHAB bekommt zwar mit, dass die Datei geändert wurde, die Änderungen werden aber leider nicht so gut in openHAB verarbeitet, wie das bei dem Items der Fall ist. Dort führt eine Änderung an einer *.items Datei immer dazu, dass das Item entfernt und wieder neu angelegt wird. Damit wird es auch bei kleinsten Änderungen neu initialisiert (kann sein, dass der Status dabei erhalten bleibt, falls der Name sich nicht geändert hat). Diese Initialisierung geschieht bei Things nur unter bestimmten Voraussetzungen.

Workaround 1: Nach Änderungen an Things kurz neu starten (von der Shell aus sudo systemctl restart openhab.service), mindestens wenn sich das Thing nicht wie gewünscht verhält.
Workaround 2: UID des betroffenen Things ändern, speichern, wieder zurück ändern und nochmal speichern. Dabei wird das Thing entfernt und neu angelegt (zweimal). Es reicht nicht, ein gleichartiges Thing anzulegen, die Initialisierung geschieht für jedes Thing einzeln
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten