Batterieüberwachung: ich bekomme es nicht hin :(

Begonnen von Guest, 04 Dezember 2012, 21:19:05

Vorheriges Thema - Nächstes Thema

Guest

Originally posted by: <email address deleted>

Hallo FHEM users,

ich versuche nun schon den halben Tag eine Batterieüberwachung meiner FHT's
samt Meldung per Mail zu realisieren und bekomme
es einfach nicht zum laufen. FHEM (5.3) läuft bei mir sehr befriedigend
seit Längerem auf einer FB7390.
 
Aus dem Wiki habe ich zunächst Folgendes probiert (ergänzt um meine
Empfängeradresse):

define n_batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) {\
    {FB_mail('gerrit@meinemail.de','FHEM Batteriewarnung','@ %')};;\
    Log 3, "@: Batteriewarnung %";;\
    }\
  }

das führte zu folgenden wiederholten Einträgen im Logfile:

2012.12.04 19:55:04 3: n_batt_chk return value: Bad name after de' at (eval 18224) line 1.
2012.12.04 19:55:11 3: n_batt_chk return value: Bad name after de' at (eval 18225) line 1.
2012.12.04 19:56:00 3: n_batt_chk return value: Bad name after de' at (eval 18510) line 1.


Dann habe ich es so probiert:

define n_batt_chk notify .*:.*[Bb]attery.* {  \
   if("%" !~ m/ok/) {\
      Log 1, "@: Batteriewarnung %";;\
      sendEmail('gerrit@@meinemail.de',"FHEM Batterie-Warnung","@: Batteriewarnung %") ;;\
  } \
}

das kommt dabei raus:

2012.12.04 20:58:32 3: n_batt_chk return value: syntax error at (eval 21907) line 1, near "\    if"
syntax error at (eval 21907) line 1, at EOF
syntax error at (eval 21907) line 1, at EOF


Email senden funktioniert einwandfrei mit: { FB_mail('gerrit@meinemail.de','Subject','text 123') }

Wenn ich bei einem FHT nun fast leere Akkus einsetze wird in den Readings des FHT einwandfrei "low" angezeigt

aber sonst passiert nix.

Ich komme einfach nicht auf des Rätsels Lösung. Dazu fehlt mir der Überblick.

Ich bin nicht einmal sicher, ob ich den Eintrag der Empfängeradresse richtig gemacht habe und in welchem Log die

Warnung dann überhaupt auftauchen soll...

Please help! ;)


Gerrit



--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

m.zielinski

                                                 

Hi Gerrit,

Häng hier mal deine Routine FB_Mail an. Meine braucht bzw darf keine
Empfängeradresse haben, da meine Fritzbox automatisch die Adresse nimmt,
die auch von den täglichen Fritzbox-Logfiles genutzt wird.

Daher darf ich bei mir keine Adresse mehr anfügen.

Beim 2.Beispiel hast du die FB_Mail plötzlich sendEmail genannt - sagtst
aber spter, daß FB_Mail bei dir funktioniert ?



sub FBMail
{
  my $subject = shift;
  my $text = shift;
  my $ret = "";

  print "Subject: $subject\nText: $text\n";

  $ret .= system("/bin/echo '$text' > /var/tmp/body.txt | /sbin/mailer -i
/var/tmp/body.txt -s '$subject'");

  $ret =~ s,[\r\n]*,,g;        # remove CR from return-string

# Log 1, "TemplateSub($cmd) returned: $ret";
}

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Guten Morgen Michael,

oh, das sendEmail war nur hier ein Flüchtigkeitsfehler.
Ich hatte es natürlich mit FB_Mail ersetzt.
Die Routine FB_Mail ist bei mir der ungeänderte Standard von 5.3 als Teil
der FritzBoxUtils.pm.
......................................................................................................................................
sub
FB_mail($$$)
{
  my ($rcpt, $subject, $text) = @_;
  my $tmpfile = "fhem_nachricht.txt";
  system("/bin/echo \'$text\' > \'$tmpfile\' ");
  system("/sbin/mailer send -i \"$tmpfile\" -s \"$subject\" -t \"$rcpt\"");
  system("rm \"$tmpfile\"");
  Log 3, "Mail sent to $rcpt";
}
.......................................................................................................................................

In 99_myUtils habe ich die Zeile *use FritzBoxUtils;* eingefügt.
Das mailen funktioniert ja wie gesagt auch einwandfrei mit  { FB_mail('
gerrit@meinemail.de','Subject','text 123') }

Ich habe jetzt nochmal die Batterieüberwachung aus dem Wiki genommen.
Einmal im Original und einmal mit Änderung von FBMail in FB_Mail.
Also:
........................................................................................................................................

define n_batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) {\
    {*FB_Mail*('FHEM Batteriewarnung','@ %')};;\
    Log 3, "@: Batteriewarnung %";;\
    }\
  }
........................................................................................................................................
Im Log kommt mit beiden Versionen sowas wie:

2012.12.05 07:49:44 3: n_batt_chk return value: syntax error at (eval 22259) line 1, at EOF
syntax error at (eval 22259) line 1, at EOF

2012.12.05 07:50:53 3: n_batt_chk return value: syntax error at (eval 22260) line 1, at EOF
syntax error at (eval 22260) line 1, at EOF

2012.12.05 07:51:12 3: n_batt_chk return value: syntax error at (eval 22261) line 1, at EOF
syntax error at (eval 22261) line 1, at EOF

2012.12.05 07:55:01 3: n_batt_chk return value: syntax error at (eval 22262) line 1, at EOF
syntax error at (eval 22262) line 1, at EOF


Was tun, sprach Zeus?

Grüße
Gerrit



Am Mittwoch, 5. Dezember 2012 06:58:57 UTC+1 schrieb Michael Zielinski:
>
> Hi Gerrit,
>
> Häng hier mal deine Routine FB_Mail an. Meine braucht bzw darf keine
> Empfängeradresse haben, da meine Fritzbox automatisch die Adresse nimmt,
> die auch von den täglichen Fritzbox-Logfiles genutzt wird.
>
> Daher darf ich bei mir keine Adresse mehr anfügen.
>
> Beim 2.Beispiel hast du die FB_Mail plötzlich sendEmail genannt - sagtst
> aber spter, daß FB_Mail bei dir funktioniert ?
>
>
>
> sub FBMail
> {
>   my $subject = shift;
>   my $text = shift;
>   my $ret = "";
>
>   print "Subject: $subject\nText: $text\n";
>
>   $ret .= system("/bin/echo '$text' > /var/tmp/body.txt | /sbin/mailer -i
> /var/tmp/body.txt -s '$subject'");
>
>   $ret =~ s,[\r\n]*,,g;        # remove CR from return-string
>
> # Log 1, "TemplateSub($cmd) returned: $ret";
> }
>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo,

beim mehrmaligen lesen meiner Nachricht ist mir aufgefallen, dass FB_Mail
in der FritzBoxUtils ja FB_*m*ail heisst. *aargh*
Habe es nun angepasst und der Log zeigt:

2012.12.05 09:21:16 3: n_batt_chk return value: Not enough arguments for main::FB_mail at (eval 23057) line 1, near "'HMSWohnzimmer battery: ok')"

2012.12.05 09:21:50 3: n_batt_chk return value: Not enough arguments for main::FB_mail at (eval 23058) line 1, near "'Wohnzimmer battery: ok')"

2012.12.05 09:22:40 3: n_batt_chk return value: Not enough arguments for main::FB_mail at (eval 23059) line 1, near "'Heizungsraum battery: ok')"

2012.12.05 09:22:52 3: n_batt_chk return value: Not enough arguments for main::FB_mail at (eval 23060) line 1, near "'Badezimmer battery: ok')"

2012.12.05 09:24:08 3: n_batt_chk return value: Not enough arguments for main::FB_mail at (eval 23061) line 1, near "'Dach battery: ok')"

Darf ich das schon mal als Fortschritt bezeichnen?
Was klemmt da jetzt noch?

Gruß
Gerrit


>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Soweit ich das erkennen kann erwartet FB_Mail einen dritten Parameter beim
Aufruf. Also dürfte

FB_Mail('FHEM Batteriewarnung','@ %',*''*)


funktionieren.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo,

Also:
.........................................................................................
define n_batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) {\
    {FB_mail('FHEM Batteriewarnung','@ %','')};;\
    Log 3, "@: Batteriewarnung %";;\
    }\
  }
..........................................................................................

Aktuell keine Einträge mehr im Log.
Die Funktion kann ich mangels Möglichkeit ,vom Arbeitsplatz aus die
Batterien zu entleeren, leider erst heute Abend testen. ;)
Wo taucht denn bei einem [Bb]attery low der Log-Eintrag überhaupt auf und
wie sieht er aus?
Und was steht in der Mail?
Ohne Perl-Kenntnisse kann ich mir das einfach nicht zusammenreimen.

Vielen Dank für Eure Hilfe! Klasse!

Gruß
Gerrit

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hi Gerrit,

schau mal eine Weile in deinen Event Monitor

Das sind die Meldungen, die von den notifys ausgewertet werden.
In deinem Fall sucht das notify n_batt_chk nach "Battery" oder "battery"
und wird aktiv, wenn da nicht "ok" hinter steht.

Perl Regexp ist mächtig (und) komplex, und bietet Lesestoff für Tage und
Wochen :-)

VG
Ralf

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Ralf,

**:[Bb]attery.* { if("%" !~ m/ok/)* diesen Teil hatte ich schon grob
verstanden.
Das wurde in den Tiefen dieser Gruppe auch schon irgendwo erklärt.
Ich würde gerne wissen was der zweite Teil macht.
*{FB_mail('FHEM Batteriewarnung','@ %','') *schickt ja eine Mail. Wie sieht
die aus? Text? Subject?
*Log 3, "@: Batteriewarnung %";;\* schreibt irgendwas in welchen Log, das
wie aussieht?
Ich würde es gerne ungefähr wissen ohne Perl lernen zu müssen/dürfen. ;)
Dann könnte ich evtuell auftretende Fehler heute Abend besser erkennen.


Am Mittwoch, 5. Dezember 2012 10:01:04 UTC+1 schrieb dou...@m1n1.de:
>
>
> Hi Gerrit,
>
> schau mal eine Weile in deinen Event Monitor
>
> Das sind die Meldungen, die von den notifys ausgewertet werden.
> In deinem Fall sucht das notify n_batt_chk nach "Battery" oder "battery"
> und wird aktiv, wenn da nicht "ok" hinter steht.
>
> Perl Regexp ist mächtig (und) komplex, und bietet Lesestoff für Tage und
> Wochen :-)
>
> VG
> Ralf
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Sini

                                                         

Hallo Ralf,

meiner Meinung nach brauchst du aber nicht unbedingt leere Batterien
einsetzen.

Ich teste meine Warnung immer hiermit:

trigger HeizungWZ Battery:low

Ich nutze ebenfalls das Script aus dem Wiki und damit funktioniert es...


Grüße...


Sini

Am Mittwoch, 5. Dezember 2012 10:15:44 UTC+1 schrieb tirreG:
>
> Hallo Ralf,
>
> **:[Bb]attery.* { if("%" !~ m/ok/)* diesen Teil hatte ich schon grob
> verstanden.
> Das wurde in den Tiefen dieser Gruppe auch schon irgendwo erklärt.
> Ich würde gerne wissen was der zweite Teil macht.
> *{FB_mail('FHEM Batteriewarnung','@ %','') *schickt ja eine Mail. Wie
> sieht die aus? Text? Subject?
> *Log 3, "@: Batteriewarnung %";;\* schreibt irgendwas in welchen Log, das
> wie aussieht?
> Ich würde es gerne ungefähr wissen ohne Perl lernen zu müssen/dürfen. ;)
> Dann könnte ich evtuell auftretende Fehler heute Abend besser erkennen.
>
>
> Am Mittwoch, 5. Dezember 2012 10:01:04 UTC+1 schrieb dou...@m1n1.de:
>>
>>
>> Hi Gerrit,
>>
>> schau mal eine Weile in deinen Event Monitor
>>
>> Das sind die Meldungen, die von den notifys ausgewertet werden.
>> In deinem Fall sucht das notify n_batt_chk nach "Battery" oder "battery"
>> und wird aktiv, wenn da nicht "ok" hinter steht.
>>
>> Perl Regexp ist mächtig (und) komplex, und bietet Lesestoff für Tage und
>> Wochen :-)
>>
>> VG
>> Ralf
>>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Sini

                                                         

Sorry,

ich meinte natürlich Gerrit und nicht Ralf...


Grüße...


Sini

Am Mittwoch, 5. Dezember 2012 10:40:29 UTC+1 schrieb Sini:
>
> Hallo Ralf,
>
> meiner Meinung nach brauchst du aber nicht unbedingt leere Batterien
> einsetzen.
>
> Ich teste meine Warnung immer hiermit:
>
> trigger HeizungWZ Battery:low
>
> Ich nutze ebenfalls das Script aus dem Wiki und damit funktioniert es...
>
>
> Grüße...
>
>
> Sini
>
> Am Mittwoch, 5. Dezember 2012 10:15:44 UTC+1 schrieb tirreG:
>>
>> Hallo Ralf,
>>
>> **:[Bb]attery.* { if("%" !~ m/ok/)* diesen Teil hatte ich schon grob
>> verstanden.
>> Das wurde in den Tiefen dieser Gruppe auch schon irgendwo erklärt.
>> Ich würde gerne wissen was der zweite Teil macht.
>> *{FB_mail('FHEM Batteriewarnung','@ %','') *schickt ja eine Mail. Wie
>> sieht die aus? Text? Subject?
>> *Log 3, "@: Batteriewarnung %";;\* schreibt irgendwas in welchen Log,
>> das wie aussieht?
>> Ich würde es gerne ungefähr wissen ohne Perl lernen zu müssen/dürfen. ;)
>> Dann könnte ich evtuell auftretende Fehler heute Abend besser erkennen.
>>
>>
>> Am Mittwoch, 5. Dezember 2012 10:01:04 UTC+1 schrieb dou...@m1n1.de:
>>>
>>>
>>> Hi Gerrit,
>>>
>>> schau mal eine Weile in deinen Event Monitor
>>>
>>> Das sind die Meldungen, die von den notifys ausgewertet werden.
>>> In deinem Fall sucht das notify n_batt_chk nach "Battery" oder "battery"
>>> und wird aktiv, wenn da nicht "ok" hinter steht.
>>>
>>> Perl Regexp ist mächtig (und) komplex, und bietet Lesestoff für Tage und
>>> Wochen :-)
>>>
>>> VG
>>> Ralf
>>>
>>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Hallo Sini,

super, das funktioniert tatsächlich besser als mit den Batterien. ;)
Im Log steht nun:

2012.12.05 10:42:53 3: Mail sent to FHEM Batteriewarnung
2012.12.05 10:42:53 3: Dach: Batteriewarnung Battery:low

Es kommt aber keine Mail an. *grummel*

ich interpretiere das jetzt mal so:
Der Eintrag im Log funktioniert wunderbar.
Eine Mail wird versendet an FHEM Batteriewarnung.
Ich hätte sie aber gerne an gerrit@meinemail.de.
Fühlt sich an wie kurz vor dem Durchbruch ;)


Gruß
Gerrit

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

...um so was zu testen verwende ich die Kommandozeile von fhem.

gib doch mal ein

{Log 3,"Testeintrag"}

und schau danach ins Logfile.
Gleiches geht mit der Mail Funktion.

Einfach mal

{FB_mail('FHEM Batteriewarnung','@ %','')}

Eingeben (aber vorher die Variablen ersetzen...

Dabei fällt mir auf, das FB_mail als ersten Parameter die Email Adresse
haben will...

So sähe das in der fhem.cfg aus:
define Schalt notify wz_Lampe:on { fb_mail ('xxx@@xx','endlich','Wohnzimmer
Lampe ist an')   }

Und so in der Kommandozeile... (ein @ weniger!!!))
{ fb_mail ('xxx@xx','endlich','Wohnzimmer Lampe ist an')   }


--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Kaum macht man es richtig, funktioniert es! *jubel*

.*:[Bb]attery.* { if("%" !~ m/ok/) {
    {FB_mail('gerrit@@meinemail.de','FHEM Batteriewarnung','@ %')};
    Log 3, "@: Batteriewarnung %";
    }
  }

Die Mailadresse war also der anfangs fehlende dritte Parameter und muss (bei mir) auch so eingetragen werden (mit doppel@).
Das @ steht für den Devicenamen und das % für den Zustand.
Im Log steht dann:
*2012.12.05 11:02:24 3: Dach: Batteriewarnung Battery:low*

Die Mail mit Betreff *FHEM Batteriewarnung* kommt mit dem Text: *Dach Battery:low*

Schwere Geburt, aber nun läuft's ;)

Ich danke Euch!
Gerrit




--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com