Hallo liebe Freunde,
ich habe in den letzten Wochen eine neue Alarmanlage mit fhem und TabletUI in Betrieb genommen und sie funktioniert eigentlich recht gut.
Nun wollte ich noch die Sabotageschalter in den Fensterkontakten aktivieren. Dazu habe ich folgendes notify geschrieben:
.*:sabotageError:.* {
if ($EVENT= "on" && ReadingsVal("alarm_scharf_auswaerts","state",0) eq "on" || ReadingsVal("alarm_scharf_heim","state",0) eq "on"){
fhem("set alarmsirene_innen on");
fhem("set alarmsirene_aussen on");
fhem ("set alarmausloeser Deckel von $NAME");
fhem("set WEB_TelegramBot msg Deckel entfernt von $NAME");
}
}
Damit kommt es leider laufend zu Fehlalarmen, vermutlich durch Geräte eines Nachbarn.
In der Logfile finde ich folgenden Eintrag:
2020.03.02 14:06:52 3: CUL_0: Unknown code A0B66A2581CE71B1D61740000::-95:CUL_0, help me!
2020.03.02 14:07:00 3: CUL_HM set alarmsirene_innen off
2020.03.02 14:07:00 3: CUL_HM set alarmsirene_aussen off
2020.03.02 14:07:35 5: Triggering n_sabotage_error
2020.03.02 14:07:35 4: n_sabotage_error exec {
if ($EVENT= "on" && ReadingsVal("alarm_scharf_auswaerts","state",0) eq "on" || ReadingsVal("alarm_scharf_heim","state",0) eq "on"){
fhem("set alarmsirene_innen on");;
fhem("set alarmsirene_aussen on");;
fhem ("set alarmausloeser Deckel von $NAME");;
fhem("set WEB_TelegramBot msg Deckel entfernt von $NAME");;
Die hmID im vorangehenden BidCos 1CE71B stammt vermutlich vom Gerät eines Nachbar.
Wie kann dieser Bidcos aber mein notify triggern?
Ich wäre sehr dankbar, wenn mir hier jemand von Euch einen guten Rat hätte.
Am besten erst mal alle Devices der Nachbarn auch bei Dir anlegen und auf ignore setzen.
Dann wäre es evtl. auch sinnvoll im notify nicht auf .* zu triggern, sondern an erster Stelle die Namen der Devices anzugeben die wirklich triggern dürfen.
In Deinem Code dürfte $EVENT niemals "on" sein da ja schon der Trigger des notify nur auf sabotageError hört. Somit müsste $EVENT mindestens sabotageError:on sein.
Gruß
Dan
Wobei ja das hier einen Fehler "werfen" müsste:
Zitat
if ($EVENT= "on" &&
Weil ein Vergleich geht mindestens so: ==
Bzw. in dem Fall mit String/Zeichenkette: eq
Aber nat. erst einmal die Dinge von Dan "abarbeiten"...
Hast du eine vccu definiert!?
Die "schluckt" normalerweise solche "Hilferufe"...
Und dann evtl. im Eventmonitor mal schauen, was tatsächlich beim Auslösen des Sabotage-Alarms als Event kommt. Den dann markieren und ein Notify "generieren lassen" und das dann anpassen...
Geht ein wenig in die Richtung die auch Dan angeregt hat...
Gruß, Joachim
Das Problem war offensichtlich die falsche Abfrage im notity:
Das $EVENT lautet: "sabotageError: on"
Die Abfrage muss also lauten:
TK_.*:sabotageError:.* {
if ($EVENT =~ ": on"&& ReadingsVal("alarm_scharf_auswaerts","state",0) eq "on" || ReadingsVal("alarm_scharf_heim","state",0) eq "on")
Damit läuft es nun. Zur Verwirrung hat geführt, dass mit den Fensterkontakten offensichtlich immer wieder Kommunikation abläuft, welche im log wie folgt aussieht:
2020.03.03 14:10:36 4: CUL_Parse: CUL_0 A 0D DC A610 444C32 F11034 0601000035 -47.5
2020.03.03 14:10:36 5: CUL_0: dispatch A0DDCA610444C32F1103406010000::-47.5:CUL_0
2020.03.03 14:10:36 5: CUL_0 sending As0ADC8002F11034444C3200
2020.03.03 14:10:36 5: SW: As0ADC8002F11034444C3200
2020.03.03 14:10:36 5: Triggering n_sabotage_error
2020.03.03 14:10:36 4: n_sabotage_error exec {
if ($EVENT =~ ": on"&& ReadingsVal("alarm_scharf_auswaerts","state",0) eq "on" || ReadingsVal("alarm_scharf_heim","state",0) eq "on"){
fhem("set alarmsirene_innen on");;
##fhem("set alarmsirene_aussen on");;
fhem ("set alarmausloeser Deckel von $NAME");;
fhem("set WEB_TelegramBot msg Deckel entfernt von $NAME");;
fhem("set WEB_TelegramBot msg Event = $EVENT");;
Dadurch wurde dann das notify getriggert und durch die falsche Abfrage entstand wohl der Fehlalarm.
Ich bedanke mich recht herzlich bei Euch allen für Eure Hilfe. Ohne dieses Forum wäre ich längst aufgeschmissen.
Gruß
Kurt