Hallo
Mithilfe des unten zu sehen Codeschnipsels überwache ich den Batteriestatus von meinem Homematic Geräten.
Das funktioniert auch nur leider wird das Gerät welches den Batteriestatus meldet nicht erfasst.
define n_batt_chk notify .*[Bb]attery:.* { if($EVENT !~ m/ok/) {\
{ sendEmail('xxx@xxx.de', '***FHEM*** Batteriewarnung', $NAME.': '.$EVENT)};; \
Log 3, "$NAME: $EVENT";; \
} \
}
attr n_batt_chk room Zentralsysteme
Logausgabe:
2016.07.20 19:29:58 3: hm: ERR_battery: low:1,
Kann mir jemand dabei helfen wie ich den Namen des Devices noch mitgeteilt bekomme?
Gruß
Daniel
mir scheint, dass die meldung von hminfo ist. hm ist also dein meldendes device (hminfo) mit der entsprechenden batterie-"sammelmeldung".
das tatsächliche device muss natürlich auch eine meldung senden, damit das notify darauf reagieren kann. wenn du in diesem device aber event-on-change gesetzt hast, kommen hier natürlich keine weiteren meldungen. eventuell hast du die erste meldung verpasst.
Der Name des devices (oder der devices, denn es können auch mehrere gleichzeitig sein) steht im device hm unterr Err_names (oder so ähnlich, bin grade nicht zuhause)
Ein separates notify wie in der Frage angegeben, ist für homematic Komponenten völlig überflüssig.
Oh ok du hast recht das internal ERR_names beinhaltet den Namen. :)
Ich hab das mal versucht umzusetzen. Leider nur mit mäßigem erfolg.
define n_batt_chk at +*00:01:00 {\
my $ERR_battery=ReadingsVal("hm","ERR_battery","ok");;\
my $ERR_names=InternalVal("hm","ERR_names",0);;\
IF ([hm:ERR_battery] ne "ok") (sendEmail('xxx@xxxl.de', '***FHEM*** Batteriewarnung', $ERR_battery.': '.$ERR_names), set Alle_Batterien low)\
}
attr n_batt_chk room Zentralsysteme
bringt den Fehler
2016.07.21 14:35:47 3: n_batt_chk: syntax error at (eval 623) line 4, near "hm:"
Ich sehe den Fehler aber nicht.
Du befindest dich im Perl-Bereich und versuchst mit FHEM IF zu arbeiten. Das wird so nicht gehen.