Events triggern mehrere Rules

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
FrankH1
Beiträge: 28
Registriert: 22. Sep 2020 17:03

Events triggern mehrere Rules

Beitrag von FrankH1 »

Hallo,
ich bin von OpenHAB 2.5 auf einem Raspi 3 zu OpenHAB 3.3 auf einem Raspi 4 migriert. Beim Aufräumen und Optimieren fiel mir auf dass einige Events von Sensoren mehrere Rules triggern. Ich habe Bewegungsmelder in verschiedenen Bereichen, welche bei Auslösen das entsprechende Licht anschalten. Gleichzeitig wird bei Abwesenheit ein Alarm ausgelöst. Daher gibt es für jede Gruppe Sensoren eine rule, welche die Beleuchtung regelt und eine rule für alle Sensoren, welche die Alarmbehandlung macht.
Mir scheint das eine suboptimale Lösung zu sein.
Ich denke die Licht-rules könnten bei Auslösen in Abwesenheit ein item (Alarmierung) updaten - und das update des items triggert dann die Alarm-rule. Also z.B. so:

Code: Alles auswählen

rule "Beleuchtung Korridor EG an"                       
when
	Member of gMoveKorrEG changed  to ON
then
        Prozedur um Beleuchtung zu schalten
        if (gAnwesenheit.state == OFF) Alarmierung.postUpdate (triggeringItem.name.toString)
end         
         
rule "Einbruch Bewegung"			
when
	Item Alarmierung received update or 
	Member of gFenster changed to OPEN 
then
	Alarmprozeduren
end
Der Ansatz sollte eigentlich ein paralleles Triggern von rules verhindern.
Meine Fragen:
Ist das überhaupt notwendig?
Gibt es eine elegantere Möglichkeit?
Gruß und Danke Frank
OH 4.1.1 + Deconz auf Raspi 4B mit Conbee-II Stick,
Shellys, 8266 basierende Anwendungen (Tasmota),
Zigbee Sensoren und Lampen

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

Re: Events triggern mehrere Rules

Beitrag von udo1toni »

Das sollte eigentlich nicht nötig sein. Zumal Du ja durch das zusätzliche Item auch zusätzlichen Verwaltungsaufwand hast, auch wenn sich das sicher nicht messbar bemerkbar macht.

Unter openHAB < 3 gab es gemeinsam für alle Rules (konfigurierbar, aber Vorgabe) fünf plus zwei Threads für Rules. Dabei waren die zwei Threads für Rules, die über den Scheduler liefen, also alles, was per Time cron triggert oder createTimer verwendet (der Codeblock innerhalb createTimer).
Unter openHAB3 aufwärts gibt es für jede Rule einen festgelegten Thread.

Variante 1: Vorteil : Eine Rule kann bis zu fünf mal parallel ausgeführt werden (das ist im Zusammenhang mit Member of interessant) Nachteil: Wenn eine Rule Amok läuft (aufgrund eines Programmierfehlers...) kann sie die gesamte Rule Engine blockieren, und vielleicht bekommt man erst mal gar nichts davon mit...
Variante 2: Vorteil: Der potentielle Amoklauf stellt keine Gefahr mehr dar. Dafür kann eine Rule aber nie parallelisiert laufen.
Allerdings gibt es auch nur sehr wenige Situationen, wo das überhaupt eine Rolle spielt, und der Programmierer muss schon genau wissen, was er tut, um diese Parallelisierung tatsächlich nutzen zu können. Ob man daraus tatsächlich einen Vorteil ziehen kann, bleibt aber fraglich.

Im täglichen Betrieb wirst Du keinen Unterschied feststellen, nur, dass Rules nicht mehr ausbleiben, weil keine Threads zur Verfügung stehen. Es könnte theoretisch zu einer maximierten Systemlast kommen (weil mehr Threads), in der Praxis wird es eher zu weniger Last führen, weil keine Threads im Tiefschlaf gehalten werden müssen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

FrankH1
Beiträge: 28
Registriert: 22. Sep 2020 17:03

Re: Events triggern mehrere Rules

Beitrag von FrankH1 »

ok, dann lass ich die Finger davon (don't touch running systems :-) )
Danke Dir!
OH 4.1.1 + Deconz auf Raspi 4B mit Conbee-II Stick,
Shellys, 8266 basierende Anwendungen (Tasmota),
Zigbee Sensoren und Lampen

Antworten