Hauptmenü

Notify Wildcard

Begonnen von Det20, 15 Juni 2020, 11:23:34

Vorheriges Thema - Nächstes Thema

Det20

Hallo,

ich habe mal eine blöde Anfängerfrage. Dieses Wochenende wurde das ZWAVE Modul aktualisiert. Das hier hat bis irgendwann kürzlich funktioniert:


define Sensor.ZisterneOK notify Sensor.Zisterne:alarm:.Water:.Event.cleared:.unknown.event.0 { ZisterneOK() }


Nun ist es:


define Sensor.ZisterneOK notify Sensor.Zisterne:alarm:.Water:.Event.cleared:.State.idle { ZisterneOK() }


Es hat sich also der Teil "unknown.event.0" in "State.idle" geändert. Unschön bis ich drauf gekommen bin, aber sei's drum. Da es ein wirklich wichtiger Sensor ist (prüft, ob die Zisterne voll ist und pumpt sie ab, bevor die halbe Einfahrt unter Wasser steht), möchte ich da kein Test-Risiko eingehen, dahe die Frage:

Kann ich hier ein Wildcard einbauen? Quasi


define Sensor.ZisterneOK notify Sensor.Zisterne:alarm:.Water:.Event.cleared* { ZisterneOK() }


Wieso? Falls das "Ist Voll" Event geändert wird und ich es nicht mitbekomme, wäre das echt blöd:


define Sensor.ZisterneVoll notify Sensor.Zisterne:alarm:.Water:.Leak.detected.-.Unknown.Location { ZisterneVoll() }

Beta-User

Warum sollte das nicht gehen? Allerdings willst du vermutlich keine beliebige Anzahl von "d" haben ("d*"), sondern irgendwas beliebiges nach dem "cleared", und das wäre dann ".*".

Allerdings solltest du dann sicherstellen, dass sich der Effekt des notify durch so eine Wildcard nicht ändert, weil auf zu viele Events reagiert wird.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Det20

Also quasi:


define Sensor.ZisterneOK notify Sensor.Zisterne:alarm:.Water:.Event.cleared:.* { ZisterneOK() }
define Sensor.ZisterneVoll notify Sensor.Zisterne:alarm:.Water:.Leak.detected.* { ZisterneVoll() }


Sorry, aber bei den Notify's steige ich nie so ganz durch und bin eher froh, wenn sie laufen und packe sie anschließend, wenn möglich, auch nie wieder an.

Beta-User

So in der Art, auch wenn mich wundert, dass du einmal den ":" rauswirfst und einmal drinläßt.

Ansonsten ist das nichts notify-spezifisches, sondern regex, und das sollte man im FHEM-Kontext halt schlicht und ergreifend lernen, weil man es überall braucht...

(Ich persönlich finde es übersichtlicher, ein notify statt zweien zu verwenden und dann in der aufgerufenen Funktion (durch Auswertung des übergebenen $EVENT) zu unterscheiden, was eigentlich passieren soll. Ist aber auf der Perl-Seite etwas aufwändiger.)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Det20

Zitat von: Beta-User am 15 Juni 2020, 11:51:38
So in der Art, auch wenn mich wundert, dass du einmal den ":" rauswirfst und einmal drinläßt.

So kommen die Meldungen rein, also mit und ohne :

Beta-User

Nun ja, im Prinzip auch egal...

Das .* würde jedenfalls auch den einen ":" "verschlucken", mit ist es allerdings "eindeutiger". Ansonsten zum regex-Üben noch zwei Links:
regexr.com/
https://regex101.com/

Da findest du auch Erläuterungen, welche Kürzel jeweils was zu bedeuten haben.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors