Batteriewarnung - Problem mit E-Mails

Begonnen von Alex85, 09 Januar 2013, 18:37:09

Vorheriges Thema - Nächstes Thema

Alex85

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

Puschel74

Hallo,

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

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

LaLeLu

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 %") ;;\
  } \
}
LaLeLu

Fhem Release: 5.6 auf RaspberryPI B (wheezy)
1xFB7390, 1xCUL, 1xHM-CFG-LAN, 4xFHT, 25xFS20 (inkl. PIRA), 18xCUL_HM, 5xCUL_WS, 2xSONOS-Player, calendar, floorplan

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Alex85

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.
 

LaLeLu

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?
LaLeLu

Fhem Release: 5.6 auf RaspberryPI B (wheezy)
1xFB7390, 1xCUL, 1xHM-CFG-LAN, 4xFHT, 25xFS20 (inkl. PIRA), 18xCUL_HM, 5xCUL_WS, 2xSONOS-Player, calendar, floorplan

UliM

Hi,
wenn das wirklich in state steht, kannst Du mit OldValue() arbeiten, siehe http://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

Gruß, Uli
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

WiKa

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
 

FB7390 FW:FRITZ!OS 05.50 / RFXTRX433 FW:433_64 / ELRO AB440R (modified to IT-Code) - AB440S (IT-Code) - AB440IS (IT-Code) / Oregon THGN132N - THN132N - THGR122N / Intertechno PAR-1000 - PAR1500

Puschel74

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
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

stobor

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.
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-73-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 27642
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Seppel18

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
FHEM auf FritzBox 7390
FHZ1000 für FS20, HMLAN für HomeMatic
HM-WDS10-TH-O, HM-Sec-Win, HM-LC-Sw4-WM
FS20 SD, FS20 ST, FS20 S20-2, FS20 S4A,  FS20 TFK, FHT 80b, HMS 100 TF

AnonymousHolger

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

stobor

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
Intel NUC (Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-73-generic x86_64))  mit CUL V3.2 (Firmware 1.57 CUL868) für FS20 und CUL V3.4 (Firmware 1.57 CUL868) für HM + Arduino Mega
FHEM Revision: 27642
FS20-Schalter und Dimmer
HM Fensterkontakte, Heizungsthermostate, Temperatursensoren

Wolle02

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

Wolle02

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)