Hauptmenü

Batteriewarnung optimieren

Begonnen von WhyTea, 21 Juli 2016, 11:37:04

Vorheriges Thema - Nächstes Thema

WhyTea

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

frank

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.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

WhyTea

Oh ok du hast recht das internal ERR_names beinhaltet den Namen. :)





WhyTea

#4
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.

marvin78

Du befindest dich im Perl-Bereich und versuchst mit FHEM IF zu arbeiten. Das wird so nicht gehen.