(Gelöst) Fehler im Notify?

Begonnen von is2late, 18 Januar 2023, 12:09:21

Vorheriges Thema - Nächstes Thema

is2late

Hi,

ich möchte mich durch ein Notify benachrichtigen lassen, wenn der CO2-Wert zu hoch ist.  Das Dummy heisst co2WZ, das Reading dort co2. Folgendes funktioniert nicht:

defmod n_co2WZ notify co2WZ:co2 {if(ReadingsVal('co2WZ','co2',0)>900){fhem "set ECHO_G090LF1072270A6S speak Achtung, CO2-Wert im Wohnzimmer ist zu  hoch, bitte lüften"}}

Dummy: defmod co2WZ dummy
setstate co2WZ CONNECTED
setstate co2WZ 2023-01-18 12:00:59 co2 660
setstate co2WZ 2023-01-18 11:52:55 humidity 28.47
setstate co2WZ 2023-01-17 16:53:30 state CONNECTED
setstate co2WZ 2023-01-18 11:54:57 temperature 25.6


Sieht jemand den Fehler?

Vielen Dank!
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Beta-User

Vermutlich ein Problem mit der trigger-regexp. Folgendes _könnte_ helfen:co2WZ:co2:.* 
Möglicherweise gibt es zusätzlich ein Reihenfolgeproblem: "Irgendwas" befüllt per NotifyFn() den dummy, und das notify wird möglicherweise vorher schon mal angefahren, wenn vorher was anderes getriggert hatte. (Anders gesagt: warum dummy, und was befüllt?)
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

is2late

Hi Beta-User,

danke für Deine Hilfe!
Der Sensor hängt an einem entfernten Pi und sendet die Daten via Fhem2Fhem auf den Hauptrechner. Dort heißt das Gerät ebenfalls co2WZ.
Das RAW:
defmod co2WZ co2mini
attr co2WZ device /dev/co2mini0
attr co2WZ event-min-interval .*:1200
attr co2WZ event-on-change-reading temperature:1,co2:20,humidity:3,.*
attr co2WZ room co2
attr co2WZ serverControl fhem
attr co2WZ serverIp 127.0.0.1
attr co2WZ serverPort xxx

setstate co2WZ opened
setstate co2WZ 2023-01-18 12:32:21 co2 667
setstate co2WZ 2023-01-18 12:32:22 humidity 27.92
setstate co2WZ 2023-01-17 16:54:08 state opened
setstate co2WZ 2023-01-18 12:32:23 temperature 25.7875


Das Dummy erschien mir der einfachste Weg, die Daten aufzunehmen. Tatsächlich erscheinen sie auch dort und können gut visualisiert werden.
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

is2late

Hey, ich hatte Deinen Vorschlag gleich umgesetzt, aber keine spontane Meldung des Notify bekommen. Jetzt - mit vielleicht viertelstündiger Verspätung - trudelt sie ein. Das war also die Lösung. Vielen Dank!
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Beta-User

 :)

Wenn man so ein notify mit Hilfe des Event-Monitors anlegt, bekommt man das gleich "mundgerecht" ;) .

Allerdings kommt vermutlich jetzt zu oft eine Meldung, nämlich bei jeder Aktualisierung über dem Grenzwert...
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

is2late

Hab noch nie mit dem Eventmonitor gearbeitet; werde es jetzt mal versuchen.
Wiederholung der Meldungen wäre mir sehr willkommen...soll sich ja niemand totschlafen ;-)

Danke nochmals!
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

is2late

Mittlerweile erweist sich die Fülle von Meldungen dann doch als lästig, zumal der CO2-Wert sich auch beim Lüften nur langsam normalisiert.
Hab mit einem Watchdog experimentiert, bin aber nicht zu einem guten Ergebnis gelangt.
Gibt es evtl. eine Möglichkeit innerhalb dieser Zeile, die Meldung einmalig machen?

defmod n_co2WZ notify co2WZ:co2:.* {if(ReadingsVal('co2WZ','co2',0)>900){fhem "set ECHO_G090LF1072270A6S speak Achtung, CO2-Wert im Wohnzimmer ist zu  hoch, bitte lüften"}}

Vielen Dank!
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

Beta-User

Mit einem notify brauchst du einen "Marker", den du prüfen kannst, ob die Meldung bereits rausging. Der muss dann bei "Luft ist rein" ggf. auch wieder zurückgesetzt werden...

Gibt viele Möglichkeiten, ich würde vermutlich ein userReading definieren, das nur zwischen 3 oder 4 Zuständen pendelt (z.B. good, ok, suboptimal, bad), und dann auf das reagieren.
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

is2late

@Beta-User : Vielen Dank, versuche ich.
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox