Rauchmelder bei Alarm identifizieren

Begonnen von tilly001, 23 März 2024, 18:15:38

Vorheriges Thema - Nächstes Thema

Beta-User

Hmmm, ist schierig, da eine direkte Antwort (in Code) drauf zu geben.

Zum einen würde ich "Mehrzeiler" immer in myUtils-Code verpacken, und zum anderen ist das mit dem "Status-Dummy" eine Lösung, die ich eher vermeiden würde, weil da Abhängigkeitskaskaden entstehen können, die man nicht sauber auflösen kann, wenn man nicht genau weiß, wie die Event-Abarbeitung in fhem.pl abläuft...

Vermutlich würde ich das eher mit einem monitoring-Device lösen (und damit den Status aller Rauchmelder konsolidieren) und die Message für's Alarmieren (ausgehend von zuverlässig auslösenden Rauchmeldern ohne viele Fehlalarme) direkt über den "msg"-Befehl versenden (siehe msgConfig). Ob das dann direkt über das monitoring-Device ginge oder über ein separates notify (hörend auf alle Rauchmelder) habe ich noch nicht überlegt, vermutlich letzteres; vernetzte Rauchmelder stehen noch auf meiner "todo". Ein Beispiel für notify+myutils für (alle) Fenstersensoren habe ich irgendwo gepostet, aber das macht dann halt auch was anderes... Die Rauchmelder sind zwar jetzt da, aber deconz kennt die (noch?) nicht, so dass ich grade wieder überlege, auf zigbee2mqtt zu wechseln (was aber andere Umfeldarbeiten bedingen würde).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Per

Der Vorteil von DOIF ist ja gerade, Device (Status) und Code an einer Stelle zu haben. Bzw bei Perl DOIF sich das Auslagern auf myutil zu sparen. In myutil packe ich (!) nur Code, den ich an verschiedenen Stellen brauche, und das ist seeehr wenig.

tilly001

Zitat von: Per am 27 März 2024, 06:30:15Der Vorteil von DOIF ist ja gerade, Device (Status) und Code an einer Stelle zu haben. Bzw bei Perl DOIF sich das Auslagern auf myutil zu sparen. In myutil packe ich (!) nur Code, den ich an verschiedenen Stellen brauche, und das ist seeehr wenig.

Die Frage wäre, wie bekomme ich die Prüfung in das DOIF, sodass das DOELSEIF nur auslöst wenn alle Rauchmelder "false" melden.

Per

Da kannst du aggregieren. Entweder du zählst die mit Status "false" gg die Anzahl oder "true" und 0.

tilly001

So jetzt läuft es ....


(["^Rauchmelder_.*:smoke:.true$"]) (set teleBot message ALARM!! $DEVICE ausgelöst!!!) (set rauchalarm on) DOELSEIF ([#"^Rauchmelder":smoke:"true"] == 0) (set rauchalarm off)

Per

Wenn du dein DOIF "rauchalarm" nennst und die beiden Status "on" und "off" sparst du eventuell ein Device, wenn es ein Dummy ist