FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Feinfinger am 07 März 2021, 12:41:23

Titel: Gerät aus notify ausschließen
Beitrag von: Feinfinger am 07 März 2021, 12:41:23
Hallo zusammen,

Ich nutze folgendes notify um meine Alarmanlage auszulösen.

.*:(open|sabotageError:.on|tilted) {if(Value("Alarmanlage") eq "An") { fhem("set Sirene on") }}


Gibt es eine Möglichkeit, einen Fensterkontakt vom notify "auszuschließen"

Das device um was es geht sendet ebenfalls open|closed und ist so definiert.

HM_A5B520

Gruß Feinfinger
Titel: Antw:Gerät aus notify ausschließen
Beitrag von: betateilchen am 07 März 2021, 12:52:52
Regel 1: mit Value() sollte man überhaupt nicht arbeiten, sondern besser mit Werten aus readings arbeiten.
Regel 2: in einer if Abfrage kannst mehrere Bedingungen beliebig kombinieren, also prinzipiell z.B. sowas:

if (blaIrgendwas(Alarmanlage) && devive != HM_A5B520)


--
Titel: Antw:Gerät aus notify ausschließen
Beitrag von: Otto123 am 07 März 2021, 12:54:27
Und es gibt bei notify auch das attr ignoreRegexp - das ist genau dafür eingeführt worden ;)
https://fhem.de/commandref_modular_DE.html#notify
Titel: Antw:Gerät aus notify ausschließen
Beitrag von: betateilchen am 07 März 2021, 12:57:42
Ja, aber damit macht man "Logiken" immer komplizierter und fehleranfälliger, weil man die regex in ein Attribut verlegt, anstatt sie auf den ersten Blick im DEF zu erkennen.

Wenn man im DEF bereits perl Code verwendet, sollte man die Fallunterscheidungen auch dort machen.
In notify, in denen man nur einen direkten FHEM Befehl ausführt, kann der Ausschluß per Attribut vielleicht Sinn machen.


--
Titel: Antw:Gerät aus notify ausschließen
Beitrag von: TomLee am 07 März 2021, 13:04:47
Ohne mich mit dem Attribut beschäftigt zu haben, aus Interesse die Frage wie denn dann die Syntax für bspw. zwei Geräte wäre, wenn die Syntax die gleiche wie in der DEF ist ?

(bla2|bla1) ?
Titel: Antw:Gerät aus notify ausschließen
Beitrag von: Otto123 am 07 März 2021, 13:56:26
So? define n_bla notify bla.:.* {}
attr n_bla ignoreRegexp bla3:.*

Titel: Antw:Gerät aus notify ausschließen
Beitrag von: TomLee am 07 März 2021, 15:33:15
Habs jetzt mal ausprobiert und bin der Meinung das es schon so reicht wie ich vermutet habe nur das mit den Klammern war Käse, wenn man wie hier gewünscht ein Gerät (in meinem Bsp. halt zwei) komplett ignorieren möchte.
Die Angabe eines Readings/Events nicht zwingend nötig ?

Beispiel anhand ich es nachvollzogen habe:

defmod not_FB_433_2_TasteX_Test notify FB_433_1_TasteA|FB_433_1_TasteB|FB_433_1_TasteC|FB_433_1_TasteD:.* saysonos $EVENT
attr not_FB_433_2_TasteX_Test ignoreRegexp FB_433_1_TasteA|FB_433_1_TasteB
attr not_FB_433_2_TasteX_Test room Test
Titel: Antw:Gerät aus notify ausschließen
Beitrag von: Feinfinger am 08 März 2021, 20:40:52
Zitat von: Otto123 am 07 März 2021, 13:56:26
So? define n_bla notify bla.:.* {}
attr n_bla ignoreRegexp bla3:.*


Das werde ich mal testen, klingt plausibel :-)
Titel: Antw:Gerät aus notify ausschließen
Beitrag von: roedert am 22 März 2021, 11:28:52
Solle
(?!auszuschliessendesDevice).*:(open|sabotageError:.on|tilted) {if(Value("Alarmanlage") eq "An") { fhem("set Sirene on") }}
nicht auch funktionieren?

Ansonsten mit gut strukturierten Namen arbeiten, dann kann man darüber filtern, zB
Sensor.*:(open|sabotageError:.on|tilted) {if(Value("Alarmanlage") eq "An") { fhem("set Sirene on") }}
Titel: Antw:Gerät aus notify ausschließen
Beitrag von: Otto123 am 22 März 2021, 14:53:17
Zu den letzten beiden Beispielen empfehle ich diese Literatur :)
https://forum.fhem.de/index.php?topic=115414.0