Seite 1 von 1

Astro Binding offset

Verfasst: 22. Okt 2021 11:01
von frankl
Moin Gemeinde,

ich versuche in OH3 folgendes hinzukriegen:
1. W-LAN-Schalter an meine Außenbeleuchtung, diese soll 5 Minuten vor dem Ende der bürgerlichen Abenddämmerung angeschaltet werden
-> realisiert über Astro-Binding -> channel CivilDusk#end -> offset -5 ... funktioniert

2. Anzeige des Endes der bürgerlichen Abenddämmerung in der Android-App zum Vergleich und Bestimmen, ob die Verschiebung von 5 min auch okay ist.
-> realisiert über pages -> item TextLabel -> channelCivilDusk#end

nun wird logischer Weise beim TextLabel auch der durch den offset veränderte Wert angezeigt :(

meine Idee: Kann ich den Channel vom AstroBinding irgendwie "duplizieren"? Wenn ja, wie? ... oder muss ich die Zeitverschiebung über den Switch realisieren, wobei ich nicht wüsste, wie der Switch schalten soll, wenn das Ereignis noch nicht eingetreten ist ...

Irgendwie drehe ich mich im Kreis.

Hat jemand eine Idee?

VG
Frank

Re: Astro Binding offset

Verfasst: 22. Okt 2021 12:49
von peter-pan
Das mit dem Duplizieren ist schon mal nicht schlecht. Du brauchst dazu ein neues Thing. Da ich noch mit der Text-Konfiguration arbeite, hier mein Text-Things-File, da kannst du die offsets sehen.

Code: Alles auswählen

Thing astro:sun:local     "Sonnen Daten"    [geolocation="23.123456,14.123456,502", interval=300]
Thing astro:moon:local    "Mond Daten"      [geolocation="23.123456,14.123456,502", interval=300]
                                        
Thing astro:sun:minus90   "Offset -90"      [geolocation="23.123456,14.123456,502", interval=300]{
  Channels:
    Type rangeEvent : set#event [
      offset=-90
    ]
    Type start : set#start [
      offset=-90
    ]
    Type end : set#end [
      offset=-90
    ]
  }

Thing astro:sun:stowing   "Offset -Test"     [geolocation="23.123456,14.123456,502", interval=300]{
  Channels:
    Type rangeEvent : set#event [
      offset=-180,
      earliest="19:40"
    ]
    Type rangeEvent : night#event [
      offset=-180
    ]
  }
Vielleicht hilft dir das weiter.

Edit: Du brauchst natürlich auch unterschiedliche Items ;)

Re: Astro Binding offset

Verfasst: 22. Okt 2021 14:08
von frankl
danke peter-pan ... so funzt es :)

Re: Astro Binding offset

Verfasst: 23. Okt 2021 00:20
von udo1toni
Entschuldigung, wenn ich da noch mal nachhake...

Die Anzeige von civilDusk hat nichts mit dem Trigger von civilDusk zu tun. Das heißt, Du verwendest den falschen Weg, auf civilDusk#end zu reagieren.

Korrekt funktioniert es mit dem Trigger Channel 'astro:sun:home:civilDusk#event' triggered END. Der Event Channel ist komplett unabhängig von der Anzeige, man kann den Offset frei setzen, Earliest und Latest ebenso.

Auf den Anzeige-Channel kannst Du nicht triggern, das geht nur mit dem Event Channel.

Re: Astro Binding offset

Verfasst: 23. Okt 2021 11:04
von frankl
danke udo1toni
könnte der Grund gewesen sein, warum nicht richtig geschaltet wurde :)

Re: Astro Binding offset

Verfasst: 24. Okt 2021 01:17
von peter-pan
..da hat Udo natürlich Recht.

Zum Triggern der Rules sind die "Trigger-Channels" (#event) zuständig, die brauchen auch kein Item in der Konfiguration.

Zur Anzeige der gewünschten Werte sind die "normalen Channels" gedacht. Dazu braucht es natürlich ein Item das diese Werte anzeigt.

Code: Alles auswählen

The Astro binding is used for calculating

    many DateTime and positional values for sun and moon.
    Radiation levels (direct, diffuse and total) of the sun during the day
Das sind dann normalerweise die Werte, die man in einer "Page" anzeigen kann.

Details hierzu findest du auch hier.

Re: Astro Binding offset

Verfasst: 24. Okt 2021 13:23
von udo1toni
peter-pan hat geschrieben: 24. Okt 2021 01:17 Zum Triggern der Rules sind die "Trigger-Channels" (#event) zuständig, die brauchen auch kein Item in der Konfiguration.
Mehr noch... Die Event Channels können nicht mit einem Item verlinkt werden... ;) Was schlicht daran liegt, dass sie keinen Status besitzen.

Items halten den Status eines Channels oder geben Befehle an einen Channel weiter (oftmals beides...)
Ein Event Channel hat keinen Status und nimmt keine Befehle entgegen, ergo ist es sinnlos, ihn mit einem Item zu koppeln.

Es gäbe natürlich dennoch einen sinnvollen Anwendungsfall, nämlich, um ein Event ohne Umweg über Rules an ein anderes Binding zu schicken... Momentan ist das nicht möglich, man kann das nur über eine Rule lösen.

Re: Astro Binding offset

Verfasst: 1. Jan 2022 23:19
von xvs03
Hallo ich wollte auch mal eine Methode beisteuern, die ohne Scripting in OH 3.X ein Offset in das Astrobinding einsteuert.

Ich habe das Thing Lokale Sonnendaten gleich 2x angelegt (das blaue + Zeichen unten rechts). 1x für original Zeit, das zweite für die manipulierte Offset Zeit
Things_Sonnendaten.jpg
Nun das neu erstellte Thing anwählen in die Channels gehen.
Dann bitte genau schauen welchen Channel wir manipulieren wollen.
In unserem Fall möchte ich den Sonnenuntergang manipulieren und da die Channels:
1. Startzeit set#start (DateTime) um die manipulierte Zeit informativ angezeigt zu bekommen
2. Range Event set#event (Trigger) um etwas damit schalten zu können.

Wichtig: Dieser Channel rise#start kann keinerlei Items schalten oder irgendwas anderes, sondern ist nur rein informativ für Dich damit Du die Zeiten auf dem Schirm hast, die sich ja jeden Tag automatisch ändern.
Zum schalten brauchst Du rise#event !
Configure_Channel.jpg
Klicke auf Configure Channel, dort kann man die Verschiebung in Minuten eingeben.
Verschiebung.jpg
Nun kann man Rules mit den maniupulierten Channels anlegen, ohne eine Zeile Code.
Immer daran denken, dass es jetzt zwei Things mit den selben Channels gibt. Man neigt dazu das falsche auszuwählen. :D
Übrigens ihr müsst nicht immer so lang warten bis das XXX#event auslöst. Macht einfach das Offset so groß, dass es z.B. 5 Minuten vor der tatsächlichen Tageszeit ist und testet so den Offset.

Viel Spaß beim testen.