Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
-
- Beiträge: 8
- Registriert: 23. Nov 2018 10:36
Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Hi,
bin schon seid 1 Jahr dran an Openhab, normales schalten, Alexa und Harmony funktionieren.
Jetzt versuche ich mich an den regeln mit der Zeitschaltuhr.
Ich muß dazu sagen bin ein wenig verzweifelt. Ich verstehe nicht wie ich Timecron dazubekommen soll, nur zwischen 24:00 und 07:00 zu funktionieren.
Meine Item sind folgende:
floor_Praezenzmelder
Led_2Etage
Led_kl_Treppe
Ich möchte zwischen 07_00 Uhr und 24:00 Uhr wie bisher das der Präsenzmelder bei Bewegung und natürlich zu wenig Licht(das mit dem Licht regelt der Präzensmelder) das Item Led_2Etage schaltet. Nach 24:00 Uhr will ich mit der rule nur noch, das Item LED_kl_Treppe schalten.
Über Tips und Hilfe wäre ich sehr dankbar. Google suche hat mich leider nicht weitergebracht.
bin schon seid 1 Jahr dran an Openhab, normales schalten, Alexa und Harmony funktionieren.
Jetzt versuche ich mich an den regeln mit der Zeitschaltuhr.
Ich muß dazu sagen bin ein wenig verzweifelt. Ich verstehe nicht wie ich Timecron dazubekommen soll, nur zwischen 24:00 und 07:00 zu funktionieren.
Meine Item sind folgende:
floor_Praezenzmelder
Led_2Etage
Led_kl_Treppe
Ich möchte zwischen 07_00 Uhr und 24:00 Uhr wie bisher das der Präsenzmelder bei Bewegung und natürlich zu wenig Licht(das mit dem Licht regelt der Präzensmelder) das Item Led_2Etage schaltet. Nach 24:00 Uhr will ich mit der rule nur noch, das Item LED_kl_Treppe schalten.
Über Tips und Hilfe wäre ich sehr dankbar. Google suche hat mich leider nicht weitergebracht.
-
- Beiträge: 8
- Registriert: 23. Nov 2018 10:36
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Hi,
habe mich an den ersten Part versucht.
rule "LED Flur Licht nur von 07:00- 01:00"
when
Item floor_Praezenzmelder received command
then
if (receivedCommand == ON)
if (now.getHourofDay >=01 || now.getHourofDay <7)
{
sendCommand(floor_Led_kl_Treppe, ON)
}
else if (receivedCommand == OFF)
{
sendCommand(floor_Led_kl_Treppe, OFF)
}
end
Bekomme aber folgende Fehlermeldung
018-11-23 12:02:44.201 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'regeln.rules'
2018-11-23 12:02:44.203 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'regeln.rules' is either empty or cannot be parsed correctly!
habe mich an den ersten Part versucht.
rule "LED Flur Licht nur von 07:00- 01:00"
when
Item floor_Praezenzmelder received command
then
if (receivedCommand == ON)
if (now.getHourofDay >=01 || now.getHourofDay <7)
{
sendCommand(floor_Led_kl_Treppe, ON)
}
else if (receivedCommand == OFF)
{
sendCommand(floor_Led_kl_Treppe, OFF)
}
end
Bekomme aber folgende Fehlermeldung
018-11-23 12:02:44.201 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'regeln.rules'
2018-11-23 12:02:44.203 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'regeln.rules' is either empty or cannot be parsed correctly!
-
- Beiträge: 217
- Registriert: 16. Dez 2017 10:49
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Hallo.
Mit meinem Halbwissen mal eine Idee.
Mach doch einen Switch (SW_Nachtschaltung, oder so)und mach 2 einfache Rules:
Und dann fragst du in deiner Rule einfach den Status deines Switch ab, ob der On oder Off ist.
ich hoffe, ich bekomme keine Schimpfe, wenn das total falsch sein sollte
Mit meinem Halbwissen mal eine Idee.
Mach doch einen Switch (SW_Nachtschaltung, oder so)und mach 2 einfache Rules:
Code: Alles auswählen
rule "Licht im Flur auf Nachtschaltung anschalten"
when
Time cron "0 59 23 1/1 * ? *"
then
SW_Nachtschaltung.sendCommand(ON)
end
rule "Licht im Flur auf Nachtschaltung ausschalten"
when
Time cron " 0 0 7 1/1 * ? *"
then
SW_Nachtschaltung.sendCommand(OFF)
end
ich hoffe, ich bekomme keine Schimpfe, wenn das total falsch sein sollte
RPI4/8GB RAM mit openhabian (bullseye) - Kernel Linux 6.1.21-v8+ - openhab 4.0.2 - Release Build - HM-CCU3 - ZWave UZB-USB Stick - Wifi-LED-Stripes - Logitech Harmony Hub - AVM Fritzbox - Enigma2-Box - Gardena HUB - Fronius-Binding - Miele@Home
- udo1toni
- Beiträge: 13982
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Der Ansatz von @Hoggle sollte so funktionieren. es gibt im englischen Forum auch eine etwas ausgefeiltere Rule, die hier einem Item verschiedene Status zuordnet, und zwar in der Form ItemTageszeit [Nacht|Vormittag|Mittag|Nachmittag|Abend], dieses Item kann man dann für verschiedene tageszeitabhängige Automatismen verwenden. Die Rule verwendet dann allerdings Items des Astro Bindings, anstatt sich an starren Uhrzeiten zu orientieren
Der Time cron Ausdruck ist noch weiter zu vereinfachen, nämlich Time cron "0 0 7 * * ?" für "morgens um 7 Uhr" und Time cron "0 0 0 * * ?" für "um 0 bzw. 24 Uhr"
Der direkte Ansatz aus der ursprünglichen Rule geht aber genauso, nur muss man die Methode korrekt schreiben und nutzen:
Die Methode heißt also getHourOfDay, nicht getHourofDay. Da die Grenze 0 bis 7 Uhr ist, reicht es, die Obergrenze zu prüfen. Ginge es um einen Zeitraum 1 Uhr bis 7 Uhr, wäre die Abfrage if(now.getHourOfDay > 0 && now.getHourOfDay < 7), also das logische UND, nicht das logische ODER. Wäre der andere Zeitraum gemeint, also von 7 Uhr bis 1 Uhr, wäre es genau anders herum, nämlich if(now.getHourOfDay < 1 || now.getHourOfDay > 6) also entweder vor 1 Uhr oder nach 7 Uhr (genauer: nach 6:59:59 Uhr)
Beim logischen Verknüpfen passieren oft Fehler, die sich leicht vermeiden lassen, z.B. if(now.getHourOfDay < 1 && now.getHourOfDay > 6) wird niemals true liefern, weil eine rationale Zahl niemals gleichzeitig kleiner als eine kleine positiver Zahl und größer als eine große positive Zahl sein kann.
Warum schaltet die Rule immer beide Leuchten aus? Weil es Denkbar ist, dass der Präsenzmelder um 6:59:55 ON meldet, und um 7:00:15 OFF (gleiches gilt sinngemäß für die andere Grenze), Du möchtest sicher nicht, dass die Leuchte dauerhaft bis zum nächsten Zeitfenster leuchtet.
Ein weiteres Problem könnte auch auftauchen, wenn es hell wird. Sendet der Präsenzmelder dann zuverlässig ein OFF-Signal?
Falls das nicht der Fall ist, müsste man hier einen anderen Ansatz suchen oder eine weitere Rule anlegen, die bei Überschreiten des Helligkeits-Grenzwertes die Leuchten abschaltet.
Der Time cron Ausdruck ist noch weiter zu vereinfachen, nämlich Time cron "0 0 7 * * ?" für "morgens um 7 Uhr" und Time cron "0 0 0 * * ?" für "um 0 bzw. 24 Uhr"
Der direkte Ansatz aus der ursprünglichen Rule geht aber genauso, nur muss man die Methode korrekt schreiben und nutzen:
Code: Alles auswählen
rule "LED Flur Licht nur von 01:00- 07:00"
when
Item floor_Praezenzmelder received command
then
if (receivedCommand == ON) { // Schaltbefehl ON
if (now.getHourOfDay < 7) // zwischen 0 und 7 Uhr
floor_Led_kl_Treppe.sendCommand(ON)
else // zwischen 7 und 0 (gemeint ist 24) Uhr
Led_2Etage.sendCommand(ON)
} else { // Schaltbefehl OFF
floor_Led_kl_Treppe.sendCommand(OFF)
Led_2Etage.sendCommand(OFF)
}
end
Beim logischen Verknüpfen passieren oft Fehler, die sich leicht vermeiden lassen, z.B. if(now.getHourOfDay < 1 && now.getHourOfDay > 6) wird niemals true liefern, weil eine rationale Zahl niemals gleichzeitig kleiner als eine kleine positiver Zahl und größer als eine große positive Zahl sein kann.
Warum schaltet die Rule immer beide Leuchten aus? Weil es Denkbar ist, dass der Präsenzmelder um 6:59:55 ON meldet, und um 7:00:15 OFF (gleiches gilt sinngemäß für die andere Grenze), Du möchtest sicher nicht, dass die Leuchte dauerhaft bis zum nächsten Zeitfenster leuchtet.
Ein weiteres Problem könnte auch auftauchen, wenn es hell wird. Sendet der Präsenzmelder dann zuverlässig ein OFF-Signal?
Falls das nicht der Fall ist, müsste man hier einen anderen Ansatz suchen oder eine weitere Rule anlegen, die bei Überschreiten des Helligkeits-Grenzwertes die Leuchten abschaltet.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 8
- Registriert: 23. Nov 2018 10:36
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Vielen Dank udo1toni:
Habe die Logik teilweise verstanden (Wahrscheinlich eher nicht:( ) und auch umgesetzt. Ich möchte ja nach 01:00 : 06:59 das Kleine Licht schalten.
rule "LED Flur Licht nur von 01:00- 07:00"
when
Item floor_Praezenzmelder received command
then
if (receivedCommand == ON) { // Schaltbefehl ON
if (now.getHourOfDay > 1 && now.getHourOfDay < 7) // zwischen 1 und 7 Uhr
floor_Led_kl_Treppe.sendCommand(ON)
else // zwischen 7 und 1 (gemeint ist 24) Uhr
floor_Led_2Etage.sendCommand(ON)
}
else { // Schaltbefehl OFF
floor_Led_kl_Treppe.sendCommand(OFF)
floor_Led_2Etage.sendCommand(OFF)
}
end
Irgendwie berücksichtigt er die Uhrzeit nicht.
Er schaltet immer beide Lichter an.
2018-11-23 15:58:13.197 [ome.event.ItemCommandEvent] - Item 'floor_Led_2Etage' received command ON
2018-11-23 15:58:13.354 [vent.ItemStateChangedEvent] - floor_Led_2Etage changed from OFF to ON
2018-11-23 15:58:13.403 [vent.ItemStateChangedEvent] - floor_Led_kl_Treppe changed from OFF to ON
Mit der Zeit Formel
(now.getHourOfDay < 7)
funktioniert es.
Habe die Logik teilweise verstanden (Wahrscheinlich eher nicht:( ) und auch umgesetzt. Ich möchte ja nach 01:00 : 06:59 das Kleine Licht schalten.
rule "LED Flur Licht nur von 01:00- 07:00"
when
Item floor_Praezenzmelder received command
then
if (receivedCommand == ON) { // Schaltbefehl ON
if (now.getHourOfDay > 1 && now.getHourOfDay < 7) // zwischen 1 und 7 Uhr
floor_Led_kl_Treppe.sendCommand(ON)
else // zwischen 7 und 1 (gemeint ist 24) Uhr
floor_Led_2Etage.sendCommand(ON)
}
else { // Schaltbefehl OFF
floor_Led_kl_Treppe.sendCommand(OFF)
floor_Led_2Etage.sendCommand(OFF)
}
end
Irgendwie berücksichtigt er die Uhrzeit nicht.
Er schaltet immer beide Lichter an.
2018-11-23 15:58:13.197 [ome.event.ItemCommandEvent] - Item 'floor_Led_2Etage' received command ON
2018-11-23 15:58:13.354 [vent.ItemStateChangedEvent] - floor_Led_2Etage changed from OFF to ON
2018-11-23 15:58:13.403 [vent.ItemStateChangedEvent] - floor_Led_kl_Treppe changed from OFF to ON
Mit der Zeit Formel
(now.getHourOfDay < 7)
funktioniert es.
- udo1toni
- Beiträge: 13982
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Bitte, wenn Du Code postest, diesen als Code markieren. now.getHourOfDay liefert die aktuelle Stunde, um 01:13 Uhr z.B. 1. Entsprechend musst Du für "zwischen 1 und 7" auf now.getHourOfDay > 0 && now.getHourOfDay < 7 testen.
Wenn die Rule nicht vorhanden ist, was passiert dann? Sprich: Kann es sein, dass Du auf Busseite eine Verknüpfung hast, so dass der Präsenzmelder die Leuchten direkt steuert?
Wenn die Rule nicht vorhanden ist, was passiert dann? Sprich: Kann es sein, dass Du auf Busseite eine Verknüpfung hast, so dass der Präsenzmelder die Leuchten direkt steuert?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 8
- Registriert: 23. Nov 2018 10:36
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Die Regel funktioniert perfekt, vielen Dank.
Habe noch eine Anpassung gemacht das auch das floor_kl_Treppe zwischen 7 und 1 zusätzlich an geht.
Es ist aber auch noch ein Lichtaster vorhanden, mit dem man das Licht manuell einschalten kann.
Habe noch eine Anpassung gemacht das auch das floor_kl_Treppe zwischen 7 und 1 zusätzlich an geht.
Code: Alles auswählen
rule "LED Flur Licht nur von 01:00- 07:00"
when
Item floor_Praezenzmelder received command
then
if (receivedCommand == ON) { // Schaltbefehl ON
if (now.getHourOfDay > 0 && now.getHourOfDay < 7) // zwischen 1 und 7 Uhr
floor_Led_kl_Treppe.sendCommand(ON)
else // zwischen 7 und 1 (gemeint ist 24) Uhr
floor_Led_2Etage.sendCommand(ON)
floor_Led_kl_Treppe.sendCommand(ON)
}
else { // Schaltbefehl OFF
floor_Led_kl_Treppe.sendCommand(OFF)
floor_Led_2Etage.sendCommand(OFF)
}
end
Habe Zur Zeit dem Präsenzmelder ein neue GA gegeben, falls Openhab ausfällt bleibt es dunkel. Ich müßte eigentlich eine Logik einbauen und abfragen ob Openhab erreichbar ist. Ehrlich gesagt weiß ich nicht, wie ich das anstellen soll.Wenn die Rule nicht vorhanden ist, was passiert dann? Sprich: Kann es sein, dass Du auf Busseite eine Verknüpfung hast, so dass der Präsenzmelder die Leuchten direkt steuert?
Es ist aber auch noch ein Lichtaster vorhanden, mit dem man das Licht manuell einschalten kann.
-
- Beiträge: 8
- Registriert: 23. Nov 2018 10:36
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Hi,
es ist etwas Zeit vergangen und meine Kinder fangen an zu meckern.
Ich müsste das Licht am besten um 06:30 einschalten.
Wäre der Code so richtig?
es ist etwas Zeit vergangen und meine Kinder fangen an zu meckern.
Ich müsste das Licht am besten um 06:30 einschalten.
Wäre der Code so richtig?
Code: Alles auswählen
if (now.getHourOfDay > 0 && now.getHourOfDay < 7 && now.getMinuteOfHour <31
- udo1toni
- Beiträge: 13982
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Nein, das ist nicht richtig.
Korrekt ist für den Zeitraum 1 Uhr bis 6 Uhr 30:
Jede Stunde hat als Minute 0 bis 59, das Licht ginge also immer nur bis 30 an, sonst nicht.
Korrekt ist für den Zeitraum 1 Uhr bis 6 Uhr 30:
Code: Alles auswählen
if(now.getHourOfDay > 0 && now.getMinuteOfDay < 391) // 391 = 6 * 60 + 31
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 8
- Registriert: 23. Nov 2018 10:36
Re: Regel Flurpräsenzmelder soll Licht_1 nicht zwichen 24:00 und 07:00 schalten, nur Licht_2 schalten.
Vielen dank, wäre nie darauf gekommen.