Seite 1 von 1

gelöst: Rule: Lichtsteuerung mit 2 variablen

Verfasst: 4. Mai 2019 10:37
von atk69
Hallo zusammen

seit Tagen bin ich schon am experimentieren.
Es will mir einfach nicht gelingen.

In Openhab 2.4 möchte ich eine einfache Regel erstellen:
2 Lampen sollen sich einschalten unter folgender Bedingung: LUX-Wert unter 11 (data.lum) und nur zwischen 17:00 - 23:00.
Hierzu folgende Regel

Code: Alles auswählen

rule "WZ_SL_Licht an"

when
Item dataLum changed
then 
var State = dataLum.state as DecimalType
if ((State <= 11) && (now.getMinuteOfDay < (60*15) || now.getMinuteOfDay > (60*23)+1))
{
Wohnzimmer1_Switch.sendCommand(ON)
Wohnzimmer2_Switch.sendCommand(ON)
}
end
Das Licht schaltet zwar unter 11 Lux ein, aber die Zeit wird nicht berücksichtigt.
Die Zeitabfrage ist nötig, damit die Lampen nicht morgens geschaltet werden (das war dummerweise bisher so)

Vermutlich bgreife ich den Syntax nicht :oops:

Bitte um Unterstützung.

Gruss
atk69

Re: Rule: Lichtsteuerung mit 2 variablen

Verfasst: 4. Mai 2019 11:28
von Heavy-Dee
Ich glaube du hast ein Klammerproblem.
Versuch mal:

Code: Alles auswählen

    if ((State <= 11) && ((now.getMinuteOfDay < (60*15)) || (now.getMinuteOfDay > ((60*23)+1))))
oder

Code: Alles auswählen

    if ((State <= 11) && ((now.getMinuteOfDay < (60*15)) || (now.getMinuteOfDay > (60*23+1))))

Re: Rule: Lichtsteuerung mit 2 variablen

Verfasst: 4. Mai 2019 12:05
von atk69
Vielen Dank Heavy-Dee, Variante 2 funktioniert. Allerdings habe ich wohl noch einen Fehler drin:
Der Schalter soll ja nur zwischen 15:00 und 23:00 angesprochen werde.
Offenbar ist es genau andersherum. Habe es mit den oben angegebenen Werten getestet = geht (es ist aber erst 12:00 !!!)
Ändere ich den 15:00 -Wert auf 10:00 geht es nicht mehr.

Re: Rule: Lichtsteuerung mit 2 variablen

Verfasst: 4. Mai 2019 12:36
von Heavy-Dee
Die aktuelle Zeit ist immer kleiner als 23:00 => immer an !!!
Du musst eine Zeitspanne zwischen 15:00 und 23:00 schaffen
15:00 < aktuelle Zeit > 23:00
if ((State <= 11) && ((now.getMinuteOfDay > (60*15)) && (now.getMinuteOfDay < (60*23+1))))

Code: Alles auswählen

if ((State <= 11) && ((now.getMinuteOfDay > (60*15)) && (now.getMinuteOfDay < (60*23+1))))

Re: Rule: Lichtsteuerung mit 2 variablen

Verfasst: 4. Mai 2019 12:43
von atk69
Genau das wars :idea:
Ich habe dies Zeitregeln bisher nicht wirklich verstanden. Jetzt ist es deutlich klarer. ;)
Vielen Dank

Gruss
atk69

Re: gelöst: Rule: Lichtsteuerung mit 2 variablen

Verfasst: 4. Mai 2019 23:47
von udo1toni
Wenn es tatsächlich nur um die Stunde geht, wäre es naheligend, getHourOfDay zu verwenden:

Code: Alles auswählen

if ((dataLum.state as Number) <= 11 && now.getHourOfDay > 14 && now.getHourOfDay < 23)
Die Grenzen sind hier natürlich 15:00:00 Uhr und 22:59:59 Uhr.

Re: gelöst: Rule: Lichtsteuerung mit 2 variablen

Verfasst: 6. Mai 2019 13:09
von atk69
Wusste ich es doch: der Chief gibt noch einen "Optimierungskommentar" ab :D :D :D .
Bin immer froh , wenn Spezialisten wie Udo1toni nochmal über das Thema drüberschauen.
Oft sind es die Feinheiten, die das script perfektionieren ;)

Danke für den Hinweis.

Gruss
atk69