Seite 1 von 1

Aktion bei Sonnenuntergang mit Astro Binding (OH3)

Verfasst: 22. Dez 2021 11:35
von aolbernd
Ich wollte meine Aussen-Weihnachtsdeko bei Sonnenuntergang einschalten lassen und nach 5 Stunden wieder ausschalten lassen. Hierfür nutze ich das Astro Binding (Channel Sonnenuntergang Ende).
Mein Rule (Einschalten) hat folgenden Inhalt

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      command: START
      itemName: LokaleSonnendaten_Daylight_Start
    type: core.ItemCommandTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      command: ON
      itemName: Weihnachtsdeko
    type: core.ItemCommandAction
Wo liegt hier mein Fehler? Offensichtlich habe ich den Trigger falsch konfiguriert. Ich stehe aber etwas auf dem Schlauch.

Re: Aktion bei Sonnenuntergang mit Astro Binding (OH3)

Verfasst: 24. Dez 2021 11:53
von udo1toni
Du machst das komplett verkehrt :)

Punkt 1: astro stellt zwei verschiedene Arten Channel zur Verfügung. Typ 1 enthält Informationen, z.B. die Uhrzeit des Sonnenuntergangs. Das ist aber einfach nur eine Information, in diesem Fall bestehend aus einem Datum und Uhrzeit. Du kannst diese Information sichtbar machen, indem Du den Channel mit einem Item verknüpfst. Du kannst NICHT mit diesem Item eine Rule triggern.
Typ 2 ist der Range Event Typ. Dieser Typ enthält keine Information (in dem Sinne, dass man sie als Zustand auslesen könnte). Stattdessen stellt dieser Channel ausschließlich die Trigger-Funktionalität bereit. Diesen Channeltyp kannst Du nicht mit einem Item verknüpfen.
Punkt 2: es gibt kein command START. (Doch, gibt es schon, da reden wir aber von einem Player Item, welches man verwendet, um Mediaplayer zu steuern...)

Deine Rule muss also auf ein Channel Event triggern. Als Text heißt das dann Channel "astro:sun:local:set#event" triggered START und bedeutet, dass im Channel set#event des Things sun:local das Event START aufgetreten ist. START bedeutet, das ist der Beginn des Ereignisses. Da die Sonne zweidimensional betrachtet ein Kreis mit einem beträchtlichen Durchmesser ist, und der Sonnenuntergang als Passage der 0° Höhenlinie definiert ist, ist klar, dass es einen Zeitpunkt gibt, zu dem die Sonne beginnt, die Höhenlinie zu berühren, und einen Zeitpunkt, an dem sie aufhört, die Höhenlinie zu berühren. Je nach Höhenlinie und Jahreszeit schwankt die Zeit zwischen den beiden Ereignissen um einige Minuten. Die anderen Ereignisse sind bürgerliche Dämmerung (-6°), nautische Dämmerung (-12°) und astronomische Dämmerung (-18°). Wenn sich die Sonne von oben nach unten bewegt, ist es set bzw. dusk (also Untergang), wenn sie von unten nach oben kommt, handelt es sich um rise bzw. dawn (also Aufgang).

Nach 5 Stunden abschalten wird in diesem Zusammenhang aber schwer. Mach Dir das Leben leichter und schalte zu einer festen Uhrzeit aus, z.B. um 23 Uhr.
Für die Morgenstunden gilt ähnliches, nur in umgekehrter Richtung.

Wenn Du es komplett automatisch haben willst, kannst Du noch ein Item definieren, welches Du über eine Rule zu Beginn der Adventszeit einschaltest und an deren Ende (regional unterschiedlich... z.B. 6. Januar (Heilige drei Könige) oder 2. Februar (Mariä Lichtmess)) wieder aus. Dann kannst Du in den Schaltregeln das but only if setzen und hier den Zustand des "Advents-Items" berücksichtigen. Funktioniert hier schon seit vielen Jahren...

Re: Aktion bei Sonnenuntergang mit Astro Binding (OH3)

Verfasst: 25. Dez 2021 19:28
von webuehn
Ich habe mir auch gerade so eine Rule für die Außenbeleuchtung erstellt. Bei Sonnenuntergang (nautisch) an und um 23.00 aus. Das sieht dann ungefähr so aus:

1 triggers:
2 - id: "1"
3 configuration:
4 thingUID: astro:sun:local
5 event: ""
6 channelUID: astro:sun:local:nauticDusk#event
7 type: core.ChannelEventTrigger
8 conditions: []
9 actions:
10 - inputs: {}
11 id: "2"
12 configuration:
13 itemName: TestShellyshelly_Betrieb
14 command: ON
15 type: core.ItemCommandAction

1 triggers:
2 - id: "1"
3 configuration:
4 cronExpression: 0 0 23 * * ? *
5 type: timer.GenericCronTrigger
6 conditions: []
7 actions:
8 - inputs: {}
9 id: "2"
10 configuration:
11 itemName: TestShellyshelly_Betrieb
12 command: OFF
13 type: core.ItemCommandAction

Re: Aktion bei Sonnenuntergang mit Astro Binding (OH3)

Verfasst: 28. Dez 2021 10:58
von aolbernd
Dank Euer Anleitung/Ausführungen funktioniert es jetzt :-) (wieder etwas dazugelernt)
Ich war davon ausgegangen, dass der Zeitpunkt des Ereignisses relevat ist und habe diesen in den Rules verwendet.
Hierzu gleich noch eine Frage: Es wird ja das Ereignis getriggert, also wenn es eintritt.
Jetzt ist die Abenddämmerung zum Beispiel mit einem Beginn (heute) um 17:23 Uhr angegeben, Dauer 41 Minuten. Tritt das Ereignis nur einmalig auf, (17:23 Uhr) oder kann ich diesen Ereignis im gesamten Zeitraum der 41 Minuten verwenden? Zum Beispiel als Bedingung für das Schalten eines Lichts: Wenn Schalter aktiviert, schalte Licht ein, Bedingung: Abenddämmerung, also der Zeitraum zwischen 17:23 und 18:04 Uhr?

Re: Aktion bei Sonnenuntergang mit Astro Binding (OH3)

Verfasst: 28. Dez 2021 18:04
von udo1toni
Ein Ereignis ist ein exakter Zeitpunkt. Die Dauer bezieht sich in diesem Fall auf den zeitlichen Abstand zwischen zwei Ereignissen (START und END).
Eine Bedingung kann sich nur auf einen Zustand beziehen, niemals auf ein Ereignis.
Das ist der oben von mir beschriebene Unterschied...
Du kannst prüfen, ob der aktuelle Zeitpunkt nach dem Zeitpunkt astro:sun:local:set#start und vor dem Zeitpunkt astro:sun:local:set#end liegt. Dabei müssen diese beiden Channel natürlich mit Items verknüpft sein und Du musst in der Rule diese Items verwenden.

Re: Aktion bei Sonnenuntergang mit Astro Binding (OH3)

Verfasst: 28. Dez 2021 21:43
von aolbernd
Um es einfach zu halten, könnte ich also einen Point (Switch) erstellen, der bei Anbruch der Dämmerung per Rule auf ON schaltet und nach Ende der Dämmerungsphase auf OFF schaltet und diesen Point als Bedingung benutzen? Oder ist das zu kompliziert gedacht?

Re: Aktion bei Sonnenuntergang mit Astro Binding (OH3)

Verfasst: 28. Dez 2021 22:16
von Snatsch
aolbernd hat geschrieben: 28. Dez 2021 21:43 Um es einfach zu halten, könnte ich also einen Point (Switch) erstellen, der bei Anbruch der Dämmerung per Rule auf ON schaltet und nach Ende der Dämmerungsphase auf OFF schaltet und diesen Point als Bedingung benutzen? Oder ist das zu kompliziert gedacht?
genau :) so würde ich es auch machen

Re: Aktion bei Sonnenuntergang mit Astro Binding (OH3)

Verfasst: 28. Dez 2021 22:36
von int5749
aolbernd hat geschrieben: 28. Dez 2021 21:43 Um es einfach zu halten, könnte ich also einen Point (Switch) erstellen, der bei Anbruch der Dämmerung per Rule auf ON schaltet und nach Ende der Dämmerungsphase auf OFF schaltet und diesen Point als Bedingung benutzen? Oder ist das zu kompliziert gedacht?
Wenn Du doch "nur" auf das Ende-Event triggern möchtest, müsste es doch mit

Code: Alles auswählen

rule Sunset_Event
when
	Channel 'astro:sun:local:set#event' triggered END
then
	logInfo("Astro", "Sun Set Ende")
end

funktionieren? Oder habe ich noch einen Denkfehler??

Update: Ahh, lese jetzt ein paar Posts vorher, das es um eine Zeitspanne ging :)


Viele Grüße