Hallo,
ich habe mir ein Notify gebaut das mich bei hohen Feuchtigkeitswerten auf meiner Dreambox daran erinnert mal zu lüften. Nun habe ich zusätzliche Sensoren in Keller und draussen, das also auch mal höhere Werte sein können ohne das dies ein Problem ist.
Nun möchte ich also hergehen und z.B. wenn der Wohnzimmersensor einen Wert liefert, diesen auf die Feuchtigkeit prüfen. Beim Aussensensor soll einfach nichts passieren.
Leider funktioniert meine Definition nicht:
.*humidity:.*
{
if ($NAME eq "Sensor_Wohnzimmer")
{
if ($EVTPART1 > 40.0)
{
(set wz.dm800se msg info 5 Luftfeuchtigkeit $NAME zu hoch, bitte lüften)
Log 3, "$NAME : Luftfeuchtewarnung $EVENT";
}
}
}
Im Logfile steht:
2015.05.28 12:41:55 3: Luftfeuchte.ntfy return value: Unknown command {
, try help.
Unknown command }, try help.
Ohne die 2. if Bedingung, also die reine Auswertung der Feuchtewerte funktioniert problemlos. Sobald aber das 2. if (in dem Fall die Erkennung welcher Sensor die Meldung schickt)dazu kommt, geht es nicht mehr. Was mache ich falsch ?
Einen Befehl kannst du im Perl Bereich so nicht absetzen. Warum prüfst du dann nicht im notify auf das konkrete Device?
Sensor_Wohnzimmer.*humidity.* {
if ($EVTPART1 > 40.0) {
fhem("set wz.dm800se msg info 5 Luftfeuchtigkeit $NAME zu hoch, bitte lüften");
Log 3, "$NAME : Luftfeuchtewarnung $EVENT";
}
}
Das sieht schon mal gut aus, ich will natürlich nicht für jeden auszulesenden Sensor ein eigenes Notify bauen, daher habe ich:
Sensor_.*zimmer.*humidity.*
definiert.
Mit Meldung erfassen:
Sensor_Arbeitszimmer
Sensor_Schlafzimmer
Sensor_Wohnzimmer
Extra behandeln:
Sensor_Technikkeller
Aussensensor_Nord
Das funktioniert schon mal, prima, danke :-) Wie so oft zu kompliziert gedacht.
Jetzt gehts ins Bonuslevel. Nun möchte ich gerne noch den Humidty Wert des Aussensensors mit einbeziehen und wenn dieser höher als der Innenwert ist, soll die Meldung nicht angezeigt werden.
Gesamt sieht mein (funktionierendes) Werk dann so aus:
Sensor_.*zimmer.*humidity:.* {
if (ReadingsVal('Aussensensor_Nord','humidity','') < $EVTPART1 && $EVTPART1 > 60.0) {
fhem("set wz.dm800se msg info 5 Luftfeuchtigkeit $NAME zu hoch, bitte lüften");
Log 3, "$NAME : Luftfeuchtewarnung $EVENT";
}
}
Vllt. hilft das ja irgendwann bei einer Suche mal jemandem.
Hallo netdom,
ich bin seit ein paar Tagen dabei mir deine Funktion zu erarbeiten. Wäre es möglich mal Deine Gesamte Funktion zu sehen? In Perl mache ich gerade meine ersten Gehversuche. Bis ich da das laufen gelernt habe wird sicher noch ein wenig dauern.
VG Moe