:: fischer-net.de

Wer ist Online

Aktuell sind 98 Gäste und keine Mitglieder online

Tagcloud

Am Beispiel eines Wassermelder HMS 100 W stelle ich hier eine Möglichkeit vor, wie FHEM über ein eintretendes Ereignis alarmieren kann.

Selbige Lösung kann selbstverständlich auch mit anderen Komponenten wie z.B. Kontaktmelder HMS 100 TFK, Temperatur- / Luftfeuchte-Sensor HMS 100 TF, FS20 PIRI-2 Zweikanal Funk-Bewegungsmelder, FS20 SR Funk-Regensensor umgesetzt werden.

Es kommt lediglich darauf an, welches Event über ein notify ausgewertet werden soll.

Im ersten Schritt wird ein Dummy-Device erstellt. In dem Beispiel wird es WATER.dum heissen.

# Wasseralarm
define WATER.dum dummy
set    WATER.dum off

Wichtig dabei ist, dass das Dummy Device gleich nach der Definition auf off gesetzt wird.

Dann wird der eigentliche Sensor definiert. In dem Beispiel heisst er KG.ga.WD.01. Siehe auch mein Beitrag zu der Benennung von Devices.

# HMS100-W Wassersensor
define KG.ga.WD.01 HMS 1002
attr   KG.ga.WD.01 alias Sensor Tiefgarage
attr   KG.ga.WD.01 model hms100-w

Nun wird das eigentliche Notify definiert. Das Device KG.ga.WD.01 wird auf das Event .*Water.*Detect.*on.* überwacht.

# HMS100-W Wassersensor notify
define WD.not.01 notify KG.ga.WD.01:.*Water.*Detect:.*on.* {\
  if (ReadingsVal("WATER.dum","state","off") eq "off") {\
    fhem("set WATER.dum on");;\
    fhem("define at.WATER.dum.off at +00:30:00 set WATER.dum off");;\
    `/usr/local/bin/fhem2mail SMS WATER "Tiefgarage"`;;\
    Log 3, "HMS @ Water detection %, send notification via eMail/SMS";;\
  }\
}

Tritt das Event ein, wird der Status des Dummy Devices WATER.dum auf on gesetzt aber nur wenn der aktuelle Status aktuell off ist. Gleichzeitig wird ein neuer Job at.WATER.dum.off definiert, der das Dummy Device WATER.dum nach 30 Minuten wieder auf off setzt. Parallel zu dem neuem Job wird über ein Script eine Nachricht versendet und ein Logeintrag gesetzt. Würde man an dieser Stelle die Prüfung des Dummy Devices weglassen, dann würde bei jedem eintretenden Event erneut eine eMail gesendet. Somit ist gewährleistet das nur alle 30 Minuten eine Benachrichtigung erfolgt.

Da FHEM inzwischen auf den unterschiedlichsten Systeme betrieben wird und das Versenden einer eMail sich auf diesen zum Teil stark unterscheidet, greife ich in diesem Beispiel auf den Stand-Alone Befehl SendEmail zurück. Dieser kann von der Homepage des Entwickler heruntergeladen werden und ist auf fast allen Systemen (Linux, Windows) sofort einsatzbereit. SendEmail ist komplett in Perl geschrieben und benötigt in der Regel keine weiteren Perl-Module.

Im folgenden Script fhem2mail müssen die entsprechenden email-Adressen angepasst werden.

#!/bin/bash
BASENAME="$(basename $0)"
DST=$1
TYP=$2
ARG=$3
FRM="<absender-email>"
case $DST in
  SMS)
    RCP="<mail2sms-empfänger>"
    ;;
  MAIL)
    RCP="<email-empfänger>"
    ;;
  *)
    ;;
esac
case $TYP in
  BATTERY)
    SUB="FHEM: ${ARG}"
    TXT="Batterie schwach: ${ARG}"
    ;;
  FIRE)
    SUB="FHEM: FEUERALARM ${ARG}"
    TXT="Feueralarm wurde ausgeloest!"
    ;;
  GAS)
    SUB="FHEM: GASALARM ${ARG}"
    TXT="Gasalarm wurde ausgeloest!"
    ;;
  MOTION)
    SUB="FHEM: BEWEGUNG"
    TXT="Bewegungsmelder wurde ausgeloest!"
    ;;
  WATER)
    SUB="FHEM: WASSERALARM: ${ARG}"
    TXT="Wasseralarm wurde ausgeloest!"
    ;;
  *)
    SUB="FHEM: ${ARG}"
    TXT="${ARG}"
    ;;
esac
/usr/bin/sendemail -f ${FRM} -t ${RCP} -u ${SUB} -m ${TXT} -q -o message-content-type=text
exit 0

 

Bewertung insgesamt (0)

0 von 5 Sternen
Melde Dich an um zu kommentieren
  • Gast - Oliver Heinecke

    Hallo da ich mich jetzt verstärkt in fhem einarbeite<br />aber ich neuling bin in sachen linux unso.<br />ist es möglich den senor über die weboberfläche von fhem zu programieren?<br />mein sensor bei fhem heißt Aussensensor <br />der soll bei einer bestimmten temperatur eine e-mail senden.<br />ist das möglich? <br />danke für eure hilfe im vorraus<br />oli heinecke

  • Selbstverständlich ist das möglich. Auch hier arbeitet man mit dem Helper-Modul notify. In der commandref.html gibt es zu notify einige Beispiele.

  • Gast - oliver heinecke

    hi alle zusammen <br />also ich habe jetzt schon für meine verhältnisse viel bei fhem <br />geschaft und es macht spass habe meine temperatursensoren<br />mit plot eingerichtet meine lampen laufen auch super mit notify <br />aber ich bekomme es nicht hin das die ds eine e-mail an mich mit sendEmail zu versenden <br />1. wo muss ich das verzeichnis von sendEmail bei der ds hinkopieren<br />2.wie führe ich sendEmail aus (benutze putty)<br />würde mich über ein kleine hilfe freuen <br />ziel meiner Übung ist wenn bei meiner heizung die vorlauf temperatur unter 20 C geht mir eine mail zusenden <br />danke für eure hilfe <br />gruss oliver heinecke

  • Gast - Oliver Heinecke

    hallo alle zusammen bin immer noch dabei über die syno box<br />bei event eine mail zusenden.<br />habe sendemail in das verzeichnis /usr/local/FHEM/Mail <br />kopiert als root.<br />habe das Script fhem2mail im gleichen verzeichnis verzeichnis<br />gespeichert<br />was muss ich jetzt bei fhem eintragen ( config ? )<br /><br />danke für eure Mühe<br />gruss oliver

  • Hallo Oliver,<br /><br />eigentlich steht alles im obigen Beispiel. Da Du das Script und sendEmail in einen anderen Pfad kopiert hast, musst Du den Pfad auch im Script und in der FHEM Konfiguration anpassen.<br /><br />Das obige Beispiel zeigt den Aufruf des Scriptes im notify.<br /><br />Gruss Martin

  • Gast - Oliver

    Moin ,Moin alle zusammen <br />nach vielen lesen bin ich jetzt endich soweit das ich über telnet<br />(Putty) den befehl für E-Mail eingeben kann.<br />so wenn ich eingebe sh fhem2mail MAIL WATER (danke für das gute Script) bekomme ich eine E-mail .(lange gebraucht aber verstanden) .Was muss ich den in der 99_my Utils.pm eingeben damit das über die komandozeile in fhem geht .<br /><br />mfg Oliver Heinecke

  • Gast - Dieter

    Hallo Martin!<br />Ich habe Dein Beispiel fast 1:1 übernommen und das funktioniert,<br />aber nun mit meiner Unkenntnis will es mir nicht gelingen, ein <br /> at*{sunset(0,"20:00","23:00")} für meinen Bewegungsmelder ein zu bauen, da der Bewegungsmelder "HM-Sen-MDIR-SM" jetzt auch am Tag die Eingangslampe leuchten läßt. Der "HM-Sen-MDIR-SM" war keine gute Wahl. Aber vielleicht gelingt es mir mit Deiner Hilfe, die Funktion sunset zufriedenstellend einzubauen.<br />Besten Dank im Voraus.<br />mfG. Dieter

  • Da kann ich Dir leider auch nichts weiter zu sagen, als das was in der Beschreibung zu SUNRISE_EL steht.<br /><br />Zum Beispiel sollte ein<br />define light.off at *{sunrise(0,'07:00',)} set lamp of<br />jeden Tag die Lampe nach Sonnenaufgang ausschalten aber nicht von 07:00 Uhr.

  • Gast - Schmidt

    Hallo,<br /><br />Ichbin gerade beim UMsteigen von CCU auf FHEM.<br />Wo werden die o.g. Scripte gespeichert ?<br />In 99_Utils.pm, 99_myUtils.pm etc. <br /><br />VG wschmidt

  • Gast - Volker Wagner

    Hallo, <br />ich bin gerade dabei, das Programm sendmail auszuprobieren.<br />Anscheinend funktioniert die Authentifizierung nicht. Es kommt die Fehlermeldung "ERROR => No TLS support! SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL)". Die meiner Meinung nach notwendigen libaries (perl-io-socket-ssl - 0.999-1, perl-net-ssleay - 1.30-1) habe ich über ipkg auf meiner Synology installiert. Wo liegt mein Fehler?<br />Vielen Dank für deine Hilfe!<br />Gruß, Volker Wagner

Schnäppchen bei reichelt elektronik!
Stark reduzierte Restbestände bei Neuware

Powered by ...

 

 

reichelt elektronik – Elektronik und PC-Technik