Helligkeitsregelung

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
Spuckiii
Beiträge: 29
Registriert: 11. Jul 2021 11:55

Helligkeitsregelung

Beitrag von Spuckiii »

Hallo liebes Forum,

ich habe noch eine Frage, bin aber noch nicht auf die Lösung gestoßen.

Ich versuche über das Astro Binding, in Abhängigkeit der Sonnenphasen, mein Flurlicht zu dimmen. So soll es sein dass z.B. bei NIGHT der Wert auf 1 % gesetzt wird. Bei Tag auf 100 %, bei allen anderen auf 25 %. Das funktioniert auch soweit.

Ich habe die innr BE 220 Birnen (zigbee2mqtt) im Einsatz. Diese kann ich mittels set/brightness auch steuern. Wie kann ich es realisieren dass nur der Wert von der Rule gesetzt wird (habe hier Blockly genommen) sodass beim nächsten Einschalten der Items die Lampe erst leuchtet und nicht schon beim Setzen des %Wertes in der Regel?

Der Channel "Helligkeit" ist als Dimmer angelegt, das Item entsprechend auch.

hat jemand einen Tipp für mich?

BOP
Beiträge: 197
Registriert: 23. Sep 2018 19:43
Answers: 1

Re: Helligkeitsregelung

Beitrag von BOP »

Ich habs nicht genau verstanden, aber versuchs mal mit .postUpdate anstelle von .sendCommand.

.postUpdate setzt nur das Item. Der Wert wird nicht an den Channel gesendet.

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

Re: Helligkeitsregelung

Beitrag von udo1toni »

Ich lese: Du möchtest die Einschalthelligkeit in Abhängigkeit der Tageszeit steuern. :)

Dazu muss ich erst mal fragen, wie das Licht ein- und ausgeschaltet wird. Passiert der Schaltvorgang immer über eine Rule, sollte das kein Problem sein.

Du fragst in der Rule ab, welche Tageszeit es ist und setzt den Wert entsprechend. Du kannst einfach ein Switch Item isDay anlegen und mit zwei Rules an- und ausschalten. Die beiden Rules werden durch Astro gesteuert. In der eigentlichen Rule für das Licht schaust Du dann nach dem Item isDay.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Spuckiii
Beiträge: 29
Registriert: 11. Jul 2021 11:55

Re: Helligkeitsregelung

Beitrag von Spuckiii »

udo1toni hat geschrieben: 10. Sep 2021 21:32 Ich lese: Du möchtest die Einschalthelligkeit in Abhängigkeit der Tageszeit steuern. :)

Dazu muss ich erst mal fragen, wie das Licht ein- und ausgeschaltet wird. Passiert der Schaltvorgang immer über eine Rule, sollte das kein Problem sein.

Du fragst in der Rule ab, welche Tageszeit es ist und setzt den Wert entsprechend. Du kannst einfach ein Switch Item isDay anlegen und mit zwei Rules an- und ausschalten. Die beiden Rules werden durch Astro gesteuert. In der eigentlichen Rule für das Licht schaust Du dann nach dem Item isDay.
Guten morgen Udo,

ja, ich steuer diese ausschließlich per Rule, was jetzt auch funktioniert. Anstatt den Lichtschalter auf on zu setzen, setze ich jetzt die Helligkeit. Derzeit frage ich beim Astrobinding die Sonnenphase ab. Dieses Item wechselt ja automatisch von Tageslicht, zb. zum Sonnenuntergang etc. Das klappt auch schon wunderbar. Das einzige Problem was ich noch habe ist, wie kann ich die Zeiten modifizieren? Konkrete Frage: Der Sonnenaufgang als Beispiel startete heute bei mir um 07:12 und endete um 07:15, die Dauer ist 3 Minuten. im item Endzeit (von Sonnenaufgang habe ich einen Versatz um 3600 sodass das Ende um 08:15 sein soll. Das Tageslicht Item habe ich entsprechen auch in der Startzeit geändert (also hier dann 08:15. Trotzdem zeigt mir das Item Sonnenphase bereits um 07:16 "Tageslicht" an. Wie bekomme ich das hin dass es erst um 08:15 das Tageslicht einschaltet?

LG
Spuckiii.

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

Re: Helligkeitsregelung

Beitrag von udo1toni »

Das kannst Du leider nicht mit Offset versehen. Der Channel für die Sonnenphase gibt immer die tatsächliche Sonnenphase an.
Stattdessen müsstest Du ein ungebundenes Item erstellen, welches Du über eine oder mehrere Rules auf die verschiedenen Werte setzt.
Dabei bist Du dann komplett frei, Du kannst es an fixen Uhrzeiten festmachen oder an beliebigen Triggern (unter anderem dann die event Channel des Astro Bindings, die den Offset und Ober- und Untergrenzen unterstützen).
Ob Du das Item als String Item definierst oder als Number Item ist dann reine Geschmackssache. Bei ersterem musst Du das Schlüsselwort kennen und einen String auswerten, bei letzterem musst Du wissen, welche Zahl für welche Phase steht (das kann man sich aber prima als Kommentar mit in die Rules notieren...)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Spuckiii
Beiträge: 29
Registriert: 11. Jul 2021 11:55

Re: Helligkeitsregelung

Beitrag von Spuckiii »

udo1toni hat geschrieben: 18. Sep 2021 11:09 Das kannst Du leider nicht mit Offset versehen. Der Channel für die Sonnenphase gibt immer die tatsächliche Sonnenphase an.
Stattdessen müsstest Du ein ungebundenes Item erstellen, welches Du über eine oder mehrere Rules auf die verschiedenen Werte setzt.
Dabei bist Du dann komplett frei, Du kannst es an fixen Uhrzeiten festmachen oder an beliebigen Triggern (unter anderem dann die event Channel des Astro Bindings, die den Offset und Ober- und Untergrenzen unterstützen).
Ob Du das Item als String Item definierst oder als Number Item ist dann reine Geschmackssache. Bei ersterem musst Du das Schlüsselwort kennen und einen String auswerten, bei letzterem musst Du wissen, welche Zahl für welche Phase steht (das kann man sich aber prima als Kommentar mit in die Rules notieren...)
Eine Frage hätte ich noch dazu... also soweit wie ich jetzt herausgefunden habe kann ich ja den Event-Channel, nehmen wir hier mal den rise über config channel verändern. Das klappt auch soweit. jetzt meine Frage.. ich habe ja bei rise ja noch den Datetime Start und Datetime End. Sollte nicht die beiden zur Bestimmung des Start und Endpunktes für das Event benützt werden? Denn wenn ich den Start Channel von rise nur ändere wird das Event leider nicht früher ausgeführt... habe ich noch einen Denkfehler drin?

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

Re: Helligkeitsregelung

Beitrag von udo1toni »

Es gibt pro Event vier Channel, das sind Startzeit, Endzeit, Dauer und Range Event.
Die Dauer gibt den Abstand zwischen Startzeit und Endzeit an.
Ohne Offset ergibt sich folgendes Bild:
Die Startzeit gibt den Zeitpunkt an, zu dem das Event beginnt, die Endzeit gibt den Zeitpunkt an, zu dem das Ereignis endet.
Das Range Event triggert zum Startzeitpunkt mit START und zum Endzeitpunkt END

Bis auf die Dauer kann jeder der drei Channel individuell manipuliert werden. Das heißt, man kann jeweils Earliest, Latest und Offset setzen.

Und weil es an der Stelle gerne zu Verwirrung kommt... Jedes Event ist über eine bestimmte Höhenlinie bestimmt. Rise entspricht z.B. 0° Höhenlinie (von negativ zu positiv).
Da die Sonne kein Punkt ist, sondern einen Durchmesser hat, beginnt das Ereignis, wenn die Sonne beginnt, die Höhenlinie zu berühren und endet, wenn die Sonne sich von der Höhenlinie löst. Je nachdem, wie steil die Ekliptik zur Höhenlinie steht, variiert die Dauer dabei um einige Minuten (und die Steilheit variiert je nach Jahreszeit und natürlich dem Ort).
Die DateTime Channel können nicht als Trigger verwendet werden, dafür kann man sie mit einem Item verlinken. Das Item könnte man dann auch zum Triggern verwenden, es ist aber dafür nicht gut geeignet, die einzige Variante wäre auf changed zu triggern, das geschieht einmal am Tag für alle Datetime Channel gleichzeitig :) Man könnte also allenfalls von der Rule den Zeitstempel auswerten lassen und anhand dessen einen Timer starten. Unterm Strich ist das Item nur zur Anzeige interessant.
Der Range Event Channel kann nicht mit einem Item gekoppelt werden, dafür kann man es direkt zum Triggern einer Rule verwenden. Der Channel löst unter Berücksichtigung der drei Manipulatoren zum entsprechenden Zeitpunkt aus, mit den beiden Werten START und END, die beim Triggern der Rule unterschieden werden können.

Du musst also a) den Range Event Channel zum Triggern verwenden und b) den Offset (und eventuelle Grenzwerte) im Range Event Channel setzen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Spuckiii
Beiträge: 29
Registriert: 11. Jul 2021 11:55

Re: Helligkeitsregelung

Beitrag von Spuckiii »

udo1toni hat geschrieben: 24. Sep 2021 23:04 Es gibt pro Event vier Channel, das sind Startzeit, Endzeit, Dauer und Range Event.
Die Dauer gibt den Abstand zwischen Startzeit und Endzeit an.
Ohne Offset ergibt sich folgendes Bild:
Die Startzeit gibt den Zeitpunkt an, zu dem das Event beginnt, die Endzeit gibt den Zeitpunkt an, zu dem das Ereignis endet.
Das Range Event triggert zum Startzeitpunkt mit START und zum Endzeitpunkt END

Bis auf die Dauer kann jeder der drei Channel individuell manipuliert werden. Das heißt, man kann jeweils Earliest, Latest und Offset setzen.

Und weil es an der Stelle gerne zu Verwirrung kommt... Jedes Event ist über eine bestimmte Höhenlinie bestimmt. Rise entspricht z.B. 0° Höhenlinie (von negativ zu positiv).
Da die Sonne kein Punkt ist, sondern einen Durchmesser hat, beginnt das Ereignis, wenn die Sonne beginnt, die Höhenlinie zu berühren und endet, wenn die Sonne sich von der Höhenlinie löst. Je nachdem, wie steil die Ekliptik zur Höhenlinie steht, variiert die Dauer dabei um einige Minuten (und die Steilheit variiert je nach Jahreszeit und natürlich dem Ort).
Die DateTime Channel können nicht als Trigger verwendet werden, dafür kann man sie mit einem Item verlinken. Das Item könnte man dann auch zum Triggern verwenden, es ist aber dafür nicht gut geeignet, die einzige Variante wäre auf changed zu triggern, das geschieht einmal am Tag für alle Datetime Channel gleichzeitig :) Man könnte also allenfalls von der Rule den Zeitstempel auswerten lassen und anhand dessen einen Timer starten. Unterm Strich ist das Item nur zur Anzeige interessant.
Der Range Event Channel kann nicht mit einem Item gekoppelt werden, dafür kann man es direkt zum Triggern einer Rule verwenden. Der Channel löst unter Berücksichtigung der drei Manipulatoren zum entsprechenden Zeitpunkt aus, mit den beiden Werten START und END, die beim Triggern der Rule unterschieden werden können.

Du musst also a) den Range Event Channel zum Triggern verwenden und b) den Offset (und eventuelle Grenzwerte) im Range Event Channel setzen.
Ok, ich glaube so langsam steige ich dahinter...
für mich nochmal als Klartext.
den Range Event Channel zu triggern, das klappt jetzt. Ich kann dieses Event allerdings dann nur durch "Verschiebung" komplett nach Vorne oder Hinten verschieben. Mittag dauert z.B. ja nur "1 Minute" in meinem Fall... ich kann aber jetzt nicht hingehen und den START Trigger um z.B. 20 Minuten nach vorne holen und den END Trigger um 45 Minuten nach hinten verschieben?

Was ich dann noch nicht so ganz verstehe:

or optionally with an event offset (Das wäre ja die Verschiebung)

Code: Alles auswählen

astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
    Channels:
        Type rangeEvent : rise#event [
            offset=-30
        ]
}
or a datetime offset (Wofür sollte ich das hier dann benutzen können)

Code: Alles auswählen

astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
    Channels:
        Type start : rise#start [
            offset=5
        ]
        Type end : rise#end [
            offset=5
        ]
}
or an offset and latest (das ist auch klar)

Code: Alles auswählen

astro:sun:home [ geolocation="52.5200066,13.4049540,100", interval=60 ] {
    Channels:
        Type rangeEvent : rise#event [
            offset=-10,
            latest="08:00"
        ]
}

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

Re: Helligkeitsregelung

Beitrag von udo1toni »

Genau. START und END sind pro Ereignis fix zueinander, die richten sich ja nach der Dauer des Transits (Beginn Berührung, Ende Berührung).
Wie gesagt ist der zeitliche Abstand zwischen den beiden Zeiten immer variabel, für jeden Tag und jedes Ereignis. Da geht es aber pro Tag nur um Sekunden Unterschiede, und das Astro Binding rechnet nicht auf die letzten Nachkommastellen genau, es kann also durchaus sein, dass die Dauer über Wochen immer gleich ist.
Das Event ist aber ein Ereignis, nicht zwei. Und weil die Sonne kein unendlich kleiner Punkt ist, hat das Ereignis eben einen Beginn und ein Ende.

DateTime Offset: Es gibt ja nicht nur den Wunsch, das Ereignis zum Steuern zu verwenden, man möchte auch eine Anzeige haben. Dafür gibt es die DateTime Channel.
Da es sich um drei voneinander unabhängige Channel handelt, müssen auch alle drei Channel unabhängig voneinander konfiguriert werden.
Gemeinhin wird man die Abweichungen in allen drei Channeln immer identisch wählen. Man kann aber diesen "Mehraufwand" auch nutzen, wenn man z.B. zusätzlich noch eine Anzeige des realen Zeitpunkts haben will.
Es ist auch kein Problem, mehrere Astro Things anzulegen, um z.B. unterschiedliche Standorte zu nutzen oder auch unterschiedliche Offsets für den gleichen Trigger zu verwenden.

Meist ist es aber vollkommen ausreichend, einen anderne Trigger zu wählen.
Beispiel Sonnenuntergang für Rollläden: set ist viel zu früh.
Statt aber set um mindestens 45 Minuten zu verschieben, nimmt man civilDusk (bürgerliche Abenddämmerung) und verschiebt diese vielleicht nur um wenige Minuten.
Ist das immer noch viel zu hell, kann man noch auf nauticDusk zurückgreifen, dann sind allerdings schon einzelne Sterne am Himmel zu erkennen.
Mit astroDusk schließlich kann man sich alarmieren lassen, dass nun astronomische Nacht herrscht und ideale Bedingungen zur Sternbeobachtung herrschen. ;)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten