Gerät aus notify ausschließen

Begonnen von Feinfinger, 07 März 2021, 12:41:23

Vorheriges Thema - Nächstes Thema

Feinfinger

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
Proxmox VM - MAPLE-CUL - SIGNALDINO

betateilchen

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)


--
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

#3
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.


--
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

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) ?

Otto123

So? define n_bla notify bla.:.* {}
attr n_bla ignoreRegexp bla3:.*

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

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

Feinfinger

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 :-)
Proxmox VM - MAPLE-CUL - SIGNALDINO

roedert

#8
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") }}

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz