FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: PeMue am 29 Juli 2014, 19:42:43

Titel: Batteriewarnung, vermutlich die hundertste ...
Beitrag von: PeMue am 29 Juli 2014, 19:42:43
Hallo zusammen,

ich habe versucht, für diejenigen Sensoren, die einen Batteriezustand senden, die Batteriewarnung (http://www.fhemwiki.de/wiki/Batterie%C3%BCberwachung) einzurichten.
Wenn ich den Code
define n_batt_chk notify .*:[Bb]attery.* { if($EVENT !~ m/ok$/mi/) { \
  { FB_mail('recipient@internet.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT)};; \
   Log 3, "$NAME : Batteriewarnung $EVENT";; \
  } \
}
(natürlich mit angepasster Mailadresse) in mein fhem.cfg kopiere, kommt nach einem
trigger Bad_T_H2 battery:low auf der Kommandozeile im Log-File
2014.07.29 18:45:41 3: n_batt_chk return value: syntax error at (eval 66930) line 1, near "/) "
syntax error at (eval 66930) line 1, near ";      }"

Dann habe ich im Forum mal etwas gestöbert und folgendes in die Kommandozeile eingegeben:
define Batteriecheck notify *:[Bb]attery.* {if("$EVENT" !~ /ok/) { FB_mail('recipient@internet.de', 'FHEM Batteriewarnung', $NAME." ".$EVENT)}}
und siehe da, mit trigger Bad_T_H2 battery:low wird die Mail versendet. 91_notify.pm mault zwar schwer rum, aber die Mail wird verschickt.

Gretchenfrage für die Könner: Woran liegt das? Ich dachte immer, die Wiki Schnipsel funktionieren schon irgendwo  >:(

Vielen Dank und viele Grüße

PeMue

Titel: Antw:Batteriewarnung, vermutlich die hundertste ...
Beitrag von: Puschel74 am 29 Juli 2014, 19:57:28
Hallo,

bei mir schaut der Code (nicht aus der fhem.cfg  ;) ) so aus:
.*:[Bb]attery.* {
  if($EVENT !~ m/ok/) {
    if (Value("Zustands_Warnung") ne "Batterie") {
      Log(3,"$NAME: Batteriewarnung $EVENT");
      fhem("set Batteriestatus_Led led red");
      fhem ("set Zustands_Warnung on");
      DebianMail('xxx.yyy@zzz.ab',$NAME,$EVENT);
    }
  }
}

so aus und funktioniert einwandfrei.

Grüße
Titel: Antw:Batteriewarnung, vermutlich die hundertste ...
Beitrag von: PeMue am 30 Juli 2014, 20:23:09
Hallo zusammen,

nach ein bisschen rumprobieren habe ich eine Lösung gefunden, direkt in der DEF des notifys editiert:
.*:[Bb]attery.* {
  if($EVENT !~ m/ok/) {
    FB_mail('recipient@internet.de', 'FHEM Batteriewarnung', $NAME.': '.$EVENT);
    Log 3, "$NAME : Batteriewarnung $EVENT";
  }
}


Was ich nach dem Speichern in die fhem.cfg festgestellt habe:
- die Zeilen werden mit\ (direkt nach dem letzten Zeichen) maskiert
- die Strichpunkte werden verdoppelt (Prozentzeichen hatte ich nicht)
- das @ wurde (im Gegensatz zu der Bemerkung in UliM's Leitfaden V4.0) nicht verdoppelt   >:(

Sprich: wenn keiner etwas dagegen hat, werde ich den Wiki (http://www.fhemwiki.de/wiki/Batterie%C3%BCberwachung) Artikel anpassen:
!~ m/ok$/mi/ durch !~ m/ok/ ersetzen und die Backslashe direkt nach dem entsprechenden Zeichen setzen.

@Puschel bzw. @UliM: danke für den Tipp bzw. die S. 38 im Einsteigerleitfaden  ;)

Als ehemaliger Pascal (http://de.wikipedia.org/wiki/Pascal_%28Programmiersprache%29) Programmierer würde ich die Starklammern lieber vorne setzen, aber das ist sicherlich Geschmackssache.

Gruß PeMue

Edit: Wiki ist angepasst ...
Titel: Antw:Batteriewarnung, vermutlich die hundertste ...
Beitrag von: ph1959de am 31 Juli 2014, 07:13:26
@PeMue - schreibst Du bei der Wiki-Überarbeitung dann bitte auch dazu, auf welche Art der Konfigurationsbearbeitung (http://www.fhemwiki.de/wiki/Konfiguration) sich die Beschreibung dann bezieht?

Danke, Peter
Titel: Antw:Batteriewarnung, vermutlich die hundertste ...
Beitrag von: Brockmann am 31 Juli 2014, 10:36:52
Ich habe das bei mir noch ein bißchen anders gelöst:
.*[Bb]attery:.(?!ok).*
Dadurch spart man sich den if-Teil, denn das notify wird überhaupt nur getriggert, wenn nach dem "attery:." irgendetwas anderes als "ok" kommt.
Müsste effektiv das gleiche in grün sein, nur vielleicht noch ein klein bißchen effizienter.