
Rule - Xmas-Beleuchtung
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Rule - Xmas-Beleuchtung
Immer gerne 

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 107
- Registriert: 13. Dez 2018 21:02
Re: Rule - Xmas-Beleuchtung
Hallo udo1toni,
die Zeitschaltung hatte ja im letzten Jahr super funktioniert.
Um es zu verstehen, habe ich doch noch mal eine Frage.
Dieses Jahr wäre ja der erste Advent am 29.11..
Wie müsste ich denn die Regeln zum Ein- bzw. Ausschalten anpassen?
Bisher wurde ja nur der Monat 12 & 1 in Betracht gezogen und am 30.11. wurde manuell eingeschaltet.
Vielen herzlichen Dank
die Zeitschaltung hatte ja im letzten Jahr super funktioniert.
Um es zu verstehen, habe ich doch noch mal eine Frage.
Dieses Jahr wäre ja der erste Advent am 29.11..
Wie müsste ich denn die Regeln zum Ein- bzw. Ausschalten anpassen?
Bisher wurde ja nur der Monat 12 & 1 in Betracht gezogen und am 30.11. wurde manuell eingeschaltet.
Code: Alles auswählen
rule "Xmas-Beleuchtung (Innen) EIN"
when
Time cron "0 30 05 ? 12,1 MON,TUE,WED,THU,FRI" or // 05:30:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 00 16 ? 12,1 MON,TUE,WED,THU,FRI" or // 16:00:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 00 05 ? 12,1 SAT,SUN" or // 05:00:00 Uhr Samstag + Sonntag, Dezember und Januar
Time cron "0 00 15 ? 12,1 SAT,SUN" // 15:00:00 Uhr Samstag + Sonntag, Dezember und Januar
then
if(now.plusDays(31).getDayOfYear < 38) //1. Dezember + 31 Tage = 1. Januar = 1. Tag... (1. Dezember - 6. Januar = 38 Tage)
Xmas.sendCommand(ON)
end
rule "Xmas-Beleuchtung (Innen) AUS"
when
Time cron "0 59 23 30 11 ?" or // 23:59:00 Uhr 30.11. erster Schaltpunkt AUS
Time cron "0 30 07 ? 12,1 MON,TUE,WED,THU,FRI" or // 07:30:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 45 23 ? 12,1 MON,TUE,WED,THU,FRI" or // 23:45:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 00 10 ? 12,1 SAT,SUN" or // 10:00:00 Uhr Samstag + Sonntag, Dezember und Januar
Time cron "0 59 23 ? 12,1 SAT,SUN" // 05:00:00 Uhr Samstag + Sonntag, Dezember und Januar
then
if(now.plusDays(31).getDayOfYear < 38) //1. Dezember + 31 Tage = 1. Januar = 1. Tag... (1. Dezember - 6. Januar = 38 Tage)
Xmas.sendCommand(OFF)
end
Vielen herzlichen Dank
openHAB 4.3.4 im Docker@Synology
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Rule - Xmas-Beleuchtung
Na, das Eine sind die Time cron Ausdrücke, da muss das 12,1 gegen 11,12,1 getauscht werden, das Zweite ist das plusDays, da muss die 31 gegen eine 33 getauscht werden (29.11. + 33 Tage = 1. Januar), das Dritte ist dann der Vergleich <38, da muss dann logischerweise < 40 stehen (6.1. + 33 = 39. Tag).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 107
- Registriert: 13. Dez 2018 21:02
Re: Rule - Xmas-Beleuchtung
Hat wieder perfekt funktioniert. Danke.
Ich glaube, jetzt habe ich es auch verstanden.
Gibt eigentlich eine Website, wo das alles dokumentiert ist oder wo bekommt man das (dein) ganzes Wissen her?
Ich glaube, jetzt habe ich es auch verstanden.

Gibt eigentlich eine Website, wo das alles dokumentiert ist oder wo bekommt man das (dein) ganzes Wissen her?

openHAB 4.3.4 im Docker@Synology
-
- Beiträge: 107
- Registriert: 13. Dez 2018 21:02
Re: Rule - Xmas-Beleuchtung
Alle Jahre wieder.
Nein, die letzten Jahre hat immer alles super funktioniert, nur dieses Jahr ist der Wurm drin.
Ich habe die Rule angepasst, aber sie wird trotzdem seit heute ausgelöst. - Kann mir das evtl. jemand erklären???
***Dieser Teil scheint nach einem Neustart von OH zu funktionieren! In der UI hat es mir noch alte, nicht mehr gültige Rules angezeigt.***
Aktuell passe ich die Rule für jedes Jahr manuell an. Gibt es vielleicht eine elegantere Lösung, den Start der Rule zu berechnen?
Was ich noch seltsam finde ist, dass im UI die Rules alle doppelt stehen.

Ich habe die Rule angepasst, aber sie wird trotzdem seit heute ausgelöst. - Kann mir das evtl. jemand erklären???
***Dieser Teil scheint nach einem Neustart von OH zu funktionieren! In der UI hat es mir noch alte, nicht mehr gültige Rules angezeigt.***
Aktuell passe ich die Rule für jedes Jahr manuell an. Gibt es vielleicht eine elegantere Lösung, den Start der Rule zu berechnen?
Code: Alles auswählen
// Schaltet die Weihnachtsbeleuchtung (Aussen) vom 01. Dezember bis 6. Januar
rule "Xmas-Beleuchtung (Aussen) EIN 01.12-06.01"
when
Time cron "0 00 06 ? 12,1 MON,TUE,WED,THU,FRI" or // 06:00:00 Uhr Montag-Freitag, November, Dezember und Januar
Time cron "0 00 06 ? 12,1 SAT,SUN" or // 06:00:00 Uhr Samstag + Sonntag, November, Dezember und Januar
Time cron "0 30 16 ? 12,1 MON,TUE,WED,THU,FRI" or // 16:30:00 Uhr Montag-Freitag, November, Dezember und Januar
Time cron "0 00 16 ? 12,1 SAT,SUN" // 16:00:00 Uhr Samstag + Sonntag, November, Dezember und Januar
then
if(now.plusDays(31).getDayOfYear < 38) //01. Dezember + 31 Tage = 1. Januar = 1. Tag... (01.Dezember - 6. Januar = 38 Tage)
Xmas_Aussen.sendCommand(ON)
end
rule "Xmas-Beleuchtung (Aussen) AUS 01.12-06.01"
when
Time cron "0 30 07 ? 12,1 MON,TUE,WED,THU,FRI" or // 07:30:00 Uhr Montag-Freitag, November, Dezember und Januar
Time cron "0 00 08 ? 12,1 SAT,SUN" or // 08:00:00 Uhr Samstag + Sonntag, November, Dezember und Januar
Time cron "0 30 23 ? 12,1 MON,TUE,WED,THU,FRI" or // 23:30:00 Uhr Montag-Freitag, November, Dezember und Januar
Time cron "0 30 23 ? 12,1 SAT,SUN" or // 23:30:00 Uhr Samstag + Sonntag, November, Dezember und Januar
Time cron "0 30 23 6 1 ?" // 23:30:00 Uhr 06.01. letzter Schaltpunkt AUS
then
if(now.plusDays(31).getDayOfYear < 38) //01. Dezember + 31 Tage = 1. Januar = 1. Tag... (01.Dezember - 6. Januar = 38 Tage)
Xmas_Aussen.sendCommand(OFF)
end
//
//
// Schaltet die Weihnachtsbeleuchtung (Innen) vom 28. November bis 6. Januar
rule "Xmas-Beleuchtung (Innen) EIN 01.12-06.01"
when
Time cron "0 00 06 ? 12,1 MON,TUE,WED,THU,FRI" or // 06:00:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 30 15 ? 12,1 MON,TUE,WED,THU,FRI" or // 15:30:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 00 08 ? 12,1 SAT,SUN" or // 08:00:00 Uhr Samstag + Sonntag, Dezember und Januar
Time cron "0 03 15 ? 12,1 SAT,SUN" // 15:30:00 Uhr Samstag + Sonntag, Dezember und Januar
then
if(now.plusDays(31).getDayOfYear < 38) //01. Dezember + 31 Tage = 1. Januar = 1. Tag... (01.Dezember - 6. Januar = 38 Tage)
Xmas.sendCommand(ON)
end
rule "Xmas-Beleuchtung (Innen) AUS 01.12-06.01"
when
Time cron "0 30 07 ? 12,1 MON,TUE,WED,THU,FRI" or // 07:30:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 30 23 ? 12,1 MON,TUE,WED,THU,FRI" or // 23:30:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 30 09 ? 12,1 SAT,SUN" or // 09:30:00 Uhr Samstag + Sonntag, Dezember und Januar
Time cron "0 30 23 ? 12,1 SAT,SUN" // 23:30:00 Uhr Samstag + Sonntag, Dezember und Januar
then
if(now.plusDays(31).getDayOfYear < 38) //01. Dezember + 31 Tage = 1. Januar = 1. Tag... (01.Dezember - 6. Januar = 38 Tage)
Xmas.sendCommand(OFF)
end
//
//
// Schaltet die Weihnachtsbeleuchtung (Kids) vom 28. November bis 6. Januar
rule "Xmas-Beleuchtung (Kids) EIN 01.12-06.01"
when
Time cron "0 30 06 ? 12,1 MON,TUE,WED,THU,FRI" or // 06:30:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 30 15 ? 12,1 MON,TUE,WED,THU,FRI" or // 15:30:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 30 07 ? 12,1 SAT,SUN" or // 07:30:00 Uhr Samstag + Sonntag, Dezember und Januar
Time cron "0 00 16 ? 12,1 SAT,SUN" // 16:00:00 Uhr Samstag + Sonntag, Dezember und Januar
then
if(now.plusDays(31).getDayOfYear < 38) //01. Dezember + 31 Tage = 1. Januar = 1. Tag... (01.Dezember - 6. Januar = 38 Tage)
Xmas_Kids.sendCommand(ON)
end
rule "Xmas-Beleuchtung (Kids) AUS 01.12-06.01"
when
Time cron "0 30 07 ? 12,1 MON,TUE,WED,THU,FRI" or // 07:30:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 00 22 ? 12,1 MON,TUE,WED,THU,FRI" or // 22:00:00 Uhr Montag-Freitag, Dezember und Januar
Time cron "0 00 08 ? 12,1 SAT,SUN" or // 08:00:00 Uhr Samstag + Sonntag, Dezember und Januar
Time cron "0 00 22 ? 12,1 SAT,SUN" // 22:00:00 Uhr Samstag + Sonntag, Dezember und Januar
then
if(now.plusDays(31).getDayOfYear < 38) //01. Dezember + 31 Tage = 1. Januar = 1. Tag... (01.Dezember - 6. Januar = 38 Tage)
Xmas_Kids.sendCommand(OFF)
end
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB 4.3.4 im Docker@Synology
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Rule - Xmas-Beleuchtung
Gewöhnlich sollte die Weihnachtsbeleuchtung abhängig vom ersten Advent geschaltet werden, je nach Gegend entweder ab Montag nach dem Totensonntag oder eben direkt ab dem ersten Advent.
Code: Alles auswählen
var Integer intStAdvent = 0
rule "Berechnung nach Mitternacht"
when
Time cron "5 0 0 * * ?" or
System started
then
val firstAdvent = LocalDate.of(now.getYear,12,25).minusDays(LocalDate.of(now.getYear,12,25).getDayOfWeek.getValue + 21)
intStAdvent = firstAdvent.getDayOfYear
logInfo("holiday","Der erste Advent ist am {}", firstAdvent)
end
rule "Weihnachtslicht ein"
when
Time cron "0 0 6 * * ?" or // morgens 6 Uhr
Time cron "0 30 16 * * ?" // nachmittags 16:30 Uhr
then
if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent) {
logDebug("x-mas","Weihnachtsbeleuchtung ein.")
NOutBalkonSteckdose.sendCommand(ON)
}
end
rule "Weihnachtslicht aus"
when
Time cron "0 0 9 * * ?" or // morgens 9 Uhr
Time cron "0 30 22 * * ?" // abends 22:30 Uhr
then
if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent) {
logDebug("x-mas","Weihnachtsbeleuchtung aus.")
NOutBalkonSteckdose.sendCommand(OFF)
}
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 107
- Registriert: 13. Dez 2018 21:02
Re: Rule - Xmas-Beleuchtung
Hallo Udo,
vielen Dank erstmal für das Skript.
Im LOG steht jetzt folgendes.
Das heißt quasi, dass der 1. Advent für den 03. Dezember berechnet wird.
Was muss jetzt angepasst werden, dass die Beleuchtung am 01. Dezember oder/und wie Du geschrieben hast, am Montag nach dem Totensonntag einschalten soll?
Danke
vielen Dank erstmal für das Skript.
Im LOG steht jetzt folgendes.
Code: Alles auswählen
023-11-30 00:00:05.821 [INFO ] [rg.openhab.core.model.script.holiday] - Der erste Advent ist am 2023-12-03
Was muss jetzt angepasst werden, dass die Beleuchtung am 01. Dezember oder/und wie Du geschrieben hast, am Montag nach dem Totensonntag einschalten soll?
Danke
openHAB 4.3.4 im Docker@Synology
- udo1toni
- Beiträge: 15244
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Rule - Xmas-Beleuchtung
Für den ersten Dezember prüfst Du einfach, ob der erste Dezember erreicht ist
Für den Montag nach Totensonntag prüfst Du, ob 1. Advent minus 6 Tage erreicht ist.
Prüfung ob vor dem 7.1. oder schon Dezember:
Prüfung ob vor dem 7.1. oder nach Totensonntag:

Prüfung ob vor dem 7.1. oder schon Dezember:
Code: Alles auswählen
if (now.getDayOfYear < 7 || now.getMonthValue == 12) {
Code: Alles auswählen
if (now.getDayOfYear < 7 || now.getDayOfYear > intStAdvent - 7) {
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet