Hallo,
ich habe ein notify um den Status diverser Endgeräte, Temperatur/Luftfeuchtesensoren, Rauchmelder, Fensterkontakt und seit dem letzten Update Hue Taster zu überwachen. Sobald der Status nicht mehr ok ist (oder nicht 100) springt sie an. Diese RegEx sieht so aus
.*[Bb]at.* { if ($EVENT !~ m/[Bb]att?e?r?y?: (ok|100)/) {
{ DebianMail('schmidt@dosm.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};
Log 3, "$NAME : Batteriewarnung $EVENT";
}
}
Der Code funktioniert für Einträge wie:
016-01-21_09:19:45 Sensor_Wohnzimmer T: 21.2 H: 30.2 Bat: ok
Rauchmelder_KG-2016.log:2016-11-12_11:15:16 Rauchmelder_KG battery: ok
2016-08-30_18:05:42 kg.fenster.hobby battery: ok
Nun gibt es wohl seit dem neuesten Update auch ein Reading für die Hue Taster die in etwa so aussehen:
wz.schalter: battery: 100
Eigentlich war meine Erwartung das ich dies mit der runden Klammer um (ok|100) als oder Statement bekomme, was im Regex101 auch funktioniert, in FHEM leider nicht. Wenn ich Klammer und | entferne klappt alles wieder, bis auf die "battery: 100" Readings.
Hat jemand eine Idee oder sieht wo mein Problem liegt ?
Hallo netdom,
ohne in die Details deiner Regex zu gehen empfehle ich nicht alles in einem Schlag zu erledigen.
Versuche deinen Code lesbarer zu machen. Es wird dir helfen ihn zu warten.
Wenn es denn nun schon ein Notify sein muss, dann würde ich die Regex in mehrere Teile zu zerlegen.
if ( ($EVENT =~ /Bat:/) and ($EVENT != /ok/) or
($NAME eq "wz.schalter" and $EVENT !~ / 100/) or
($NAME ne "wz.schalter" and $EVENT =~ /battery/ and $EVENT !~ / ok/)
){
&writeEmail();
}
Ich habe den Code nicht getestet. :) Eine andere Möglichkeit sind mehrere Notify zu benutzen. So kann ein Update, Fehler etc nicht gleich alles zerhauen.
Edit: Es geht sicher alles viel "schöner" aber am Ende musst du mit deinem Code klarkommen.
Schau mal in' Wiki (http://www.fhemwiki.de/wiki/Batterie%C3%BCberwachung). Da ist das bezogen auf Homatic schön beschrieben. Trifft zwar nicht ganz Dein Problem, aber evtl. hilft es Dir trotzdem.
Ich schätze, dass die 100 ein Prozentwert ist und auch 85 noch keinen Alarm auslösen soll, oder?
verlinkte Grüße
Niels