Neues Modul für Alarmanlage

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

Vorheriges Thema - Nächstes Thema

theophilou85

Habe einen neuen Plan. Im Prinzip bräuchte ich ja nur einen Dummy der immer den gleichen STATE hat wie mein Residenzmodul.

Ich habe das jetzt einmal mit clonedummy versucht, funzt auch bei den readings aber beim STATE leider nicht. Kann mir jemand sagen wie ich ein x-beliebiges STATE einem dummy übergebe? Da das Residenzmodul 4 Zustände hat, möchte ich keine 4 notifys schreiben um es zu übergeben. Da gibt es doch sicher... Achtung jetzt kommts... eine "SAUBERE" variante  ;D

gamauf

#1006
Zitat von: theophilou85 am 08 Januar 2018, 18:44:02
..Im Prinzip bräuchte ich ja nur einen Dummy der immer den gleichen STATE hat wie mein Residenzmodul.
..

Nein, brauchst du nicht. Du brauchst nur einen Dummy mit "alarmDevice = Sensor" sonst muß der Dummy gar nichts können. Dadurch bekommst du eine weitere Zeile im Alarmmodul unter "Sensors". In der Spalte "Notify by RegExp" kannst du dann den gewünschten Wert deines Residenzmoduls abfragen.

Der Dummy dient dann nur als Speicherort für das "alarmSettings" Attribut. Zu mehr brauchst du ihn nicht.

theophilou85


theophilou85

Zwei Fragen noch: a) Zum einen würde ich gerne den "Alarmroom" anders benennen und bei den anderen Räumen und nicht im Feld ganz links oben abbilden. Kann mir wer sagen wie ich das mache?
b) Das "statedisplay" des Moduls zeigt bei mir oft irgendwas. "At-devices" meines Weckers oder ganz andere Dinge die mit der Alarmanlage überhaupt nichts am Hut haben. Habe das Attribut auf "none" gestellt, aber keine Besserung.

gamauf

Zitat von: theophilou85 am 09 Januar 2018, 09:42:07
...
b) Das "statedisplay" des Moduls zeigt bei mir oft irgendwas. "At-devices" meines Weckers oder ganz andere Dinge die mit der Alarmanlage überhaupt nichts am Hut haben. Habe das Attribut auf "none" gestellt, aber keine Besserung.
ist bei mir auch so, bin dem aber noch nicht nachgegangen...

theophilou85

#1010
Okay. Ich habe ein weiteres Problem:

Ich nutze drei Alarmlevel: 0=Fenster links, 1=Fenster rechts, 2=Haustüre. Das mache ich um 3 unterschiedliche Push-Nachrichten an mein Handy senden zu können. Soweit so gut.

Zum scharfstellen verwende ich residenz:absent für Alarmlevel 0,1,2... einen Dummy mit residenz:home zum Abschalten für 0,1,2 und einen weiteren Button für 0,1,2 zum Canceln.

Jetzt habe ich: Arm Action: set push_per00 message Alarmanlage aktiviert!
Disarm Action: set push_per00 message Alarmanlage deaktiviert!
Cancel Action: set push_per00 message Alarm canceled!

und bekomme jetzt jede Pushnachricht drei Mal, weil er anscheinend pro Alarmlevel meint, einmal die Pushnachricht senden zu müssen.

Bei Message Part II habe ich für alle drei Alarmlevel "0" drinnen stehen.

Wie kann ich das verhindern?
Und noch ne Idee wie ich den Alarmsraum zu meinen anderen Räumen runterbekomme? Verstecken über hiddenroom ist mir bekannt.

Vielen Dank.

gamauf

Wenn du alle diene Sensoren in einen alarm level hast und bei auslösen dieses alarm levels so eine nachricht verschickst:

define A_Mail dummy
attr A_Mail alarmDevice Actor
attr A_Mail alarmSettings alarm2,alarm5,alarm6,alarm7,|{DebianMail('user@domain.net','Alarm',Value('AAA'),'')}|{DebianMail('user@domain.net','Entwarnung',Value('AAA'),'')}|00:00
attr A_Mail group alarmHelperDev
attr A_Mail room Alarm

dann steht im Mail welcher Sensor ausgelöst hat.

theophilou85

Wäre eine Lösung, lieber wären mir aber individuelle Texte. armact/cancelact/disarmact kann ich nicht irgendwie dazu bringen, ihre Meldung, bei mehreren Alarmen nur einmal abzuschicken?

Kann ich irgendwie absent oder gone zum scharfstellen der Anlage verwenden, ohne dafür ein weiteres dummy anlegen zu müssen?

define surve_on dummy
attr surve_on alarmDevice Sensor
attr surve_on alarmSettings alarm0,alarm1,alarm2,|res:absent !!!ODER GONE!!!|Alarmanlage aktiviert!|arm





gamauf

die RegExp würde so aussehen:

res:absent|gone

aber da das AlarmModul das Pipe-Symbol ("|") als Trennzeichen im Attribut verwendet, wird das wahrscheinliich so nicht funktionieren. Möglw. muß man das |-Zeichen irgendwie "escapen" -> Frage @pah

gamauf

ein schmutziger workaround der das Pipe-Symbol vermeidet:

res:[absegone]{4}.*

theophilou85

Der unsaubere Workaround gefällt mir und klappt. wenn @pah noch irgend ne einstellung vorsehen könnte, dass ich beim armen/canceln/disarmen, mir aussuchen kann nur eine meldung, oder 3 individuelle devices anzulegen (dann lasse ich zwei einfach leer), wäre es perfekt.

Prof. Dr. Peter Henning

ZitatMöglw. muß man das |-Zeichen irgendwie "escapen"

Das ist schon im Testbetrieb.

Zitat@pah noch irgend ne einstellung vorsehen könnte

Sonst noch Probleme ?

LG

pah

theophilou85

Nö, bisher läuft sonst alles einwandfrei.

jmike

#1018
Hallo.

Habe mich seit langem mal wieder an ein umfangreiches FHEM update getraut und strauchel gerade etwas mit dem Alarm Modul v3.12.
Das GUI Update und auch levelX Status als Readings finde ich super, aber ein Verhalten hat sich verändert und ich bekomme nicht raus warum.

In der Vergangenheit hat er die Aktion "Aktor unset" (jetzt, Aktion Rücksetzen) erst ausgeführt, wenn das Alarmlevel vorher auch ausgelöst war.
Konkret, Ich habe ein Level für meine Fenster und eins für Türen die Zeitgleich bedient werden.
Wenn ich nun nach Hause komme (durch die Tür ;) ) und beide Level entschärfe, werden alle unset Aktionen ausgeführt (Lichter aus, Rollladen hoch etc) obwohl das Level für die Fenster gar nicht ausgelöst ist.

Das tritt bei mir sowohl über die Checkboxen in der GUI, als auch per CLI "set AAA armed 3; set AAA disarmed 3" auf.
Verbose 5 brachte mich nicht wirklich weiter, im Eventlog steht dann:
2018-01-14 12:13:33.203 Alarm AAA level3: armed
2018-01-14 12:13:33.205 Alarm AAA  widerrufen durch: program
2018-01-14 12:13:33.208 Alarm AAA level3: disarmed
2018-01-14 12:13:33.210 Alarm AAA 
2018-01-14 12:13:33.213 Alarm AAA savedate: 33


Konnte in den letzten Seiten nichts dazu finden, ist das bei euch auch so? Jemand eine Idee?

Danke & Grüße
Mike


edit: hab mir das nochmal auf meinem playground angesehen. Aktuell kann ich jedoch nur reproduzieren, wenn der disarm vor dem armed kommt, also vor dem arm-delay.
Da läuft das Modul anscheinend in diese if-condition, die als einigste "widerrufen durch program" generiert und dann alle $unsetaction durchführt.

772:  #-- disarming implies canceling as well
773:   }elsif( ($act eq "disarm") &&  ($xec ne "disarmed")) {



...und noch ein edit:
mit folgender Änderung & "#> reload 95_Alarm", funktioniert es für mich. Keine Ahnung ob das die korrekte Stelle ist, aber meine Level werden ohne Alarm raise, mit disarm während arm-wait und natürlich auch nach dem Alarm raise, sauber ausgeführt.
778:       Alarm_Exec($name,$level,"program","disarm","cancel") if $xac ne 'armwait';

Prof. Dr. Peter Henning

#1019
Äh, mein Fehler, ich habe mich selbst ausgetrickst, alles in Ordnung. Falscher Alarm so wie in Hawaii.

LG

pah