Event für das Löschen eines Readings

Begonnen von Flachzange, 15 September 2024, 19:05:43

Vorheriges Thema - Nächstes Thema

Flachzange

Hallo zusammmen,

unter anderem das EnOcean-Modul setzt bei das Reading "alarm", z.B. wenn ein Gerät für eine bestimmte Zeit nicht erreichbar ist wird ein alarm: dead_sensor gesetzt. Wenn das Alarmereignis vorüber ist wird das Reading vollständig gelöscht. Meine Frage: Wie bekomme ich dieses Beenden des Alarmeignisses mit, also das Löschen des Readings? Wird da überhaupt ein Event ausgelöst? Ich habe jetzt mal erfolglos diverse Kombination mit undef ausprobiert, z.B.
<device>:alarm:.undef.

Danke und Gruß
Chris

passibe

#1
Generell siehst du alle Events im Event monitor. Anders gesagt: Wenn etwas nicht im Event auftaucht, gibt es auch kein Event (falls im Device nicht event-on-change-reading bzw. event-on-update-reading konfiguriert ist und das Setzen eines Events unterdrückt).

Unabhängig davon: Soweit ich weiß, löst das Löschen eines Readings kein Event aus. Was du aber machen könntest ist, z.B. mit
ReadingsVal("<device>","alarm","UNSET")prüfen, ob das alarm-Reading bei einem Device deiner Wahl existiert oder nicht (wenn es nicht existiert wird UNSET ausgewählt (oder halt ein String deiner Wahl, dafür einfach das "UNSET" ändern)).

Das eignet sich aber leider nicht wirklich zur Automatisierung, sondern eher dazu, das z.B. periodisch abzufragen.

Bestimmt hat jemand aber auch noch eine andere/bessere Idee.

Beta-User

...vielleicht mal im EnOcean-Bereich nachfragen, ob das so soll...
Löschen ist vermutlich OK, aber ein "trigger"-Kommando könnte man ja absetzen?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

betateilchen

Zitat von: Beta-User am 16 September 2024, 07:16:29...vielleicht mal im EnOcean-Bereich nachfragen, ob das so soll...

Das ist nur die halbe Wahrheit auf dem Weg zu einer Lösung.
Der Wunsch an sich ist nachvollziehbar.

  • Das EnOcean Modul benutzt korrekterweise die FHEM Funktion readingsDelete() zum Löschen von readings.
  • Die Funktion readingsDelete() ist in der fhem.pl implementiert.

Ergo wäre die richtige Stelle, nach einer Änderung zu fragen, der Bereich "Sonstiges", der für Fragen zu fhem.pl als passendes Unterforum definiert ist. Eine Änderung sollte Rudi an dieser zentralen Stellen einbauen, z.B. optionaler Parameter für den Funktionsaufruf, um ein trigger nach dem Löschen auszulösen.

Meine Hoffnung ist nur, dass nicht alle Entwickler auf die Idee kommen, für jedes gelöschte reading ein event auszulösen... (ich denke da an Module, die vor dem Schreiben neuer readings erstmal alle readings löschen. Das können z.B. bei HTTPMOD oder JsonMod auch mal mehrere Dutzend readings auf einen Schlag sein...)

Alternativ könnte das EnOcean Modul auch den Wert des readings auf "noAlarm" setzen, anstatt das reading zu löschen. Darauf könnte man jetzt schon mit einem notify reagieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Flachzange

Hallo zusammen, danke für eure Rückmeldung und die Informationen. Letztendlich das, was ich schon "befürchtet" habe. Ich habe auch schon mit dem Gedanken gespielt, dass man einfach nur alarm=no setzen müsste. Das könnte aber bestehende Installationen treffen, die nur prüfen, ob alarm gesetzt ist. Alternativ könnte man ja auch readingsDelete() überlagern, so dass es eine Variante readingsDelete(boolean trigger) oder readingsDeleteTrigger() gibt.

Es klingt jetzt auch so, dass das ein EnOcean-spezifisches Thema wäre. Dann würde ich da nämlich mal weitermachen.

rudolfkoenig

ZitatAlternativ könnte das EnOcean Modul auch den Wert des readings auf "noAlarm" setzen, anstatt das reading zu löschen. Darauf könnte man jetzt schon mit einem notify reagieren.
Das wuerde ich vorziehen, dann braucht man auch keine Sonderbehandlung.
Nebeneffekt: man sieht nachtraeglich, dass es ein Problem gab.


Flachzange