Neues Modul für Alarmanlage

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

Vorheriges Thema - Nächstes Thema

TimToni

Ich habe eine andere Lösung gefunden, die mir jedoch nicht gefällt.
Es geht nur um eine Statusanzeige des Alarms auf dem TabletUI

+*00:05:00 { my$t0 = AttrVal("Alarmi","level0xec",""); if ($t0 eq "disarmed") { fhem ("set UG_GT_status_dummy off")} else { fhem ("set UG_GT_status_dummy on")} }

Funktioniert so.

Was ich nicht lösen konnte, dass das notify auf den Alarmstatus reagiert.
Funktioniert nur als Trigger
Trigger Alarmi.* { if (AttrVal("Alarmi","level0xec","") eq "disarmed") { fhem("set UG_GT_switch off")} }
was muss ich ändern damit das notify anspringt ?

Gruss Tom

noom0815

Hallo,

ich versuche gerade das Modul zum Laufen zu bringen und scheitere leider komplett.
Auch nach stundenlanger Recherche komme ich nicht weiter, obwohl ich eine vermeintlich einfache Funktion darstellen möchte:
- Aktivierung der Alarm-Funktion über Switch (Tradfri-Status) z.B. bei Verlassen des Hauses
- wenn Alarm aktiv, dann Überwachung verschiedener Fenster/Tür-Sensoren (Xiaomi)
- Cancel-Option des Alarms über Switch (Tradfri-Status) z.B. bei Rückkehr innerhalb von 30 sek
- bei erkannter Alarm-Situation "Sirene" über Sonos auslösen
- Deaktivierung der Alarm-Funktion über Switch (Tradfri-Status)

Es wird in den posts immer wieder von schönen Beispielen gesprochen - ausser dem Wiki-Eintrag, den ich offenbar nicht verstehe, finde ich nichts...kann bitte jemand ein Beispiel verlinken?
Im Wiki sind auch die Befehle auf Grund der kurzen Felder oftmals abgeschnitten - hilft mir leider auch nicht.
Von Perl habe ich keine Ahnung - müsste ich aber vermutlich auch nicht haben, wenn ich mich auf die wenigen beschriebenen Situationen beschränken würde.

Wenn mir irgendjemand ein einfaches Beispiel erläutern könnte, wäre ich sehr dankbar...

Grüße,
Ian

TimToni

Zitat von: TimToni am 05 Oktober 2019, 14:39:17
Ich habe eine andere Lösung gefunden, die mir jedoch nicht gefällt.
Es geht nur um eine Statusanzeige des Alarms auf dem TabletUI

+*00:05:00 { my$t0 = AttrVal("Alarmi","level0xec",""); if ($t0 eq "disarmed") { fhem ("set UG_GT_status_dummy off")} else { fhem ("set UG_GT_status_dummy on")} }

Funktioniert so.

Was ich nicht lösen konnte, dass das notify auf den Alarmstatus reagiert.
Funktioniert nur als Trigger
Trigger Alarmi.* { if (AttrVal("Alarmi","level0xec","") eq "disarmed") { fhem("set UG_GT_switch off")} }
was muss ich ändern damit das notify anspringt ?

Gruss Tom

UPDATE - gelöst -

Ist dieser Forenteil geschlossen, oder war die Frage zu einfach oder hätte sie in das Anfängerforum gehört ...?

Die Regexp für das notify muss lauten
global:ATTR.Alarmi.level0xec.* {}

Tom  8)

TimToni

Zitat von: noom0815 am 03 November 2019, 01:28:43
Hallo,

ich versuche gerade das Modul zum Laufen zu bringen und scheitere leider komplett.
Auch nach stundenlanger Recherche komme ich nicht weiter, obwohl ich eine vermeintlich einfache Funktion darstellen möchte:
- Aktivierung der Alarm-Funktion über Switch (Tradfri-Status) z.B. bei Verlassen des Hauses
- wenn Alarm aktiv, dann Überwachung verschiedener Fenster/Tür-Sensoren (Xiaomi)
- Cancel-Option des Alarms über Switch (Tradfri-Status) z.B. bei Rückkehr innerhalb von 30 sek
- bei erkannter Alarm-Situation "Sirene" über Sonos auslösen
- Deaktivierung der Alarm-Funktion über Switch (Tradfri-Status)

Es wird in den posts immer wieder von schönen Beispielen gesprochen - ausser dem Wiki-Eintrag, den ich offenbar nicht verstehe, finde ich nichts...kann bitte jemand ein Beispiel verlinken?
Im Wiki sind auch die Befehle auf Grund der kurzen Felder oftmals abgeschnitten - hilft mir leider auch nicht.
Von Perl habe ich keine Ahnung - müsste ich aber vermutlich auch nicht haben, wenn ich mich auf die wenigen beschriebenen Situationen beschränken würde.

Wenn mir irgendjemand ein einfaches Beispiel erläutern könnte, wäre ich sehr dankbar...

Grüße,
Ian

Servus Ian,

ich bin kein Profi, jedoch ist die Fragestellung viel zu allgemein.
Da musst Du genauer beschreiben was nicht funktioniert.
Dann auch Fehler im Log beachten. Z.B. verbose auf 5 setzen um das Problem zu verstehen und einzugrenzen.
Was gerne übersehen wird beim Alarmmodul => das Reading lockstate = unlocked

Gruss Tom

noom0815

Hallo TimToni,

das einzige, was funktioniert, sind die Ansagen unter Wait/Arm/Disarm/Cancel, sobald man irgendwo einen Haken bei Arm setzt bzw. wieder wegnimmt.

- Die condition ist hierbei per default "1" - diese müsste ich nach meinem Verständnis z.B. durch eine Schalterbedingung ["Aktivierung der Alarm-Funktion über Switch (Tradfri-Status)"] ersetzen, oder nicht? Ist im Wiki nicht beschrieben. Falls ja: wie lautet ein entsprechender beispielhafter Perl-Befehl für einen Schalter-Status?

- Oder muss ein dauerhaft aktivierter Alarm durch einen Sensor erst deaktiviert werden? Wie lautet hierfür ein einfacher Perl-Befehl, der nur einen Schaltzustand abfragt? [Punkt "Deaktivierung der Alarm-Funktion über Switch (Tradfri-Status)"]

- eine spezifische Sensor-Meldung soll im ARMED Fall einen Alarm RAISEN - z.B. ein Fenster Sensor wechselt nach offen. Dazu müsste der Sensor beim entsprechenden Alarm-Level ein Haken und eine RegExp bekommen - funktioniert bei mir auch nicht [Punkt "wenn Alarm aktiv, dann Überwachung verschiedener Fenster/Tür-Sensoren (Xiaomi)]; wie würde ein entsprechender einfacher Perl-Befehl aussehen?

- ALARM soll erst nach Delayzeit starten, um noch rechtzeitig deaktivieren zu können. Muss vermutlich auch über Sensor erfolgen, aber wie kann man hier z.B. verschiedene STATES abfragen (verschiedene Schalterstellungen ein und desselben Sensors...[Punkt "Cancel-Option des Alarms über Switch (Tradfri-Status)"])? Pro Sensor kann ja nur eine RegExp angegeben werden, oder?

- als Aktor soll eine Sirene über Sonos abgespielt werden....sollte ich hinbekommen, wenn das Grundprinzip klar ist [Punkt "bei erkannter Alarm-Situation "Sirene" über Sonos auslösen"]

Der Readingstate ist unlocked - funktioniert aber trotzdem nichts, deshalb gibt es auch keine Fehler im Log... :-\

Ich hoffe, dass die Probleme etwas klarer beschrieben sind...


Danke und Grüße,
Ian

TimToni

Servus Ian,

Zitatdas einzige, was funktioniert, sind die Ansagen unter Wait/Arm/Disarm/Cancel, sobald man irgendwo einen Haken bei Arm setzt bzw. wieder wegnimmt.

Dann schau mal im EventMonitor nach ob die Alarme tatsächlich gesetzt werden => so sieht das bei mir aus
Global global ATTR Alarmi level0xec armed
Dann weisst Du schon mal ob der Alarm aktiv ist oder nicht.

ZitatOder muss ein dauerhaft aktivierter Alarm durch einen Sensor erst deaktiviert werden? Wie lautet hierfür ein einfacher Perl-Befehl, der nur einen Schaltzustand abfragt? [Punkt "Deaktivierung der Alarm-Funktion über Switch (Tradfri-Status)"]

Wenn der Alarm aktiv ist, ist er aktiv. Dies kannst Du erstmal nur über settings - Armed/Cancel verändern, sprich wieder ausschalten.
Wenn Du das über Sensoren, Schaltern, etc. machen willst, musst Du ihm das sagen.
Ich steuere z.B. über ein externes Codeschloss den Alarmstatus. Da hast Du alle Möglichkeiten.
Für ein notify dass auf den Alarm_Status reagiert, schaust Du in meinen vorigen Posts nach, da steht eigentlich, wie ich meine, das wichtigste dazu drin.

Mir hat für das Verständnis in dieser Sache sehr viel geholfen, Grundlagen natürlich erstmal dies hier
https://wiki.fhem.de/wiki/Modul_Alarm

Und vor allem dies hier https://wiki.fhem.de/wiki/Event

Zitat- ALARM soll erst nach Delayzeit starten,
Unter settings => Verzögerung Alarm aktiv
Unter actors => Alarmverzögerung für jeden Aktor separat

Am besten konzentrierst Du dich darauf, mit z.B. einem Türkontaktschalter einen Alarm auszulösen, der dann z.B. einen Dummy aktiviert. Dann funktioniert zumindest die Grundstruktur. Dann kannst Du weiterbauen...

Ich hoffe das hilft erstmal.

Gruss Tom

noom0815

Hallo TimToni,

beim Einschalten des jeweiligen alarms erscheint im EventMonitor
Alarm Test level0: armed

Dies sagt aber nur aus, dass ein Event stattgefunden hat, oder? Warum ist es bei mir kein Global ATTR?

Hier das Event, welches einen Alarm auslösen soll:
2019-11-04 20:02:17 HUEDevice Fenster_Terrasse open

Kein Ahnung, was man eingeben muss, damit hier irgendwas passiert...gibt es keine Beispiele, die eine kompletten Programmablauf zeigen?
Also eine Sensor-Definition, die eine Aktor-Reaktion auslöst...z.B. oben genannter Sensor soll ein Lampe einschalten...

Anscheinend bin ich der einzige, der das Modul bzw. die Logik dahinter nicht blickt...


Gruß,
Ian

TimToni

Warum das bei dir ohne global attr erscheint kann ich dir nicht sagen. Bei mir läuft das schon seit Jahren. Hatte am Anfang auch Probleme das zum Laufen zu bekommen.

Du musst da eigentlich nicht viel machen damit etwas passiert.

Wenn Du das noch nicht gesehen hast,
Im wiki, modul_alarm,  siehe link vormail
siehst Du unter dem Bild alarm_sensors => deine Sensoren. Aber auch nur dann wenn Du sie als Attribut / alarmdevice / sensor angelegt hast.

Wenn Du das hinbekommen hast musst Du deinen Alarm Level festlegen => 0-7
und ein Regexp eintragen (Notify on Regexp steht da) => z.B. OG_TK_Wozi:open
Eine Message kannst Du anlegen, musst Du aber nicht.
Jetzt noch eine Action => Raise

Weiter unten unter Actors wieder den zugehörigen Alarm Level auswählen +  Set Action (was soll passieren ? z.B. Rauchmelder an (unset / aus))

Einen Actor für Cancel hast Du eingerichtet ? Wenn nicht bitte das Wiki lesen, steht alles drin.

So sollte es funktionieren.

Gruss Tom

noom0815

Hallo TimToni,

irgendwie habe ich das Gefühl, dass wir ein wenig aneinander vorbei diskutieren... ;)
Aber wenigstens möchtest Du mir helfen - Danke hierfür!

"Wenn Du das noch nicht gesehen hast,
Im wiki, modul_alarm,  siehe link vormail
siehst Du unter dem Bild alarm_sensors => deine Sensoren. Aber auch nur dann wenn Du sie als Attribut / alarmdevice / sensor angelegt hast."
=> habe ich gemacht, ist klar

"Wenn Du das hinbekommen hast musst Du deinen Alarm Level festlegen => 0-7"
=> habe ich gemacht, ist klar

"und ein Regexp eintragen (Notify on Regexp steht da) => z.B. OG_TK_Wozi:open"
=> evtl. liegt hier der Hund begraben, da ich mir nicht sicher bin, in welchem Format die RegExp eingegeben werden muss...wie würde sie für MEIN Beispiel lauten?
Fenster_Terrasse:open, HUEDevice Fenster_Terrasse:open und die identischen Befehle in der Form {fhem("Fenster_Terrasse:open")} funktionieren nicht...

"Jetzt noch eine Action => Raise"
=> klar

"Weiter unten unter Actors wieder den zugehörigen Alarm Level auswählen +  Set Action (was soll passieren ? z.B. Rauchmelder an (unset / aus))"
=> gleiches wie oben: vermutlich liegt es an falschen Format; woher weiß man, welches Format der Befehl (in fhem lautete dieser z.B. set Lampe on) haben muss?


"Einen Actor für Cancel hast Du eingerichtet ? Wenn nicht bitte das Wiki lesen, steht alles drin."
=> ja: ein Schalter (evtl. wieder Format Problem?) schaltet zum Test alle Alarme auf disarmed


Was mache ich falsch?

TimToni

Moin,

wenn Du zitierst bitte "Zitat einfügen" liest sich einfacher.

Zitat"und ein Regexp eintragen (Notify on Regexp steht da) => z.B. OG_TK_Wozi:open"
=> evtl. liegt hier der Hund begraben, da ich mir nicht sicher bin, in welchem Format die RegExp eingegeben werden muss...wie würde sie für MEIN Beispiel lauten?
Fenster_Terrasse:open, HUEDevice Fenster_Terrasse:open und die identischen Befehle in der Form {fhem("Fenster_Terrasse:open")} funktionieren nicht...

Das Format ist dein "device:aktion" - mehr nicht.
Du brauchst bei "Sensors" nichts mit {fhem...} machen (zumindest nicht bei einem Fensterkontakt), da reicht das device:aktion

Das gleiche bei den "Actors". Da reicht z.B. set device on.

Prüfe ob deine Alarm notifiers auch gefüllt sind => alarmNotifier
Im EventMonitor schauen was passiert wenn Du deinen Actor betätigst....
Die eingetragenen Alarm Level unter Sensors musst Du mit "Set Alarms" eintragen sonst wird es auch nix.

Mehr fällt mir erstmal nicht ein.

Gruss Tom

noom0815

Servus Tom,

es liegt vermutlich an den fehlenden alarmNotifier(n)....
Es werden offenbar trotz unlock und deactivate keine angelegt-dachte bisher, die wären evtl. im hiddenroom, sind sie aber auch nicht.

Weisst du, warum diese nicht angelegt werden?

Grüße, Ian

TimToni

-Set Alarms- hast Du gemacht nachdem Du die -Sensors- und -Actors- Liste gefüllt hast ?

Soweit habe ich dir alles gesagt was ich prüfen würde.
Evt. hat noch jemand einen Ansatz, es lesen sicher einige mit  ;)  ?

Gruss Tom

noom0815

#1272
Hallo,

anbei meine test settings...alarm.js ist auch installiert - was fehlt sonst noch bzw. was ist falsch?


Danke für einen Hinweis,
Ian

KölnSolar

Hi Ian,

wenn ich es richtig gesehen habe, fehlt Dir ein Cancel-Sensor. Ich habe dazu ein device für alle Alarm-Level. Im Action-drop-down der Zeile muss dann Cancel stehen.

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

noom0815

Hallo Markus,

besten Dank für den Tip - ich habe keine Ahnung, warum das drop-down aus Disarm stand.
Muss ich vermutlich während meiner Testerei versehentlich eingestellt haben - echt dämlich... :-\

Auf jeden Fall hat dies dazu geführt, dass die notifies angelegt wurden.
Ich habe jetzt allerdings wieder ca. 1h alles mögliche getestet, um das Modul zum Laufen zu bringen und mir auch noch mehrmals den Wiki Eintrag durchgelesen und keinen Fehler entdeckt....und seit ein paar Minuten läuft das Modul, ohne dass ich noch weitere Änderungen vorgenommen hätte.
Mir ist ein Rätsel, warum es zunächst nicht funktioniert hat - egal, Hauptsache es geht jetzt...

Auch wenn hier einige Leser sicherlich (zu recht) schmunzeln, danke ich Dir und Tom für eure Hilfe!


Grüße,
Ian