Frage zu event-on-change-reading

Begonnen von PeMue, 26 August 2014, 20:15:07

Vorheriges Thema - Nächstes Thema

PeMue

Hallo zusammen,

irgendwie stehe ich gerade auf dem Schlauch und weiß nicht weiter.
Ich habe einen HMS100TF, welcher auch sauber funktioniert. Er hat folgende Readings:

battery            ok                         2014-08-26 19:59:52
humidity           76.5                       2014-08-26 19:59:52
state              T: 18.8 H: 76.5 Bat: ok    2014-08-26 19:59:52
temperature        18.8                       2014-08-26 19:59:52
type               HMS100TF                   2014-08-26 19:59:52

Ich logge auf folgendes Event: ./log/Bad_T_H2-%Y-%m.log Bad_T_H2.T:.*
Funktioniert auch wunderbar, bis die Batteriewarnung zuschlägt und mir alle paar Minuten eine Mail schreibt. Kein Problem dachte ich, mit einem
event-on-change-reading battery
bekomme ich das weg. Stimmt, aber dann ist auch der komplette Rest weg  >:(
Ok, dann mache ich halt das Update mit
event-on-update-reading state
sprich, lass nur ein Event battery durch, wenn es sich ändert und lass bei einem Update auch das geänderte state durch.
Nur funktioniert das leider nicht. Ich habe mir schon überlegt, ob ich mir ein UserReadings baue, das dem state entspricht, aber vielleicht hat jemand kein so dickes Brett vor dem Kopf wie ich gerade. Oder: wo liegt mein Denkfehler?

Übrigens ist die Batterie wieder voll, und die event-on* Geschichte ist gerade auskommentiert.

Danke + Gruß

PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

PeMue

ok, dann gebe ich mir (und allen anderen) die Antwort selbst:

# add userReading, because state is not updated, in case battery is not updated
attr Bad_T_H2 userReadings Bad_T_H2_all { sprintf("T: %3.1f H: %3.1f", ReadingsVal("$name", "temperature",0), ReadingsVal("$name", "humidity",0));; }
# only events if something changes (battery in case of battery low, state should not change)
attr Bad_T_H2 event-on-change-reading battery type
# events should generated for userReadings
attr Bad_T_H2 event-on-update-reading Bad_T_H2_all
define Bad_T_H2_log FileLog ./log/Bad_T_H2-%Y-%m.log Bad_T_H2.Bad_T_H2_all:.T:.*

Erklärung:
Ich habe ein userReading eingeführt, das nur Temperatur und Luftfeuchte enthält, aber die FileLog Definition bzw. die gplot-Datei muss dadurch geändert werden. Dann die entsprechendenden Attribute setzen. Mal sehen, wie viele Mails ich bekomme, wenn die Batterie leer geht ...

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser