Seite 1 von 1

Beleuchtungssteuerung mit Timer und Motionsensor

Verfasst: 25. Okt 2017 17:56
von sami77
Hallo Leute,

ich habe mal eine Frage, da ich mich gerade intensiv mit einigen Openhab Themen auseinandersetze und stecke hier gerade etwas fest und ich denke es muss doch eigentlich ganz simpel sein.

Mein Projekt: Beleuchtungssteuerung im Eingangsbereich, bei Aktivierung des Bewegungssensors, Licht an für zwei Minuten und das nur wenn es dunkel ist.

Funktioniert auch schon echt ganz gut, allerdings ohne die Zeitliche Steuerung wann die Regel aktiv sein soll!

Code: Alles auswählen

rule "Beleuchtung Eingang, An für 2 min"
when
	Item Motionsensor received update ON

then
    if(timer === null)  {
        logInfo("FILE", "Setting to ON and creating timer")
        Eingang_Garage.sendCommand(ON)
        timer = createTimer(now.plusMinutes(2), [|
            logInfo("FILE", "Timer expired and setting to OFF")
            Motionsensor.postUpdate(OFF)
            Eingang_Garage.sendCommand(OFF)
            timer = null
        ])
    } else {
        logInfo("FILE", "Timer rescheduled")
        timer.reschedule(now.plusMinutes(2))
        
    }
end
Ich will jetzt noch das Astro-Binding nutzen, was mir Daylight time, oder Sun-Set ausgeben kann. Wie kann ich denn nun hier eine Doppel-Bedingung einfügen, dass die Regel nur im Zeitraum wenn es dunkel ist aktiv ist?

wenn ich bei "when" noch eine zusätzliche Bedingung einfüge komme ich nicht weiter...

Z.B.

Code: Alles auswählen

when Item AstroSunData_Set_StartTime changed to ON
                    and Item Motionsensor received update ON....then...
Sorry, mir wurde das Programmieren irgendwie nicht in die Wiege gelegt!


Herzlichen Dank schon mal!

Gruß!
Uwe

Re: Beleuchtungssteuerung mit Timer und Motionsensor

Verfasst: 11. Nov 2017 12:39
von sami77
Hello hello,

keiner eine Idee wie ich meine doppelte Bedingung umsetzen könnte?

1000 Dank!

Gruß
Uwe

Re: Beleuchtungssteuerung mit Timer und Motionsensor

Verfasst: 11. Nov 2017 23:29
von seppy
Hi,
Du musst Deine if Bedingung erweitern.
In etwa so:

Code: Alles auswählen

rule "Beleuchtung Eingang, An für 2 min"
when
	Item Motionsensor received update ON
then
    if(timer === null && AstroSunData_Set_StartTime.state == ON)  {
        logInfo("FILE", "Setting to ON and creating timer")
        Eingang_Garage.sendCommand(ON)
        timer = createTimer(now.plusMinutes(2), [|
            logInfo("FILE", "Timer expired and setting to OFF")
            Motionsensor.postUpdate(OFF)
            Eingang_Garage.sendCommand(OFF)
            timer = null
        ])
    } else {
        logInfo("FILE", "Timer rescheduled")
        timer.reschedule(now.plusMinutes(2))
        
    }
end
Viele Grüße,
Seppy

Re: Beleuchtungssteuerung mit Timer und Motionsensor

Verfasst: 18. Nov 2017 14:45
von sami77
100Dank Seppy!

Jetzt würde das aber nur funktionieren, wenn das Item AstroSunData_Set_StartTime ein Schalter wäre, sonst gibt es ja kein "state". Das Item hat jedoch den Charakter "DateTime". Kann ich das einfach über die PaperUI in einen switch umwandeln, oder muss ich quasi einen einfachen virtuellen Switch erstellen, der bei einer bestimmten Zeit ON und OFF getriggert wird?

VG Uwe

Re: Beleuchtungssteuerung mit Timer und Motionsensor

Verfasst: 18. Nov 2017 18:17
von seppy
Hi,
ne umwandeln geht nicht, entweder Du baust eine Rule die eine Switch bedient, oder Du nimmst aus dem Astrobinding die dort bereits nutzbaren Switches. Hier ein Beispiel:

Code: Alles auswählen

// Sonnenaufgang
Switch Sunrise_Event
	(gAstro)
	//{channel="astro:sun:heideweg30BeforeSunrise:rise#event"}
	{astro="planet=sun, type=rise, property=start, offset=-30"}
Zusätzlich habe ich mir zwei globale Switches gebaut:

Code: Alles auswählen

Switch IsDay 
	"Tag"
	(gAstro)

Switch IsNight
	"Nacht"
	(gAstro)

die über eine Rule gesetzt werden:

Code: Alles auswählen

rule "IsDay"
 when
 	Item Sunrise_Event changed to ON
 then
	IsDay.sendCommand(ON)
	IsNight.sendCommand(OFF)
	logInfo("Homebox.SystemRules:IsDay", "Daylight: Setze IsDay \"ON\"")
 end
Vielleicht hilfts Dir?!

Grüße,
Seppy

Re: Beleuchtungssteuerung mit Timer und Motionsensor

Verfasst: 24. Nov 2017 16:22
von sami77
Vielen Dank, es funktioniert nun und ich schreibe mal kurz zusammen wie ich es gemacht habe, vielleicht hilft es ja dem einen oder anderen Newbie!?

Projekt: 1) Eingangsbeleuchtung über Motionsensor. Bei Aktivierung des Sensors soll die Beleuchtung zwei Minuten anbleiben.
Projekt: 2) Garagen- und Eingangsbeleuchtung sollen 5 min anbleiben, wenn der Gargantürsensor anspricht.

Das alles soll nur funktionieren, wenn es auch dunkel ist. Da ich keinen Photosensor habe, habe ich dies mit dem Astro-Binding gelöst, was z.B. nach zur eingestellten Adresse, den exakten Zeitpunkt des Sonnenuntergangs (und andere entspr. Events)ausgibt, wodurch sich z.B. ein Schalter bedienen lässt, der anzeigt: Tageslicht ON/OFF

Astro-Binding bedient einen Schalter ob Tag ist oder nicht:

Code: Alles auswählen

rule "Sonnenuntergang"

when
    Channel 'astro:sun:home:set#event' triggered START 
then
    Tageslicht.sendCommand(OFF)

end

rule "Sonnenaufgang fertig"

when
    Channel 'astro:sun:home:rise#event' triggered START
then
    Bewegungssensor_BinarySensor.sendCommand(ON)
    
    
Dann die eigentliche Logik:

Code: Alles auswählen

var Timer timer = null
rule "Beleuchtung Eingang, An für 2 min"
when
	Item Motionsensor received update ON

then
    if(timer === null && Tageslicht.state == OFF)  {
        logInfo("FILE", "Setting to ON and creating timer")
        Eingang_Garage.sendCommand(ON)
        timer = createTimer(now.plusMinutes(2), [|
            logInfo("FILE", "Timer expired and setting to OFF")
            Motionsensor.postUpdate(OFF)
            Eingang_Garage.sendCommand(OFF)
            timer = null
        ])
    } else {
        logInfo("FILE", "Timer rescheduled")
        timer.reschedule(now.plusMinutes(2))
        
    }
end

Das mit der Garage funktioniert genauso und kann zusammen mit dem Schalter in eine *.rules Datei. Wer noch genauere Infos haben möchte, einfach fragen! 1000 Dank für die Hilfe hier im Forum.

Gruß!
Uwe