Parallele Regeln unmöglich?!

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
christian1312
Beiträge: 9
Registriert: 15. Jan 2020 19:15
Answers: 0

Parallele Regeln unmöglich?!

Beitrag von christian1312 »

Moin zusammen,

ich habe mir für den jeden Raum eine Datei "raumname.rules" angelegt, indem ich die Regeln definiert habe.

Nun habe ich in der Datei wohnzimmer.rules folgendes stehen:

Code: Alles auswählen

// Licht AN - Beleuchtung Wohnzimmer
rule "Licht An - Sonnenuntergang + 30 Minuten"
when
    Channel 'astro:sun:local:set#event' triggered START
then
    createTimer(now.plusMinutes(30))
    [
        sendCommand(eg_wohnzimmer_licht_fass, ON)
        sendCommand(eg_wohnzimmer_licht_fenster, ON)
    ]
end

// Licht AUS - Beleuchtung Wohnzimmer
rule "Licht Aus - 22.30 Uhr"
when
    Time cron "0 30 22 1/1 * ? *"
then
    sendCommand(eg_wohnzimmer_licht_fass, OFF)
    sendCommand(eg_wohnzimmer_licht_fenster, OFF)
end
In der Datei flur.rules steht etwas ähnliches, nur halt dass die Lampe im Flur geschaltet wird:

Code: Alles auswählen

// Licht AN - Dekolampe Flur
rule "Licht An - Sonnenuntergang + 30 Minuten"
when
    Channel 'astro:sun:local:set#event' triggered START
then
    createTimer(now.plusMinutes(30))
    [
        sendCommand(og_flur_licht_deko, ON)
    ]
end

// Licht AUS - Dekolampe Flur
rule "Licht Aus - 22.30 Uhr"
when
    Time cron "0 30 22 1/1 * ? *"
then
    sendCommand(og_flur_licht_deko, OFF)
end
Das Problem ist nur, dass heute nur die Regel "flur.rules" aktiviert wurde und die beiden Lampen im Wohnzimmer aus geblieben sind.

Im Logfile war auch nichts zu sehen von der wohnzimmer.rules:

Code: Alles auswählen

2020-01-30 17:35:27.565 [vent.ItemStateChangedEvent] - astro_sun_local_position_shadeLength changed from -15.86 to -13.36
2020-01-30 17:36:00.733 [ome.event.ItemCommandEvent] - Item 'og_flur_licht_deko' received command ON
2020-01-30 17:36:00.739 [nt.ItemStatePredictedEvent] - og_flur_licht_deko predicted to become ON
Nun meine Frage. Stehen die sich gegenseitig im Weg oder war es heute nur ein dummer Zufall, dass es nicht ging?!

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

Re: Parallele Regeln unmöglich?!

Beitrag von udo1toni »

Warum definierst Du mehrere Rules mit identischem Trigger?
openHAB stellt in der aktuellen Version (also 2.5 stable) 10 +2 Threads für Rules zur Verfügung. Dabei sind die 2 Threads für den Scheduler reserviert, das heißt, Ereignisse, die zeitlich bestimmt sind - ob nun über Time cron, einen Timer, caldav Termine oder auch die Astro Zeitsteuerung, die ziemlich sicher ebenfalls den Scheduler nutzt.
Natürlich legt man Rules zunächst nach Funktion an. Wenn man aber Rules mit identischem Trigger hat, sollte man dann Funktionen gemeinsam in eine Rule packen.

Ob eine Aufteilung der Rules in Dateien nach Räumen geordnet so sinnvoll ist, möchte ich jetzt nicht festlegen, bei mir zumindest hätte ich sofort eine Rule, welche exakt gegenteilig angelegt ist, sie ist nämlich für sämtliche Raumtemperaturregler des Hauses zuständig und setzt den Status der betreffenden Items auf den korrekten Wert, falls jemand am RTR selbst die Betriebsart ändert. Der Witz ist, dass es exakt eine Rule ist. Wenn ich diese Rule raumbezogen definieren würde (und das hatte ich mal so, bevor ich verstanden habe, wie openHAB tickt), bräuchte ich die Rule neun mal, jeweils fast identisch (bis auf die Items). Die Rule wäre auch nicht wesentlich kürzer als die, die ich jetzt im Einsatz habe, der Overhead für Gruppenitems lohnt sogar schon bei zwei betroffenen Geräten.

Du nutzt in Deiner Rule den Sonnenuntergang, verschiebst dann die Aktion aber mittels Timer um eine halbe Stunde. Kann man so machen, aber darf ich fragen, warum Du nicht die Offset Funktion des Astro Bindings nutzt?
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten