Timer Frage

Themen auf die es innerhalb eines Jahres keine Antwort gab, werden hier archiviert.

Moderatoren: Cyrelian, seppy, udo1toni

Gesperrt
Benutzeravatar
Romel
Beiträge: 42
Registriert: 21. Mai 2020 15:32

Timer Frage

Beitrag von Romel »

Hallo Leute !

Ich brauche eure Hilfe.

Ich habe eine Rule die div. Lichter bei Abwesenheit ein und aus schaltet. Im Grunde funktioniert sie, aber hin und wieder schaltet sich ein Licht bei nicht getriggerter Rule selbständig aus. In der Logdatei sehe ich nur das ein Item off geht. Aber nicht den Grund. Ich vermute das noch ein Timer aktiv ist, auch wenn die Rule nicht läuft.

Code: Alles auswählen

rule "Abwesenheit Licht"
when
    Item AbwesendLicht received command or
    Item AstroSchalter changed to ON         			// Nacht beginnt
then
    if(Counter.state == NULL){ Counter.sendCommand(0) }
    if(receivedCommand == ON){ Counter.sendCommand(0) }
    if(receivedCommand == OFF){
        hulKueche1.sendCommand(OFF)
        hulEsszimmer.sendCommand(OFF)
        holBad.sendCommand(OFF)
        Counter.sendCommand(1)
        logInfo("Abwesend Licht","Abwesenheit Licht AUS (Astro = " + AstroSchalter.state + ", Abwesend = " + AbwesendLicht.state + ", Counter = " + Counter.state + " )")
        return;} 
    if(AbwesendLicht.state == OFF){
        return;}       
       
    logInfo("Abwesend Licht","Abwesenheit Licht EIN (Astro = " + AstroSchalter.state + ", Abwesend = " + AbwesendLicht.state + ", Counter = " + Counter.state + " )")
    if(AstroSchalter.state == ON && AbwesendLicht.state == ON && Counter.state == 0){
        if(now.getMinuteOfDay < ((Endzeit_Stunden_Licht.state as Number * 60) + (Endzeit_Minuten_Licht.state as Number))){
            Counter.sendCommand(1)   
            ltimer?.cancel
            hulKueche1.sendCommand(ON)                                   // Küche Licht ein
            logInfo("Abwesend Licht","Küche Licht Ein")
            ltimer = createTimer(now.plusMinutes(20)) [|                 // nach 20min. Esszimmer ein
            if(AbwesendLicht.state == OFF){return;}
            ltimer?.cancel
            hulEsszimmer.sendCommand(ON)
            logInfo("Abwesend Licht","Esszimmer Licht Ein für 5 min.")
            ltimer = createTimer(now.plusMinutes(5)) [|                 // nach 5min. Esszimmer aus
            hulEsszimmer.sendCommand(OFF)
            logInfo("Abwesend Licht","Esszimmer Aus")
            ltimer = null
            if(AbwesendLicht.state == OFF){return;}
            ltimer?.cancel
            holBad.sendCommand(ON)                                      // Bad Licht ein
            logInfo("Abwesend Licht","OG Bad Licht Ein für 3 min.")
            ltimer = createTimer(now.plusMinutes(3)) [|                 // nach 3min. OG Bad aus
            holBad.sendCommand(OFF)
            logInfo("Abwesend Licht","OG Bad Aus")
            ltimer = null
            if(AbwesendLicht.state == OFF){return;}
            ltimer?.cancel
            AbwesendLicht.sendCommand(ON)    
            logInfo("Abwesend Licht","Loop")
            Counter.sendCommand(0)
            ]
            ]
            ]
        }
        else if(AstroSchalter.state == OFF || now.getMinuteOfDay > ((Endzeit_Stunden_Licht.state as Number * 60) + (Endzeit_Minuten_Licht.state as Number)) ){ 
            AbwesendLicht.sendCommand(OFF)
            Counter.sendCommand(1)
            logInfo("Abwesend Licht","Abwesenheit Licht AUS (Astro = " + AstroSchalter.state + ", Abwesend = " + AbwesendLicht.state + ", Counter = " + Counter.state + " )")
        }
    }    
end
Danke für eure Hilfe !

Gesperrt