Neues Modul für Alarmanlage

Begonnen von Prof. Dr. Peter Henning, 08 September 2014, 20:43:06

Vorheriges Thema - Nächstes Thema

Stril

#675
Hallo!

Ich hätte eine ganz grundsätzliche Frage:
Gibt es die Möglichkeit, einer "Nachalarmierung" - z.B. per Mail?

Hintergrund:
Wenn ich das Modul "scharf" schalte und ich sehe eine Auslösung von z.B. einem Rauchmelder, rufe ich die Nachbarn an. Bei mehreren Rauchmeldern die Feuerwehr. Ähnliches ist bei der Einbruchsmeldung.

Ich kann den Alarm nicht automatisch "canceln", weil dann die Sirene im Haus auch aus geht.

Gibt es eine Option: "Aktor bei jeder Auslösung"?
oder: "Neuauslösung nach X Sekunden"?

Sonst wäre ja nach einem Fehlalarm keine Alarmfunktion gegeben, bis die Anlage resettet wird.

Mein aktueller Ansatz/Workaround:
Per Notify schnell einen Cancel, aber bei den Sirenen keinen Unset-Befehl eintragen. Dafür gibt es ein separates Notify.

Danke für das tolle Modul und Gruß
Phil

Prof. Dr. Peter Henning

Die Verzögerung ist doch für jeden Aktor einstellbar. Ich löse also eine Sirene bei einem Einbruch auch erst nach 30 Sekunden aus - und lasse vorher eine Durchsage laufen (siehe Anhang   ;D). Während dieser Zeit kann man einen Fehlalarm korrigieren.

LG

pah

Stril

Hallo!

Das habe ich auch so Dank deines Modus umsetzen können.
Ich meinte eher einen zweiten Sensor, der auslöst. Wenn es bereits ein "Raise" gab, löst ein zweiter Sensor ja nichts aus bis zu einem Cancel oder einem neuen Schärfen des Levels.

Gibt es eine Option, einen Aktor auslösen bei einem zweiten Alarm im gleichen Level?

Ich hoffe, mein kryptischer Satz ergibt irgendwie Sinn

Prof. Dr. Peter Henning

Nein, gibt es nicht. Höchstens einen Alarm auf höherem Level.

LG

pah

Stril

Hallo!

Das ist schade. Falls jemand anders noch diese Anforderung hat:

Ich habe "am Modul vorbei" die Mailalarme per DOIF umgesetzt. Dadurch ist es so:

Alarm mit Sensor 1
--> Raise --> Alarmkette läuft
-> Voralarm, nach 30 s Vollalarm

Ein DOOF triggert alle Sensoren, WENN die Anlage scharf ist und löst bei jedem Event eine Mail aus.

Wenn ich nicht zuhause bin, kann ich also trotzdem sehen, ob ein Bewegungsmelder ausgelöst wurde, oder mehrere im ganzen Haus, was ein Indiz für einen echten Alarm sein könnte. Gleiches gilt für die Rauchmelder.

Viele Grüße

nexulm

Hallo,

wer kann mir einen Gedankenanstoss geben, wie ich den "HomeStatus" meiner TabletUI-Anzeige für "Night" getriggert bekomme?
Derzeit habe ich ein Alarmlevel4 armed funktionsfähig, welches nur im Zeitfenster level4start 0:45 und level4end 06:30 aktiv ist. In dieser Zeit werden auch die entsprechenden Sensoren ausgewertet und Aktoren bei Alarmierung aktiviert.
Irgendwie bekomme ich es aber nicht hin, ein "set HomeStatus 2" an der richtigen Stelle zu platzieren.

Eine einfache Lösung, die mir nur einfällt wäre die Zeitangaben (level4start, level4end) wieder zu entfernen und mit AT-Befehl den Alarmlevl4 zur gewählten Start-/Endzeit auf armed bzw. disarmed sowie den HomeStatus, ... entsprechend zu setzen.

Eine weitere Frage habe ich zum Partymodus aus der WiKi-Beschreibung!
Mir ist nicht ganz klar wie ich einen Alarmlevel der "permanent" armed ist für eine "Party" für 24h deaktivieren. Entweder ist dies im WiKi nicht eindeutig beschrieben oder ich benötige eine(n) ergänzende(n) Erklärung/Hinweis!?!

Danke, Mike
BeagleBone Black (Debian), FHEM SVN
HmLAN, 12x HM-LC-Bl1PBU-FM, 7xCC-RT-DN, >10x HM-SEC-SC-2, 3x HM-LC-SW1-FM, 1x HM-SEC-SD, 2x MK1010W, DM800, Yamaha RX-V771

jmike

Zitat von: Stril am 03 November 2016, 21:47:35
Gibt es eine Option, einen Aktor auslösen bei einem zweiten Alarm im gleichen Level?

Ich habe ein INFO level, dessen Aktion auch nur bei Abwesenheit ausgeführt wird.
Damit das Alarm Modul das Event immer wieder neu verschickt steht in der "Set Action" ein "set AAA canceled 5" dabei:

Um genau zu sein sieht es so aus:
{pushIfAbsent(ReadingsVal('AAA','short',''))}; set AAA canceled 5

Das Level ist immer scharf und bleibt es auch.

Grml

#682
Hallo zusammen,
nachdem ich anfangs einige Verständnisschwierigkeiten hatte (bin gedanklich mal falsch abgebogen...), läuft die Alarmanlage nun sehr gut, ich bin absolut begeistert! Vielen Dank an pah für dieses tolle Modul!

Ich habe momentan das Problem, dass ich bei meinen Wait/Arm/Disarm/Cancel-Actions zwar von meinem TelegramBot die gewünschten Nachrichten an mich als "Einzelperson" bekomme, einen existierenden Gruppenchat (der anderweitig auch in FHEM genutzt und per "at" beschickt wird) aber nicht als Empfänger hinbekomme.

Wenn ich in den entsprechenden "Action"-Zeilen
set MeinTelegramBot message @#MeineGruppe Alarmanlage scharf
eintrage, Set Alarms drücke und dann das Modul neu aufrufe, ist alles nach dem @ abgeschnitten.
Wenn ich über die Kommandozeile das "set [...]" abschieße funktioniert es. Die Syntax scheint mir also richtig.

Ist es möglich über das Modul Alarmanlage auch Telegram-Gruppen zu beschicken? Muss ich da evtl. etwas escapen? Wenn ja, wie?


Nachtrag: Wenn ich das im Device "Alarmanlage" direkt in den Attributen ändere geht es natürlich und wird dann auf der Konfigurationsseite "Alarms" korrekt angezeigt. Wenn ich es aber dort ändere und per "Set Alarms" einspiele passiert das Obige.

Prof. Dr. Peter Henning

#683
Das war der Grund, einige Überarbeitungen vorzunehmen. Eine neue Version von 95_Alarm.pm und von alarm.js sind hier angehängt. Bitte testen, wenn es keine Probleme gibt, checke ich sie morgen ein.

Folgende Änderungen

1. Das Problem mit dem Hashtag in den Telegram-Aktionen aus dem letzten Post ist behoben - war auf JavaScript-Seite, also unbedingt die alarm.js ersetzen
2. Ersetzungen durch vordefinierte Strings ($EVENT, $SHORT...) sind jetzt auch in Aktionen möglich
3. Der gegenwärtige Zustand (armed/disarmed) der einzelnen Level wird jetzt auch in den Readings gespeichert, so dass er einen Systemneustart auch ohne explizite Sicherung der Konfiguration überlebt

Da sich die möglichen Werte der Readings geändert haben, muss man nach dem Laden des Moduls ggf. einmalig alle Alarmlevel auf "disarmed" oder "armed" stellen.

LG

pah

Edit:: Neue Version eingecheckt.

dad401

Ich habe nur eine kurze Verständnisfrage bezgl. der Aktoren.
Am Beispiel des Wiki gibt es dort einen Aktor der heisst "Mail.alarm". Definiert man hierfür überlicherweise einen Dummy (set Mail.alarm dummy) und gibt ihm das Alarmdevice-Attribut (Aktor), oder wird der Aktor anders definiert? Welchen Befehl ich diesem "Dummy-Aktor" mit dem Alarmmodul mitgebe, ist ja dann egal.
Soweit ich weiss gibt es ja kein Mail-Device in diesem Sinne.

Oder habe ich hier etwas falsch verstanden oder konnte es in den 46 Seiten nicht finden?
--
aktuelles FHEM auf einem RPI3 mit
HM-MOD-RPI-PCB, CUL868, nanoCUL (868MHz), Signalduino (433MHz), SignalESP (433 MHz) zur Nutzung folgender Systeme:
FS20/Homematic/IT-Steckdosen/OW/Sonstiges

Grml

Zitat von: Prof. Dr. Peter Henning am 19 November 2016, 18:11:57
Das war der Grund, einige Überarbeitungen vorzunehmen. Eine neue Version von 95_Alarm.pm und von alarm.js sind hier angehängt. Bitte testen, wenn es keine Probleme gibt, checke ich sie morgen ein.

Folgende Änderungen

1. Das Problem mit dem Hashtag in den Telegram-Aktionen aus dem letzten Post ist behoben - war auf JavaScript-Seite, also unbedingt die alarm.js ersetzen

Ich habe gerade die alarm.js ersetzt und auch FHEM einmal durchgestartet, habe aber weiterhin das Problem, dass ab dem Hashtag abgeschnitten wird.
Die alarm.js muss doch lediglich nach fhem/www/pgm2 kopiert werden, nicht?

Prof. Dr. Peter Henning

#686
@dad401: Korrekt, das ist die Vorgehensweise. Noch ein Tipp: Man kann als Aktion beim Auslösen des Aktors ja beliebige Befehle eintragen. Bei solchen Dummy-Devices kann man also entweder real existierende Devices schalten. Oder ein Perl-Unterprogramm aufrufen. Oder einfach den Dummy auf einen bestimmten Wert setzen. Das löst einen Event aus, den man z.B. mit einem notify abfangen kann (eher umständlich...), oder der auf einer entfernten FHEM-Instanz mit FHEM2FHEM registriert wird. Aus Sicherheitsgründen betreibe ich meinen TelegramBot auf einem anderen Raspberry Pi - der wird auf diese Weise getriggert.

@Grml: Sie muss aber auch korrekt geladen werden, die alte Version steht wahrscheinlich noch im Cache.

LG

pah

dad401

Danke für die Hinweise - ich glaube ich habe das Wiki nicht bis zum Ende gelesen, da ich dachte, der relevante Teil wäre schon zu Ende. Dort steht es dann auch mit den dummys.

Ich habe mir jetzt das ganze eingerichtet und habe noch folgendes Problem. Ich würde gern einen Alarm auslösen, wenn z.B. das Fenster geöffnet wird.

Nutze ich hier als Sensor den Fensterkontakt (RegEx prüft auf Status "open") funktioniert das ganze soweit. Wenn aber das Fenster bereits vor dem Scharfschalten der AA offen war (und bleibt), dann wird der Alarm immer ausgelöst (raised), wenn der HM-Fensterkontakt seinen Status meldet. Der Alarm geht also auch an, wenn nur Zeit/Datum des Status "open" sich ändern. Man sieht dies gut, wenn man den Alarm canceld und bei der nächsten Info vom Sensor (ca. jede Stunde), geht es wieder los. Ist dies so korrekt? Müsste nicht eigentlich nur eine Änderung (Erstmaliger "open" Status), den Alarm auslösen?
--
aktuelles FHEM auf einem RPI3 mit
HM-MOD-RPI-PCB, CUL868, nanoCUL (868MHz), Signalduino (433MHz), SignalESP (433 MHz) zur Nutzung folgender Systeme:
FS20/Homematic/IT-Steckdosen/OW/Sonstiges

Prof. Dr. Peter Henning

Das stimmt so nicht, denn die Statusmeldung ist kein Event in dem Sinn.

In das RegExp-Feld muss z.B.<devicename>:Open - auf diese Weise betreibe ich immerhin 10 Fenstersensoren als Alarmauslöser.

LG

pah

dad401

#689
Mhh - also auch wenn die Fenster bereits offen waren und bleiben (im Alarmstatus), gibt es kein Alarm?

Mein Fensterkontakt (Device) lautet z.B. "Fenster_SZ"
RegEx also: Fenster_SZ:open

Der "state" in den readings des Kontaktes ist z.B.
state open 2016-11-23 11:07:03

nach ca. 1h gibt es ein Update vom Kontakt (hier mal geraten):
state open 2016-11-23 12:02:03

Und darauf scheint das Alarmmodul zu reagieren (anscheinend wegen dem neuen Datum/Zeitstempel).

Derzeit gehe ich den Umweg über ein DOIF, welches auch  Fenster_SZ:open prüft, aber eben nur eine Aktion auslöst (ändern eines Dummy-Status, welcher im Alarmmodul als Sensor eingetragen ist), wenn sich wirklich etwas ändert (closed => open). Ich meine das ist ein Unterschied zw. dem DOIF und dem NOTIFY (was das Modul nutzt). Z.B. reagiert notify immer wenn man einen Schalter einschaltet ("on") - egal ob er vorher schon an war oder nicht - soweit ich verstanden habe.
Das DOIF:
([Fenster_SZ] eq "open") (set SZF.alarm on) DOELSE (set SZF.alarm off)

Ich werde es dennoch nochmal testen mit dem RegEx "Fenster_SZ:open"

Marcus
--
aktuelles FHEM auf einem RPI3 mit
HM-MOD-RPI-PCB, CUL868, nanoCUL (868MHz), Signalduino (433MHz), SignalESP (433 MHz) zur Nutzung folgender Systeme:
FS20/Homematic/IT-Steckdosen/OW/Sonstiges