Tageszeiten in Rule definiern für BWM

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Tageszeiten in Rule definiern für BWM

Beitrag von Backbe01 »

Hallo,

zur Anwendung:
Ich habe an meine BJ Komfort BWM einen Shelly dimmer angeschlossen. Dieser verrichtet seine Arbeit hervorragend. Nun möchte ich die Schaltzeiten und Helligkeitswerte unabhängig vom BJ BWM steuern. Auch dieses klappt hervorragend. Lediglich bei der Einstellung in den Rules mit den Schaltzeiten, könnte noch etwas optimiert werden. Daher wäre ich sehr dankbar, wenn ihr einen Blick auf die Rule werfen könntet und mir evtl. ein Beispiel nennen, wie ich die Zeiten eleganter einstellen könnte.

Ich würde gerne zu unterschiedlichen Zeiten drei Helligkeiten integrieren:

Z.B. ab 17Uhr und ab 5 Uhr helles Licht, ab 21 Uhr bis 0 Uhr gedimmtes Licht, und von 0 - 5Uhr ein sehr gedimmtes "Toilettenlicht". :-)

Zur Info: ich habe noch einen Dummyswitch erstellt, damit bei Besuch die Dauer des Schaltintervalls verlängert wird und immer helles Licht angeht.

Vielen Dank im voraus und

VG
Gerhard

Code: Alles auswählen

var Timer tBewegung = null 
var int iSekundenEG = 15
var int iSekundenOG = 15
var int iSekundenOG_Nacht = 10
var int isekunden_besuch = 55                                                
var int ilux = 2000


rule "Bewegungsmelder EG"
when
    Item shellydimmer_Hausgang_EG_Input_1 changed from 0 to 1                             
then
   
    if  ((Sonnensensor.state as DecimalType) <   (ilux) || (now.getHourOfDay > 20 ) || (now.getMinutesOfDay < 300)) {
        
        logInfo("bewegung","Es ist Nacht. Kleines Licht.")
        shelly_Hausgang_EG_Dimmer_bwm.sendCommand(7)  
        tBewegung?.cancel                                                                                             
        tBewegung = createTimer(now.plusSeconds(iSekundenEG), [ |                     
            shellydimmer_Hausgang_EG_Dimmer.sendCommand(3)
            shellydimmer_Hausgang_EG_Dimmer.sendCommand(0) 
        ])
    }
        else  {
        logInfo("bewegung","Es ist Abend. Helles Licht.")
           shelly_Hausgang_EG_Dimmer_bwm.sendCommand(100)  
            tBewegung?.cancel                                                                                             
            tBewegung = createTimer(now.plusSeconds(iSekundenEG), [ |                     
            shellydimmer_Hausgang_EG_Dimmer.sendCommand(66)
            shellydimmer_Hausgang_EG_Dimmer.sendCommand(33)
            shellydimmer_Hausgang_EG_Dimmer.sendCommand(0)                                       
        ]) 
    }
    

    
    if(Besuch_anwesend.state == ON) {                      
        logInfo("bewegung","Es ist dunkel und Besuch, helles Licht.")
        tBewegung?.cancel                                                    
        shellydimmer_Hausgang_EG_Dimmer.sendCommand(100)                                        
        tBewegung = createTimer(now.plusSeconds(isekunden_besuch), [ |                  
            shellydimmer_Hausgang_EG_Dimmer.sendCommand(66)
            shellydimmer_Hausgang_EG_Dimmer.sendCommand(33)
            shellydimmer_Hausgang_EG_Dimmer.sendCommand(0)                                    
        ])
        }

end
OH 4.1.0M2 auf nuc in Docker

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Re: Tageszeiten in Rule definiern für BWM

Beitrag von Backbe01 »

Ich habe jetzt selber nochmal etwas umgestellt. So gefällt mir die Rule schon besser:

Code: Alles auswählen

var Timer tBWM = null                                                       

rule "BWM_EG"
when
    Item shellydimmer_Hausgang_EG_Input_1 changed from 0 to 1
then
    logInfo("SchlummerBWM_EG_NEU", "BWM_EG löst aus")
    if(tBWM !== null) tBWM.cancel
    var Integer iSekunden = 15
    var Integer iHelligkeit = 100
    if(now.getMinuteOfDay >= 21 * 60 && now.getMinuteOfDay < 23 * 60 +59 && Besuch_anwesend.state != ON) iHelligkeit = 7
    if(now.getHourOfDay >= 0 && now.getMinuteOfDay < 5 * 60 +10 && Besuch_anwesend.state != ON) iHelligkeit = 2
    if(now.getMinuteOfDay >= 5 * 60 +11 && now.getMinuteOfDay < 6 * 60 && Besuch_anwesend.state != ON) iHelligkeit = 7
    if(Besuch_anwesend.state == ON) iSekunden = 55 
    shelly_Hausgang_EG_Dimmer_bwm.sendCommand(iHelligkeit)
    tBWM = createTimer(now.plusSeconds(iSekunden), [
        shellydimmer_Hausgang_EG_Dimmer.sendCommand(0)
        //tBWM = null
    ])
end
Eine Frage hätte ich noch: Ist es möglich im "if Teil" eine zweite var einzubauen, wie z.B. iHelligkeit = 7 && iSekunden = 20?

Bei meinen Versuchen wurde hier immer ein Fehler ausgegeben...
OH 4.1.0M2 auf nuc in Docker

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

Re: Tageszeiten in Rule definiern für BWM

Beitrag von Darkwin101 »

Setze mal den Definitionteil nach dem if...) in {} Klammern
Also if(....){iHelligkeit =7 iSekunden=20}

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Re: Tageszeiten in Rule definiern für BWM

Beitrag von Backbe01 »

Hey Darkwin, vielen Dank! Hat auf Anhieb geklappt!!
OH 4.1.0M2 auf nuc in Docker

Antworten