Moin,
ich habe noch mal eine Frage zur Umsetzung des Bindings.
(Habe zwar schon mal eine Teilantwort von Udo bekommen, finde aber leider den Thread nicht mehr)
Ganz konkret, kann ich ja in den Channels (configure Channel) eine Verschiebung konfigurieren:
astro:sun:_sundata:daylight#start (DateTime)
astro:sun:_sundata:daylight#end (DateTime)
astro:sun:_sundata:daylight#event (Trigger)
Nun habe ich es so verstanden, dass die Verschiebung innerhalb des #event den kompletten "Block" (also inkl. event#START und event#END) verschiebt.
Möchte ich also eine kürze Lichtphase haben, muss ich bei daylight#start z.B. ein -60 und bei daylight#end ein +60 eintragen.
Bei den Regeln kann ich ja aber immer nur den Trigger verwenden. Daher möchte ich wissen, ob die Konfigurationen in den ersten beiden Channels irgendeine Auswirkung auf den dritten haben?
Falls die Antwort NEIN lauten sollte, hätte ich gerne gewusst, wie man möglichst einfach einen (sagen wir Schalter) "Tageslicht" entsprechend mit diesen BEIDEN Verschiebungen "triggert".
Grüße David
Astro Binding: daylight (Channelabhängigkeiten)
-
- Beiträge: 201
- Registriert: 28. Aug 2021 10:34
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Astro Binding: daylight (Channelabhängigkeiten)
Die Antwort lautet nein
Es führt für den betreffenden Channel zu einer Verschiebung, nicht für andere Channel.
daylight#event ist leider nicht mit einer Werterklärung dokumentiert.
Die meisten anderen Trigger sind über den Namen eindeutig, aber wie ist Tageslicht definiert? Sonnenaufgang bis Sonnenuntergang?
Nach Blick ins Log: Ja. Es treten immer zwei Trigger zeitgleich auf (sofern man die Trigger nicht verschoben hat).
Du kannst also für den Sonnenaufgang Channel '...:rise#event' triggered END und für den Sonnenuntergang Channel '...:set#event' triggered START verwenden und die Verschiebung in diesem beiden Events unabhängig voneinander vornehmen.
EDIT: Das geht auch innerhalb einer Rule, wenn Du also bisher mit when Channel triggered gearbeitet, und innerhalb der Rule über if(receivedEvent == 'END') bzw. if(receivedEvent == 'START') unterschieden hast, geht das auch, nun halt über if(trigeringChannel.contains('rise')) bzw. if(trigeringChannel.contains('set')), wobei ich es tatsächlich bevorzuge, hier voneinander unabhängige Rule zu verwenden.

Es führt für den betreffenden Channel zu einer Verschiebung, nicht für andere Channel.
daylight#event ist leider nicht mit einer Werterklärung dokumentiert.
Die meisten anderen Trigger sind über den Namen eindeutig, aber wie ist Tageslicht definiert? Sonnenaufgang bis Sonnenuntergang?
Nach Blick ins Log: Ja. Es treten immer zwei Trigger zeitgleich auf (sofern man die Trigger nicht verschoben hat).
Code: Alles auswählen
daylight#event | rise#event | set#event
START | END |
END | | START
EDIT: Das geht auch innerhalb einer Rule, wenn Du also bisher mit when Channel triggered gearbeitet, und innerhalb der Rule über if(receivedEvent == 'END') bzw. if(receivedEvent == 'START') unterschieden hast, geht das auch, nun halt über if(trigeringChannel.contains('rise')) bzw. if(trigeringChannel.contains('set')), wobei ich es tatsächlich bevorzuge, hier voneinander unabhängige Rule zu verwenden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet