Seite 1 von 1
Zeiten rechnen (Delay) in Regeln
Verfasst: 13. Sep 2021 20:35
von AndreM77
Hi,
ich möchte 30 Minuten Sonnenuntergang die Dachfensterrolladen schließen. Wie bringe ich das der Regel bei.
Zum Sonnenuntergang selbst geht es.
Code: Alles auswählen
triggers:
- id: "1"
configuration:
thingUID: astro:sun:61479
event: START
channelUID: astro:sun:61479:civilDusk#event
type: core.ChannelEventTrigger
conditions: []
actions:
- inputs: {}
id: "2"
configuration:
itemName: gDachrolloPosition
command: DOWN
type: core.ItemCommandAction
Aber wie rechne ich 30 Minuten drauf? Hilfsitem = Sonnenuntergang + 30 Minuten und dann ist das Hilfsitem der Trigger? Dann muss ich das Hilfsitem ja aller 24h aktualisieren. Klingt irgendwie umständlich. Geht es auch smarter?
Danke!
Grüße
André
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 13. Sep 2021 22:39
von udo1toni
Muss es wirklich immer exakt 30 Minuten sein?
Option 1: setze ein Offset im Channel set#event (das ist Sonnenuntergang)
Option 2: nutze andere Channel (civilDusk -> bürgerliche Dämmerung, nauticDusk -> Nautische Dämmerung. astroDusk -> Astronomische Dämmerung).
Die einzelnen Stufen entsprechen 0°, -6°, -12° und -18° Höhenlinie der Sonne. (Diese Variante kann auch mit Option 1 kombiniert werden.)
Option 3: nutze direkt den Höhenwinkel (elevation).
Es ist hingegen keine Option, die Uhrzeit auszurechnen und in ein Item zu schreiben, denn dann müsstest Du ständig eine Rule triggern, die prüft, ob der Zeitpunkt überschritten wurde. Ein Item kann nur dann eine Rule triggern, wenn es ein Update oder eine Command erhält. Beim Update kann man noch unterscheiden, ob es sich um eine Werteänderung handelt.
Die event Channel werden vom Binding bereit gestellt. die werden als Timer im Scheduler angelegt, wobei die Zeitpunkte der Ausführung vom Binding berechnet werden.
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 14. Sep 2021 08:12
von AndreM77
Nein, dass wäre sogar besser. Mir geht es letztlich nur darum, die Rollo's erst zu schließen, wenn es dunkel ist.
Wie geht das mit den Stufen beim civildusk? Wo kann man mehr dazu lesen?
Danke & Grüße
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 14. Sep 2021 10:53
von ubi
Ich habe das so gelöst:
Da wird nach erreichen von Sonnenstand ein Timer gestartet und dann Rolladen heruntergefahren.
Code: Alles auswählen
rule "Rolladen Abends RUnterfahren nach Sonnenstand"
when
Item Tageszeit_dummy changed
then
if (!(Tageszeit_dummy.state instanceof Number)) { return; }
if(Tageszeit_dummy.state as Number == 4 )
if (timer === null) {
timer = createTimer(now.plusSeconds(900), [ |
logInfo("Rolladen TImer", "Started fuer 15 min")
timer = null // Cancels the timer 1 when run out
{sendCommand(Rolladen_Gruppe, 100) }
])
}
end
Tagestände sind im Tageszeit_dummy item per rule definiert und werden per rule upgedatet:
Code: Alles auswählen
rule "Sonnenaufgang"
when
Channel 'astro:sun:home:rise#event' triggered START
then
Tageszeit_dummy.postUpdate(1)
end
rule "Tageslicht"
when
Channel 'astro:sun:home:daylight#event' triggered START
then
Tageszeit_dummy.postUpdate(2)
end
usw. bis du alle Stände hast.
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 14. Sep 2021 17:31
von BOP
AndreM77 hat geschrieben: ↑14. Sep 2021 08:12
Wie geht das mit den Stufen beim civildusk? Wo kann man mehr dazu lesen?
Ich verweise mal ganz stumpf auf:
https://www.timeanddate.de/astronomie/daemmerung-phasen
Zu Udos Option 1:
Astro1.jpg
Astro2.jpg
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 14. Sep 2021 17:36
von AndreM77
ah, cool @Bop! Das ist ja noch viel einfacher. Danke!
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 14. Sep 2021 17:48
von AndreM77
BOP hat geschrieben: ↑14. Sep 2021 17:31
Astro1.jpg
Astro2.jpg
Ist das OH2 oder OH3? Ich hab ein OH3 und hab dort im Channel keine Option "Verschiebung". Soll das jetzt via Profile gehen? Da habe ich, wenn ich es richtig gelesen hab, aber auch keine Option etwas zu addieren/verschieben.
Danke!
P.S. Ich hab's! In OH3 kann man sich über das Item durchhangeln und sieht es in der Channel-Übersicht. Danke!
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 14. Sep 2021 22:45
von udo1toni
Nein, Du brauchst da kein Item... Du gehst ins Thing (Sonne...), in die Channels, suchst Dir den entsprechenden Channel raus, gehst auf configure Channel und verstellst das Offset. Man bemerke, dass pro Channel drei Parameter gesetzt werden können, earliest, latest und offset. earliest und latest sind die Grenzwerte, die eingehalten werden. Offset ist die Verschiebung im Minuten.
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 11. Okt 2021 14:00
von ubi
Auch wenn dieses Thema schon gelöst ist habe ich noch eine Alternative ohne dummy item,
denn das wolltest du ja explizit nicht ( sorry für mein falsches Posting oben)
Wenn ein bestimmter Sonnenstand erreicht wird, wird ein timer erstellt und nach ablauf vom Timer die Rolladen heruntergefahren.
Code: Alles auswählen
// Globale Variablen immer zu Beginn der Datei definieren!
var Timer timer = null
rule "Rollo Sonnenuntergang_civildusk"
when
Channel 'astro:sun:home:civilDusk#event' triggered START
then
if (timer === null) {
timer = createTimer(now.plusSeconds(900), [ |
logInfo("Rolladen TImer", "Started fuer 15 min")
timer = null // Cancels the timer 1 when run out
{sendCommand(Rolladen_Gruppe, 100) }
])
}
end
Re: Zeiten rechnen (Delay) in Regeln
Verfasst: 11. Okt 2021 21:42
von AndreM77
Hab vielen Dank @ubi