Auf Sensoren und Melder reagieren

Ich habe in meiner Anlage diverse Sensoren wie z.B. Rauchmelder, Wassermelder, Regensensor, Alarmanlage etc., auf die ich je nach Sensor unterschiedlich reagieren möchte. So sollen bei Anschlagen der Rauchmelder sofort alle Meldewege (Email, Sirene, Push, Licht etc) bedient werden und eine Durchsage bzgl. des auslösenden Rauchmelders erfolgen. Bei Auslösen des Regensensors soll nur eine Durchsage erfolgen, und auch nur dann, wenn noch ein Dachfenster offen ist usw. Bei manchen Situationen (z,B. Kühlschranktemperatur zu hoch) soll nur eine Pushnachricht gesendet werden und stündlich wiederholt werden. Wenn es einen Wasseralarm gibt, soll die Waschmaschine ausgeschaltet werden und alle 2 min eine Warnung auf einer Sirene ausgelöst werden.
Kurzum: ich habe diverse unterschiedliche Sensoren, unterschiedliche Gefahrensituationen, unterschiedliche Meldewege etc.

Nun weiß ich generell, ich sowas per Skript und zahlreichen if-then-else Anweisungen programmieren kann. Dies würde dann aber zu einem ziemlichen Hardcoden der Logik und Sensoren führen. Besser wäre es vielleicht, wenn man an jeden Sensor eine Liste von Reaktionen (Stringvariable) „anheften“ könnte, die das Alarmhandler-Script sich dann greift, um die richtige Maßnahme durchzuführen. Wenn man dann einen neuen Sensortyp einführt, würde dieser auch eine Liste von Reaktionen bekommen, und das Alarmhandler-Script müsste nicht angepasst werden.

Mich würde interessieren, wie Ihr dies gelöst habt. Vielleicht habt Ihr ja einen Tipp, wie ich das ganze strukturiert angehen kann.

Gruß
Peter

Hallo,

dazu gibt es sicherlich viele Lösungsansätze.

Ich habe zu jedem Aktor/Sensor ein Aktions-Skript.
Wenn nun z.B. die Wohnungstür geöffnet wird (Ereignis Statusänderung) wird geprüft ob jemand zuhause ist oder die Alarmanlage scharf ist, ob es dunkel ist usw…
Je nach Ergebnis wird dann eine Aktion angestossen (Einbruch-Alarm, Dielen-Licht einschalten, usw.)
Für die verschiedenen Meldeanzeigen (Durchsage, push, Protokoll usw.) habe ich ein Include, in dem ich diese Meldeanzeigen als Funktionen hinterlegt habe.

Gruß, Peter

Hi Peter,
vielen Dank. Ich werde mir das noch weiter überlegen.
Gruß
Peter