Verschiedene Zeitschaltung Über Monate?? Brauche Hilfe

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
JoyriderLP
Beiträge: 11
Registriert: 8. Okt 2018 16:50
Answers: 0

Verschiedene Zeitschaltung Über Monate?? Brauche Hilfe

Beitrag von JoyriderLP »

Wie kann ich eine Regel Erstellen die vom
24.10 bis 5.4 um 18:30 Uhr einschaltet und um 01:05 Uhr ausschaltet

Und ab den 6.4 bis zum
23.10 um 20:30 Uhr einschaltet und um 02:05 Uhr wieder ausschaltet

Eine Normale Zeitschaltung ist ja einfach mit TimeCron

rule "Bild Flur ein"

when
Time cron "0 30 18 * * ? *" //jeden Tag um 18:30 Uhr
then
if (Bild_Flur.state == ON) {
sendCommand(Steckd_OG_Flur_Bild, ON)
}
end

rule "Bild Flur aus"

when
Time cron "0 5 1 * * ? *" //jeden Tag um 01:05 Uhr
then
if (Bild_Flur.state == ON) {
sendCommand(Steckd_OG_Flur_Bild, OFF)
}
end

Diese Regel möchte ich im Winter mit anderen Zeiten schalten wie im Sommer

Hoffe ihr könnt mir Helfen

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Verschiedene Zeitschaltung Über Monate?? Brauche Hilfe

Beitrag von OliverCJ »

Du könntest Dir noch ein Switch-Item "Winter" anlegen. Das schaltest Du entweder am 24.10. eines jeden Jahres manuell ein und am 5.4. wieder aus, oder Du läßt auch das über eine rule mit cron schalten. In Deiner rule oben fragst Du dann einfach zusätzlich noch ab, ob das Item den Status ON hat nimmst dann die 18:30 oder OFF, dann eben um 20:30.

Aber was möchtest Du eigentlich erreichen? Ich vermute mal, du möchtest das Bild im Flur eben erst dann beleuchten, wenn es auch dunkel oder zumindest dämmrig ist.

Du könntest also auch das Astro-Binding nehmen und die Schaltung von den Sonnenaufgangs- und -untergangszeiten abhängig machen.
Oder Du hast an passender Stelle eh einen Bewegungssensor hängen. Die liefern ja auch immer einen Helligkeitswert. Auch den könnte man abgreifen und in Abhängigkeit zu Helligkeit schalten (dann in Verbindung mit der Uhrzeit, sonst geht bei lockerer Bewölkung das Licht immer an und aus, wenn sich eine Wolke vor die Sonne schiebt)

Aber gut, alles Vermutungen meinerseits. Wenn Du es tatsächlich zu fixen Zeiten, aber Sommer und Winter unterschiedlichen haben möchtest, dann bau Dir einen Switch ein...

item anlegen:

Code: Alles auswählen

Switch Winter „Winterschaltung“
rule, um das item automatisch zu schalten:

Code: Alles auswählen

rule „Winter einschalten“
when
	Time cron „* * 1 24 10 ?“
then
	Winter.sendCommand(ON)
end

rule „Winter ausschalten“
when
	Time cron „* * 1 6 4 ?“
then
	Winter.sendCommand(OFF)
end
Und jetzt musst Du das nur noch zusätzlich abfragen...

Oliver

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Verschiedene Zeitschaltung Über Monate?? Brauche Hilfe

Beitrag von OliverCJ »

Mist, ich suche gerade noch nach einem guten, geeignetem Trigger... ansonsten brauchst Du ja doch wieder vier Regeln...:-(
Z.B. so:

Code: Alles auswählen

rule „Bild Flur ein im Winter“
when
	Time cron "0 30 18 * * ? *"
then
	if (Winter == ON) {
	Steckd_OG_Flur_Bild.sendCommand(ON)
}
end

rule „Bild Flur ein im Sommer“
when
	Time cron "0 30 20 * * ? *"
then
	if (Winter == OFF) {
	Steckd_OG_Flur_Bild.sendCommand(ON)
}
end
Und zum Ausschalten dann entsprechend noch mal zwei...

Du könntest die rule natürlich alle 5 Minuten triggern lassen und dann in den if-Abfragen noch mal auf die konkrete Zeit abfragen. Also wenn Winter ON ist und zusätzlich 18:30, dann Steckdose einschalten, etc...

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Tokamak
Beiträge: 183
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Verschiedene Zeitschaltung Über Monate?? Brauche Hilfe

Beitrag von Tokamak »

Wo ist das Problem, 4 Rules dieser einfachen Art zu schreiben? Das lässt sich doch prima warten.

Du kannst natürlich auch die Fähigkeiten von Time cron nutzen, wo man auch Tage und Monate angeben kann, also etwa

Code: Alles auswählen

rule "Bild Flur ein"
when
    //jeden Wintertag um 18:30 Tag 
    Time cron "0 30 18 24-31 10 ? *" or 
    Time cron "0 30 18 *     11-03 ? *" or
    Time cron "0 30 18 01-05 04 ? *"
then
    if (Bild_Flur.state == ON) {
        sendCommand(Steckd_OG_Flur_Bild, ON)
    }
end
Proxmox mit OH 4.2 und HABApp 24 im LXC-Container

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Verschiedene Zeitschaltung Über Monate?? Brauche Hilfe

Beitrag von udo1toni »

Also, ein vollständiger Regelsatz sähe so aus:

Code: Alles auswählen

rule "Bild Flur ein"
when
    Time cron "0 30 18 24-31 10 ?"    or // im Oktober vom 24. bis 31. um 18:30 Uhr
    Time cron "0 30 18 * 11-12,1-3 ?" or // November bis März täglich um 18:30 Uhr
    Time cron "0 30 18 1-5 4 ?"       or // im April vom 1. bis 5. um 18:30 Uhr
    Time cron "0 30 20 6-30 4 ?"      or // im April vom 6. bis 30. um 20:30 Uhr
    Time cron "0 30 20 * 5-9 ?"       or // Mai bis September täglich um 20:30 Uhr
    Time cron "0 30 20 1-23 10 ?"        // im Oktober vom 1. bis 23. um 20:30 Uhr
then
    if(Bild_Flur.state == ON) {
        Steckd_OG_Flur_Bild.sendCommand(ON)
    }
end

rule "Bild Flur aus"
when
    Time cron "0 5 1 24-31 10 ?"    or // im Oktober vom 24. bis 31. um 01:05 Uhr
    Time cron "0 5 1 * 11-12,1-3 ?" or // November bis März täglich um 01:05 Uhr
    Time cron "0 5 1 1-5 4 ?"       or // im April vom 1. bis 5. um 01:05 Uhr
    Time cron "0 5 2 6-30 4 ?"      or // im April vom 6. bis 30. um 02:05 Uhr
    Time cron "0 5 2 * 5-9 ?"       or // Mai bis September täglich um 02:05 Uhr
    Time cron "0 5 2 1-23 10 ?"        // im Oktober vom 1. bis 23. um 02:05 Uhr
then
    if(Bild_Flur.state == ON) {
        Steckd_OG_Flur_Bild.sendCommand(OFF)
    }
end 
Man kann sich natürlich ein bisschen was sparen:

Code: Alles auswählen

rule "Bild Flur ein"
when
    Time cron "0 30 18 24-31 10 ?"    or // im Oktober vom 24. bis 31. um 18:30 Uhr
    Time cron "0 30 18 * 11-12,1-3 ?" or // November bis März täglich um 18:30 Uhr
    Time cron "0 30 18 1-5 4 ?"       or // im April vom 1. bis 5. um 18:30 Uhr
    Time cron "0 30 20 * * ?"            // spätestens um 20:30 Uhr
then
    if(Bild_Flur.state == ON && Steckd_OG_Flur_Bild.state != ON) {
        Steckd_OG_Flur_Bild.sendCommand(ON)
    }
end

rule "Bild Flur aus"
when
    Time cron "0 5 1 24-31 10 ?"    or // im Oktober vom 24. bis 31. um 01:05 Uhr
    Time cron "0 5 1 * 11-12,1-3 ?" or // November bis März täglich um 01:05 Uhr
    Time cron "0 5 1 1-5 4 ?"       or // im April vom 1. bis 5. um 01:05 Uhr
    Time cron "0 5 2 * * ?"            // spätestens um 02:05 Uhr
then
    if(Bild_Flur.state == ON && Steckd_OG_Flur_Bild.state != OFF) {
        Steckd_OG_Flur_Bild.sendCommand(OFF)
    }
end 
Spätestens um 20:30 bzw. 02:05 Uhr wird der Schaltvorgang stattfinden. Man prüft nun zur entsprechenden Zeit, ob das Licht an (bzw. aus) ist und schaltet entsprechend nur, wenn das nötig ist.
Die 3. Variante:

Code: Alles auswählen

rule "Bild Flur ein"
when
    Time cron "0 30 18 * * ?"    or // täglich um 18:30 Uhr
    Time cron "0 30 20 * * ?"       // und täglich um 20:30 Uhr
then
    if(Bild_Flur.state != ON)       // Automatik inaktiv?
        return;                     // dann Abbruch
    if(now.hourOfDay == 18 && now.dayOfYear > 95 && now.dayOfYear < 297) // Sommer und 18 Uhr?
        return;                                                          // Dann Abbruch
    if(Steckd_OG_Flur_Bild.state != ON) {
        Steckd_OG_Flur_Bild.sendCommand(ON)
    }
end

rule "Bild Flur aus"
when
    Time cron "0 5 1 * * ?"       or // täglich um 01:05 Uhr
    Time cron "0 5 2 * * ?"          // und täglich um 02:05 Uhr
then
    if(Bild_Flur.state != ON)        // Automatik inaktiv?
        return;                      // Dann Abbruch
    if(now.hourOfDay == 1 && now.dayOfYear > 95 && now.dayOfYear < 297) // Sommer und 1 Uhr?
        return;                                                           // Dann Abbruch
    if(Steckd_OG_Flur_Bild.state != OFF) {
        Steckd_OG_Flur_Bild.sendCommand(OFF)
    }
end 
Die Rule triggert immer zu beiden Zeitpunkten, jedoch wird innerhalb der Rule geprüft, ob gerade der 1. Zeitschaltpunkt ausgeführt wird (hourOfDay reicht hier als Kriterium) und gleichzeitig "die falsche Jahreszeit" ist. In diesem Fall wird die Ruleverarbeitung abgebrochen (das ist eleganter, als erst den ganzen Block zu bearbeiten...)
Ich habe hier (faul) nur auf den Tag im Jahr geprüft, das funktioniert in Schaltjahren natürlich nicht korrekt. Es gibt aber auch eine Funktion, die true liefert, wenn sich ein Datum innerhalb einer Zeitspanne befindet (die wird über exakte Datumsangaben definiert). Meine Faulheit besteht in diesem Fall darin, dass ich nicht suchen wollte, wie die korrekte Funktion lautet... ich habe das an anderer Stelle schon mal verwendet, also bei Bedarf krame ich auch noch mal...
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten