FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Alex85 am 09 Januar 2013, 18:37:09

Titel: Batteriewarnung - Problem mit E-Mails
Beitrag von: Alex85 am 09 Januar 2013, 18:37:09
Hallo zusammen,

habe folgendes in mein FHEM eingebaut um eine Warnung zu bekommen wenn der Batteriestatus auf low geht:

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


Funktioniert auch soweit prima. Leider etwas zu gut.
Ich werde mit Warn-mails zugespamt.

LOG meiner FritzBox:

04.01.13

17:41:04

E-Mail-Zustellung gescheitert. SMTP-Server meldet: "550 5.7.1 Send quota exceeded, try again in 22738 seconds".

Wie kann ich erreichen, dass diese Benachrichtigung nur beim initialen Ändern des Status auf low kommt und nicht andauernd.Desweiteren würde ich noch gerne einen 2. Empfänger ins CC setzen für diese Nachricht.
Vielen Dank schonmal für eure Hilfe.
Alex
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: Puschel74 am 09 Januar 2013, 18:52:26
Hallo,

Willst du nur einmal pro Gerät ne Mail bekommen oder generell nur die erste Batteriewarnung seit rücksetzen?

Grüße
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: LaLeLu am 10 Januar 2013, 07:07:28
Lasse Dir doch einmal am Tag die Mails zusenden:

define n_batterie_check notify .*:.*[Bb]attery.* {  \
    my $myNow = sprintf("%%02d:%%02d:%%02d", $hour, $min, $sec);;\
   if("%" !~ m/ok/ and $myNow gt "19:00:00" and $myNow le "20:00:00") {\
     {Log 3, ('  n_batterie_check Notify: @: Batteriewarnung %') }\
      FB_mail('deine.email@@adresse.de',"FHEM Batterie-Warnung","@: Batteriewarnung %") ;;\
  } \
}
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: Puschel74 am 10 Januar 2013, 09:22:03
Hallo und Guten Morgen,

und das klappt das nur einmal am Tag Mails rausgehen?
Oder kann es passieren das zwischen 19 Und 20 Uhr dann im Minutentakt Mails einrauschen?

Grüße
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: Alex85 am 10 Januar 2013, 09:59:22
Ich hätte gerne nur die erste Warnung seit der Status der Batterie des Geräts von OK auf low geht (und umgekehrt).
Also Batterie für irgendein Gerät ist low / state wechselt auf low -> ich bekomme eine Mail.
Das Problem ist behoben (Batteriewechsel) / state wechselt zurück auf OK -> ich bekomme erneut eine Mail, dass das Problem behoben ist.
 
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: LaLeLu am 10 Januar 2013, 19:25:02
Für mich ist es so genau richtig. Es kommen halt ein paar Mails, aber dann wechsele ich die Batterien auch schnell und übersehe es nicht.
Falls doch nicht, werde ich am nächsten Tag eben wieder erinnert.

Du kannst jedoch auch den Zeitraum auf z.B. 5 Minuten stellen und alles ist auch gut.

Alle anderen Konstrukte gehen natürlich auch. Z.B. über ein if ... else mit einem Dummy, der auf "gesendet" gesetzt wird und danach eben den Versand verhindert.
Allerdings muss man diesen dann wiederum auch irgendwann wieder reseten.
So etwas ist mir aber in diesem Fall zu aufwändig. Die Batterien halten ja für mein Empfinden sehr lange.

Aber vielleicht hat ja noch jemand einen anderen Codeschnipsel?
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: UliM am 10 Januar 2013, 19:25:06
Hi,
wenn das wirklich in state steht, kannst Du mit OldValue() arbeiten, siehe http://fhem.de/commandref.html#perl (//fhem.de/commandref.html#perl)

M.Wö. steht aber der Batterie-Status nur in einem Reading, da gibt's so ne Funktion m.W. nicht.
D.h. Du müsstest den aktuellen Batteriestatus immer irgendwo hineschreiben, um beim nächsten Durchlauf prüfen zu können, ob er sich im Vergleich zum vorherigen Lauf geändert hat.
Anregung:
Link (http://forum.fhem.de/index.php?topic=10018.msg56996#msg56996)

Gruß, Uli
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: WiKa am 10 Januar 2013, 22:36:13
Zitat von: Puschel74 schrieb am Do, 10 Januar 2013 09:22kann es passieren das zwischen 19 Und 20 Uhr dann im Minutentakt Mails einrauschen?

Hallo Puschel74,
die Anzahl der Mails im o.g. Zeitraum hängt von der "Geschwätzigkeit" deiner Geräte ab.
Mein geschwätzigster Sensor liefert ca. alle 20 Sec eine Meldung.
3 Mails/Min sollte dein Mailprovider noch nicht als SPAM einordnen.

Wenn Du den "Meldezeitraum" aus dem Codebeispiel von LaLeLu auch noch auf deine Anwesenheitszeit @home/FHEM begrenzt, kannst Du die Batterien ja sofort tauschen.

Ohne eigenes kompetentes Servicepersonal @home/FHEM kannst Du ja mit der Information  bzgl. der leeren Batterie z.B. um 11:00 Uhr Unter Tage/Im Büro absolut nichts am Zustand des Sensors ändern.

Schön wäre deine angestrebte Lösung mit nur 1 Meldung/Sensor schon, der dazu notwendige Code müsste allerdings für jeden Sensor eine eigene Variable verwalten.

Lt. Murphy leidet nicht nur ein Sensor an Batterieinsuffizienz.

Weniger ist manchmal mehr.

@LaLeLu: Lieben Dank für den Code - ist übernommen und reicht mir ebenso wie dir.

VG
WiKa
 

Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: Puschel74 am 13 Januar 2013, 09:45:51
Hallo,

da ich sowieso zur Anzeige auf der Hauptseite einen Dummy benutze erlaube ich mir mal auch meinen
Teil hier rein zu kopieren ;-)

define Batterie_Leer dummy
attr Batterie_Leer eventmap /on:Batterie/off:OK/
attr Batterie_Leer webcmd OK


.*:[Bb]attery.* {
  if("%" !~ m/ok/) {
    if (Value("Batterie_Leer") eq "OK") {
      fb_mail('xxxxx.yyyyyyy@@zzzzzzz.dd','FHEM Batteriewarnung','@ %');
      fhem ("set Batterie_Leer on");
    }
    Log (3,"Mail ist schon raus");
    Log (3,"@: Batteriewarnung %");
  }
}


Logeinträge stören mich weniger ;-)
Aber so gibt es, leider?, nur eine Mail pro Auslösung - egal welches Device Batterie nicht ok meldet.
Aber im Logfile sehe ich ja dann wenn es mehr sind.

Vllt. gefällt es ja dem einen oder anderen ;-)

Grüße
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: stobor am 19 Januar 2013, 20:02:19
Das klingt ja interessant. Wie könnte ich das denn für meine HMS 100-TF Temperaturfühler übernehmen, so dass mir die FritzBox mailt?

Im Log steht immer folgendes:
2013.01.19 19:56:33 3: list KlimaGarten STATE : KlimaGarten T: -6  H: 70.3  Bat: ok

Muss in der FritzBox noch irgend etwas aktiviert werden, damit Mails verschickt werden können?

Ich habe gerade einmal folgendes probiert, doch da tat sich gar nix:
define n_batt_chk notify .*:Bat:.* { if("%" ~ m/ok/) {\
  {FB_mail('meine@@adresse.xx' (@@adresse.xx'),'FHEM Batteriewarnung','@ %')};;\
    Log 3, "@: Batteriewarnung %";;\
    }\
  }


Danke für Hilfe.
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: Seppel18 am 20 Januar 2013, 12:50:03
Ich hab den Push-Service auf der Fritzbox aktiviert.

als notify
hms2:T:.* {if (%EVTPART1 < 9) { fb_mail('xxxxx@@xxxxx.com' (@@xxxxx.com'),'hms2 %EVTPART1','HMS2 ist zu kalt') }}

funktioniert

mfg Frank
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: AnonymousHolger am 20 Januar 2013, 12:53:27
Ich finde das Thema BattWarnung im Log oder EMail prima, komme aber wohl momentan nicht dazu.

Damit die Info nicht verloren geht, könnt Ihr das finale Ergebnis vielleicht in den CodeSnippets posten ?

Dieses Thema hat bestimmt viele Anhänger !

Danke

Gruss

Holger
Titel: Aw: Batteriewarnung - Problem mit E-Mails
Beitrag von: stobor am 20 Januar 2013, 13:58:43
define nBatChk notify KlimaGarten:T:.* {if (%EVTPART1 < 9) { use FritzBoxUtils;; FB_mail('email@@adresse.com' (@@adresse.com'),'KlimaGarten %EVTPART1','KlimaGarten...')}}

scheint zu funktionieren, wobei ich das
use FritzBoxUtils;;
noch einfügen musste. Kann das auch einmal zentral außerhalb des define in der fhem.cfg passieren?

Wie kann ich denn jetzt aber den Batteriezustand prüfen?
2013.01.19 19:56:33 3: list KlimaGarten STATE : KlimaGarten T: -6 H: 70.3 Bat: ok
Titel: Antw:Batteriewarnung - Problem mit E-Mails
Beitrag von: Wolle02 am 19 April 2015, 09:40:50
Hallo zusammen,

ich hole diesen alten Thread mal wieder hoch, weil ich die Anregung von hier habe, aber bei der Umsetzung gerade auf ein Problem stoße.

Ich möchte auch eine Benachrichtigung bei einer schwachen Betterie realisieren. Allerdings soll diese Benachrichtigung nur alle Stunde (später vielleicht sogar in einem noch längeren Intervall) kommen. Hierzu habe ich mir aus verschiedenen Beiträgen mal diesen Code für ein Notify zusammen geklaut:

.*:[Bb]attery:.* {(if($EVENT !~ m/ok/) && (time - ReadingsVal("Batterie_Leer","comment",time)) > 3600) {
                     system("/usr/syno/bin/synonotify fhemBatteryWarning");
                     Log 3, "+++Batteriewarnung $EVENT gesendet per Synonotification für $NAME";
                     fhem("attr Batterie_Leer comment ".time)}}


Wenn ich das Notify nun versuchsweise triggere bekomme ich leider immer folgenden Syntaxfehler:

Batterie_check_n return value: syntax error at (eval 107054) line 1, near "(if"
syntax error at (eval 107054) line 4, near "}}"


Was überseh ich hier? Ich find den Fehler nicht. Wahrscheinlich seh ich den Wald vor lautet Bäumen nicht.

Gruß
Wolle
Titel: Antw:Batteriewarnung - Problem mit E-Mails
Beitrag von: Wolle02 am 20 April 2015, 13:39:00
Hab des Rätsels Lösung dann doch noch gefunden. Wie gesagt, manchmal sieht man den Wald vor lauter Bäumen nicht. Selbstverständlich gehört die öffnende runde Klammer hinter das if und nicht vor das if.
Aus dem ReadingsVal musste ich noch ein AttrVal machen und jetzt läuft das Notify wie es soll  ;D

Vielen Dank fürs Lesen.

Gruß
Wolle  8)