Timer einbauen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Sadi191
Beiträge: 30
Registriert: 3. Mär 2021 20:01
Answers: 0

Timer einbauen

Beitrag von Sadi191 »

Hallo Gemeinde,

habe mal wieder eine Dummyquestion :D

Habe folgende Rule:

Code: Alles auswählen

rule "Sonne geht unter, Licht geht an"
when
Channel 'astro:sun:home:set#event' triggered START
then
createTimer(now.plusMinutes(10))
        [|
            sendCommand(Echo_Speech, "Die Sonne geht unter, ich schalte jetzt das Licht ein.")
            sendCommand(Outdoorplug, ON)
            sendCommand(LichtSalz, ON)
            sendCommand(LichtTV, ON)
            sendCommand(LichtSchlafzimmer, ON)
            sendCommand(Outdoorplug, ON)
            sendCommand(LichtCouchSchalter, ON)
            sendCommand(LichtVitrine, ON)
        ]
end
Diese Regel funktioniert prima. Allerdings moechte ich nun gern einen Timer zwischen den Echo_Speech und dem Outdoorplug von 5 Sekunden einbauen.

Koennt Ihr mir da helfen?
openHAB 4.2.2 / Raspi 4

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

Re: Timer einbauen

Beitrag von udo1toni »

Warum baust Du da überhaupt einen Timer ein? Wenn Du das Astro Binding zum Triggern verwendest, kannst Du im entsprechenden Channel (hier sunset RangeEvent) ein Offset setzen. Du kannst also auf den 1. Timer verzichten und stattdessen ein Offset von 10 Minuten einstellen.
Danach musst Du lediglich den Timer etwas verschieben:

Code: Alles auswählen

rule "Sonne geht unter, Licht geht an"
when
    Channel 'astro:sun:home:set#event' triggered START
then
    Echo_Speech.sendCommand("Die Sonne geht unter, ich schalte jetzt das Licht ein.")
    createTimer(now.plusSeconds(5), [|
        Outdoorplug.sendCommand(ON)
        LichtSalz.sendCommand(ON)
        LichtTV.sendCommand(ON)
        LichtSchlafzimmer.sendCommand(ON)
        Outdoorplug.sendCommand(ON)
        LichtCouchSchalter.sendCommand(ON)
        LichtVitrine.sendCommand(ON)
    ])
end
Ich habe hier die Methode anstatt der Action verwendet, wann immer möglich, sollte man die Methode bevorzugen (die Action ist weniger flexibel).
Ich habe auch eine andere Form für createTimer gewählt, so wird etwas deutlicher, dass das Lambda (der Codeblock) ein Parameter der Funktion createTimer() ist. Beide Schreibweisen sind zulässig.

Outdoorplug ist zweimal in der Liste, ich nehme an, das ist Absicht wegen der Zuverlässigkeit?
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Sadi191
Beiträge: 30
Registriert: 3. Mär 2021 20:01
Answers: 0

Re: Timer einbauen

Beitrag von Sadi191 »

Hallo udo1toni,

super, ich hab die Rule so uebernehmen koennen.
Kannst du mir noch sagen, wie ich den Offset im Channel einbaue?

Hier mein Item:

Code: Alles auswählen

//Anzeige Sonnenaufgang und Sonnenuntergang

DateTime         Sunrise_Time       "Uhrzeit Sonnenaufgang [%1$tH:%1$tM]"         <sunrise>     { channel="astro:sun:home:rise#start" }
DateTime         Sunset_Time        "Uhrzeit Sonnenuntergang [%1$tH:%1$tM]"       <sunset>      { channel="astro:sun:home:set#start" }
openHAB 4.2.2 / Raspi 4

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

Re: Timer einbauen

Beitrag von udo1toni »

Wie Du schon selbst schreibst, das Offset nimmst Du im Channel vor. Das heißt, Du musst dazu das Thing bearbeiten. Und der Channel, der die Rule triggert, ist NICHT mit einem Item verknüpft! (das geht gar nicht, es ist ein Range Event Channel)
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Sadi191
Beiträge: 30
Registriert: 3. Mär 2021 20:01
Answers: 0

Re: Timer einbauen

Beitrag von Sadi191 »

Hi,

hier ist das Thing:

Code: Alles auswählen

Thing astro:sun:home        "11_Sonnendaten"            [ geolocation="xx.xxxxxx, xx.xxxxxx", interval=60 ]
Wo muss da das Offset rein?
openHAB 4.2.2 / Raspi 4

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

Re: Timer einbauen

Beitrag von udo1toni »

Wenn Du das Thing per textdatei definierst, musst Du die Channel mit dazu schreiben, die vom default abweichen. Z.B. so:

Code: Alles auswählen

// Astro
Thing astro:sun:home        "11_Sonnendaten"            [ geolocation="xx.xxxxxx, xx.xxxxxx", interval=60 ] {
    Channels:
        Type rangeEvent : civilDawn#event  [
            offset=10,
            earliest="06:00",
            latest="08:00"
        ]
        Type rangeEvent : civilDusk#event  [
            offset=15,
            earliest="16:00",
            latest="22:00"
        ]
}
Positiver offset -> später als eigentliches Event. Negativer Offset -> früher als eigentliches Event. Die Zahl steht für Minuten.
earliest und latest sind die Grenzwerte, innerhalb denen der Trigger ausgelöst wird. Wenn also bei obigen Werten die Sonne um 5:45 Uhr aufgeht, triggert civilDawn um 6 Uhr. Geht die Sonne um 5:55 Uhr auf, triggert civilDawn um 6:05 Uhr. geht die Sonne um 7:55 Uhr auf, trigger civilDawn um 8:00 Uhr.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Sadi191
Beiträge: 30
Registriert: 3. Mär 2021 20:01
Answers: 0

Re: Timer einbauen

Beitrag von Sadi191 »

Das macht total Sinn, klasse.
Den Channel in der Rule muss ich dementsprechend nochmal anpassen oder?

Code: Alles auswählen

rule "Sonne geht unter, Licht geht an"
when
    Channel 'astro:sun:home:set#event' triggered START
then
    Echo_Speech.sendCommand("Die Sonne geht unter, ich schalte jetzt das Licht ein.")
    createTimer(now.plusSeconds(10), [|
        Outdoorplug.sendCommand(ON)
        LichtSalz.sendCommand(ON)
        LichtTV.sendCommand(ON)
        LichtSchlafzimmer.sendCommand(ON)
        Outdoorplug.sendCommand(ON)
        LichtCouchSchalter.sendCommand(ON)
        LichtVitrine.sendCommand(ON)
    ])
end
openHAB 4.2.2 / Raspi 4

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

Re: Timer einbauen

Beitrag von udo1toni »

Nein, der Channel ändert sich nicht, nur der Zeitpunkt wird verschoben.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Sadi191
Beiträge: 30
Registriert: 3. Mär 2021 20:01
Answers: 0

Re: Timer einbauen

Beitrag von Sadi191 »

Danke, das passt prima.
openHAB 4.2.2 / Raspi 4

Antworten