Rule in openhab: Nur bestimmte Uhrzeit UND nur 1x am Tag

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
chimera86
Beiträge: 15
Registriert: 26. Dez 2020 11:09
Answers: 1

Rule in openhab: Nur bestimmte Uhrzeit UND nur 1x am Tag

Beitrag von chimera86 »

Hi zusammen,

habe mich gerade angemeldet, um neben dem englischen OH Forum auch hier mal reinzuschauen und mich von anderen inspirieren zu lassen.

Ich habe für eine Wohnung eine recht große OH Implementierung und möchte gerne in einer Rule morgens nach dem Aufstehen eine Routine ablaufen lassen. Das untenstehende Rule funktioniert auch soweit aber 2 Dinge fehlen noch. Diese Rule nur ausführen zwischen 6-9 Uhr + nur einmal am Tag. Habt ihr Ideen wie ich das hier integrieren kann? Das Problem ist, das ich die Timer in der Rule schon sehr angepasst habe und nicht sicher bin wie ich weitere Timer und Timechecks integriere. Ich würde mich über Vorschläge freuen wie ihr die beiden Aspekte integrieren würdet bei den bereits gesetzten Timern.

Code: Alles auswählen

var Timer tAutoOff = null
var int iAutoOff = 0
var Timer t1 = null
var Timer t2 = null

rule "Morgenroutine"
when
    Item LobbyMotionSensor changed from OFF to ON
then
    if(tAutoOff !== null)                       // timer already scheduled, so leave rule
        return;
    iAutoOff = 0                              // initialize counter
    tAutoOff = createTimer(now, [|
        iAutoOff ++
        switch(iAutoOff) {
            case  1 : {
                    AlexaTTS.sendCommand('XYZ') 
                    broadlink_rm3_78_0f_77_5a_be_d1_command.sendCommand("NUBERTON")
                    AllLightsSwitchGroup.sendCommand("ON") 
                    Receiver.sendCommand("ON") 
                    LivingRoomLoungeLight.sendCommand("ON")
                    BedroomLoungeLight.sendCommand("ON")     
                    }
            case  2 : {
                    t1 = createTimer(now.plusSeconds(10), [|
                    AlexaTraffic.sendCommand("Traffic") 
                    AlexaTraffic.sendCommand("Weather") 
                    ])
                     }
            case  3 : {
                    Sonos_Master_Bedroom_Add.sendCommand("RINCON_000E582AC07601400")
                    Sonos_Master_Bedroom_Add.sendCommand("RINCON_000E582AC07E01400")
                    Sonos_Master_Bedroom_Add.sendCommand("RINCON_B8E93783325201400")
                    Sonos_Master_Bedroom_Add.sendCommand("RINCON_B8E9375835EC01400")
                    LivingRoomSonosVolume.sendCommand("85")
                    SonosShuffle.sendCommand("ON")
                    SonosPlaylist.sendCommand("Fluid")
                     }
            case 4  : DenonInput.sendCommand('MPLAY')
            case 5  : {
                    t2 = createTimer(now.plusSeconds(10), [|
                    NubertSelect.sendCommand("NUBERTCHANOPTICAL") ])
                     } 
            default : {
                tAutoOff = null
                return;
            }
        }
        tAutoOff.reschedule(now.plusSeconds(3))
    ])
end 

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Rule in openhab: Nur bestimmte Uhrzeit UND nur 1x am Tag

Beitrag von Darkwin101 »

Ich würde es so machen

Code: Alles auswählen

var Einmal = 0 // Variable ob Rule schon ausgeführt wurde
Rule"XY"
when Item XY changed to ON
then
if(((now.getHour > 6) && (now.getHour < 9)) && Einmal == 0) // Abfrage ob Zeit zwischen 6 und 9 und noch nicht ausgeführt
{
Einmal = 1 //Regel wurde ausgeführt
..... ///Weitere Kommandos
}
else { XY.postUpdate(OFF) }  // Wenn Bedingungen nicht erfüllt wird setze Schalter wieder auf OFF
end


eventuell musst du auf >5 Abfragen, ich weiß jetzt nicht genau ob er 6:01 schon als Gößer interpretiert.
Ist das eine openhab2 Installation ist es now.getHourofDay() als Befehl

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

Re: Rule in openhab: Nur bestimmte Uhrzeit UND nur 1x am Tag

Beitrag von udo1toni »

einfachste Variante: Eine Rule zum aktivieren, eine Rule zum deaktivieren, eine Abfrage in der eigentlichen Rule:

Code: Alles auswählen

var Boolean bEnable = false

rule "scharf schalten"
when
    Time cron "0 0 6 * * ?" // täglich um 6 Uhr
then
    bEnable = true // aktiviere Rule
end

rule "unscharf schalten"
when
    Time cron "0 0 9 * * ?" // täglich um 9 Uhr
then
    bEnable = false // deaktiviere Rule
end

rule "Morgenroutine"
when
    Item LobbyMotionSensor changed from OFF to ON
then
// Extra Code zusätzlich
    if(!bEnable) return; // falls bEnable != true -> Rule 
    bEnable = false
// Ab hier normaler Rule code
...
Natürlich kann man das auch in einer Rule erledigen, jedoch ergeben sich dadurch keine Vorteile. Der Ansatz oben ist (meiner Meinung!) insofern elegant, als er keinerlei Zeitabfragen in der Rule benötigt. Es wird noch nicht mal mehr als eine Variable benötigt.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

chimera86
Beiträge: 15
Registriert: 26. Dez 2020 11:09
Answers: 1

Re: Rule in openhab: Nur bestimmte Uhrzeit UND nur 1x am Tag

Beitrag von chimera86 »

Hallo,

danke für eure Antworten :) Habe gestern auf OH3 migriert und warte aktuell auf das RM3 mini binding und den Port davon, hoffentlich kommt der bald :) Dann teste ich eure Vorschläge und melde mich hier wieder :) Danke!

Antworten