Hauptmenü

Email Versand mit Anhang

Begonnen von inesa394, 04 Mai 2014, 16:55:58

Vorheriges Thema - Nächstes Thema

inesa394

Hallo

Ich möchte gern mit hilfe eines Bewegungsmelders und IPCAM mit Pushover
und per email Bilder zusenden lassen die mit meiner Webcam aufgenommen wurden.
Das Pushover funktioniert es soweit nur per email bekomme ich zwar eine Nachricht aber es wird kein bild mit versendet
Hier das notify
define not_IPCam_Push notify ipcam {system ("curl -s -F 'token=xxxxxxxxxxxxxxx' -F 'user=xxxxxxxxxxxxxxxxxxx' -F 'message=Wohnzimmer\nBewegung erkannt\nhttp://xxxxxxx.xxxxx.xxx:8083/fhem/jsf/ipcam_snapshot.jpg' https://api.pushover.net/1/messages.json");;DebianMail('xxxxxxxxx@@gmail.com','Wohnzimmer Bild','Bewegung erkannt ',' -a /opt/fhem/FHEM/ipcam_snapshot.jpg')}
Was ist da falsch?
Wenn ich per sendEmail versende bekomme ich die email mit bild
sendemail -f xxxxxxx@gmail.com -t xxxxxx@gmail.com -u bildsenden -m bewegung -s smtp.gmail.com -xu xxxxxxxx@gmail.com -xp pass -a /opt/fhem/FHEM/ipcam_snapshot.jpg
Wenn ich die funktion DebianMail erweitere mit Pfadangabe
my $path = "/opt/fhem/FHEM/ipcam_snapshot.jpg";
wird mir ebenfalls ein email mit Bild geschickt nur dann jedesmal auch wenn die Waschmaschine fertig ist was ja nicht gewollt ist.


inesa394

Gibt es her keinen der mir helfen kann in der comman.ref wird leider auch nicht darauf eingegangen wie man das bewerkstelligen kann

topfi

Ich mache das so:

[Quelle: http://www.fischer-net.de/hausautomation/fhem/49-fhem-modul-ipcam-holt-bilder.html]
##############

1. Sendmail scheint ja bei Dir zu laufen. Für das Verschicken von n Bildern füge in 99_myUtils.pm ein:


package main; 
use strict; 
use warnings; 
use POSIX; 
sub 
myUtils_Initialize($$) 

  my ($hash) = @_; 

####################################### 
sub 
sendSnapshot(@) 

  my ($cam,$snapshots) = @_; 
  my $storage = AttrVal($cam,"storage",""); 
  my $rcpt = 'empfängeradresse@provider1.tld1'; 
  my $from = 'absenderadresse@provider2.tld3;
  my $usr = "username_beim SMTP-Provider2"; 
  my $pw = "<mein passwort>" ;
  my $smtp = "smtp.provider2.tld2:587";
  my $subj = "FHEM: Kamera $cam hat eine Bewegung aufgezeichnet"; 
  my $last = ReadingsTimestamp($cam,"last",""); 
  my $mess = "Kamera $cam hat eine Bewegung am $last aufgezeichnet:"; 
  if(!-d $storage) { 
    Log 1, "IPCAM $cam storagepath does not exists: $storage"; 
    return "storagepath for $cam does not exists: $storage"; 
  } 
  if(!$last) { 
    Log 1, "IPCAM $cam no snapshots available"; 
    return "no snapshots available for $cam"; 
  } 
  my $cmd  = "sendemail -f $from -t $rcpt -s $smtp -xu $usr -xp $pw -u $subj -m $mess "; 
     $cmd .= "-o message-content-type=text -o message-charset=utf-8 -a"; 
  for (my $s=1;$s<$snapshots+1;$s++) { 
    $cmd .= " $storage/".ReadingsVal($cam,"snapshot$s",""); 
  } 
  my $ret  = `$cmd`; 
  $ret =~ s/[\r\n]//g; 
  Log 4, "IPCAM sendSnapshot: $ret"; 
  return undef; 

1;


Wenn Du schon eine 99_myUtils.pm hast, brauchst Du natürlich den Header vor "Sub sendSnapshot(@)" und die 1; am Ende nicht mehr einzugeben. Die Anführungszeichen bei den Webadressen müssen stehenbleiben.

Ich habe nun einen Tür/Fensterkontakt TF_Haustür und schicke im Auslösefall 9 Bilder von der instar-Kamera Kam2 (angenommener IP:Port: 10.0.0.8:81) in das vorher erstellte Verzeichnis /media/usb1/Haus/Kamera2 (dort Schreibrechte für FHEM vorsehen!). Jetzt definieren wir in der fhem.cfg:


define Kam2_Alarm IPCAM 10.0.0.8:81
attr Kam2_Alarm delay 5
# das ist die Zeit in Sekunden zwischen 2 Bildern
attr Kam2_Alarm path snapshot.cgi?user=Kamerauser&pwd=Kamerapasswort
attr Kam2_Alarm snapshots 9
attr Kam2_Alarm storage /media/usb1/Haus/Kamera2
attr Kam2_Alarm timestamp 0


2. Mache erst ein notify, ob die Haustür geöffnet wurde und lasse Bilder abspeichern:


define Haustuer_auf1 notify TF_Haustuer:.*open get Kam2_Alarm image


3. Mache Notify, ob die Bilder fertig geschrieben sind und maile sie unter Benutzung der oben beschriebenen Routine fort:


define Haustuer_auf_Bilder notify Kam2_Alarm:.*snapshots.* { sendSnapshot("%NAME","%EVTPART1") }


Fertig!

Möchtest Du diese 9 Bilder auch auf der FHEM-Seite anzeigen lassen (ich hab ein Dashboard dafür, das 3x3 Bilder anzeigt), dann brauchst Du 9 Einträge der Art:


define Kamera2_Alarm1 weblink image /fhem/webcam/Kamera2/Kam2_Alarm_snapshot_1.jpg
attr Kamera2_Alarm1 group K2Al1
attr Kamera2_Alarm1 htmlattr width="200" height="150" frameborder="0" marginheight="0" marginwidth="0" style="background-color: grey;; -webkit-border-radius: 10px;; -moz-border-radius: 10px;; border-radius: 10px;;"


Vorher muss im fhem-www-Verzeichnis (auf dem Raspi ist das /opt/fhem/WWW) der symbolische link auf /media/usb1/Haus gesetzt werden.

Puschel74

Hallo,

ZitatGibt es her keinen der mir helfen kann in der comman.ref wird leider auch nicht darauf eingegangen wie man das bewerkstelligen kann
Nur mal die Pferde hier nicht scheu machen  ;)
Knapp 6 Stunden nach deiner Anfangsfrage schon nachfragen ist etwas "........................" - sag ich mal so salopp.

Vielleicht hatte topfi ja ein schönes ruhiges Wochenende.
Dafür hat er dir ja heute geantwortet.
Und da hast ja explizit nochmal nach
Zitatder mir helfen kann
gefragt.
Das war nun eben topfi - übrigens, das wär ja was für Wiki @topfi  ;D
Da ich dir nicht helfen konnte hab ich auch nichts dazu geschrieben  8)

Bis jetzt  :P
Also das nächste Mal ein bischen Zeit geben bitte.
idR findet sich eigentlich immer schnell jemand der dir hilft (und auch helfen kann).
Und selbst wenn es mal ein paar Tage dauert - wir sind alle freiwillig und gerne hier (und jeder hier opfert seine Zeit - auch du  ;) ).

Und bitte nicht beleidigt sein wegen meinem Post jetzt.

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.

inesa394

Kein Problem kann auch warten dachte halt mein Problem ist hier untergegangen.
Bin eigenlich ansonst kein Drängler :)

inesa394

Hallo Topfi

Habe die sache bei Fischer auch schon probiert
hat aber bei nicht funktioniert obwohl ich die Funktion
noch um user und pass erweitert habe.Von dort bekommt
man keine Antwort wenn Probleme auftreten.
Werde es jetzt mit deinen Vorschlag testen und berichten
wenn es klappt. Danke für deine Hilfe

wmeiners

#6
Hallo zusammen!

Ich habe eine mail-function für euch, mit der man mehrere Bilder versenden kann.

Bei mir auf meinem Raspberry PI klappt es wunderbar.

Ich hoffe, ihr kommt damit klar.

Liebe Grüße
Werner

Anhang: 99_myMailUtils.pm (alte Version, neue siehe weiter hinten im Thema)
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

topfi

#7
Warum gibt es hier eigentlich nirgendwo einen "like-Button"? Den drücke ich jetzt mal imaginär. Danke für die sehr gut dokumentierte Routine. Ich probiere das demnächst aus und stelle meine Version gegebenenfalls um. Deine ist nämlich viel übersichtlicher. Außerdem steht da der Empfänger nicht im Quelltext, denn ich möchte ausgewählte Alarmmails an eine andere Adresse (meine Hauptmailadresse) schicken lassen. Die normalen Systemmails gehen an ein anderes Sammelpostfach.

Hihi, ich habe auch eine gute Stunde damit verschwendet, zu finden, dass das Dollarzeichen aus der ssl.pm gelöscht werden muss.

Ach ja, hast Du eigentlich auch ab und zu mal so eine Meldung im Log?
IPCAM Kam2_Alarm Wrong or not supported image format: error while reading source image: Eingabe-/Ausgabefehler
Dann speichert er die Serie nicht ab und schickt auch keine Mail. Kommt selten vor.

inesa394

Hallo Topfi

Habe die Funktion mal per copy paste in meine myutils
eingefügt, bekomme dann aber wie bei letzten mal vom fhem fehler gemeldet.Muss dann die emails wieder
Mit\@ maskieren damit fhem ruhe gibt.Den rest habe
ich so übernommen wie du geschrieben hast nur halt
an meine Geräte angepaßt.Es werden einfach keine emails
verschickt. Im log erscheint komischerweise auch keine
Fehlermeldung.Die Bilder werden ja gemacht und unter
/opt/fhem/FHEM abgespeichert.

Hallo Werner
Ich denke mal deine Funktion ist so ähnlich muss
dann nur meine fhem.cfg entsprechend anpassen??

topfi

Die conf-Dateien neu eingelesen hast Du aber?!
Da im log nichts steht: löst denn das notify überhaupt aus? Was passiert denn, wenn Du in die fhem-Maske einfach get Kam2_Alarm image eingibst? Werden dann neue Bilder generiert?

Was passiert, wenn man
{ sendSnapshot("%NAME","%EVTPART1") } eingibt?

wmeiners

Hi zusammen!

In der fhem.cfg beim notify muss die emailadresse mit @@ maskiert werden.
Also: ....... sendSnapshots ("AnzBilder", "me@@provicer-smtp-server.de")

In Perlcode kann man mit \@ maskieren oder einfache Hochkommas verwenden!
Also: sendSnapshots ("AnzBilder", "me\@provicer-smtp-server.de") oder besser gleich

sendSnapshots ("AnzBilder", 'me@provicer-smtp-server.de')

Ich hoffe es hilft!

Liebe Grüße
Werner
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

inesa394

Hallo topfi

Wenn ich get ipcam image eingebe werden bilder gemacht
Im log erscheint dann auch ein IPCAM ipcam snapshots: 3
Aber es wird keine email versendet. :(

Hallo wmeiners

Kannst du das mal kurz erklären wie ich das in der fhem.cfg
nuzen kann danke

wmeiners

Hallo inesa!

In der fhem.cfg muss ein notify definiert werden.

Beispiel:

define nfy_ipcam1_snapshots notify ipcam1:snapshots.* { sendmailSnapshots ("%",'you@@provider.de')}

Wichtig sind die beiden @@, es ist kein Tippfehler! Sonst wird das @ als ipcam1 interpretiert.
Das % sind die Anzahl der bilder, die mit ipcam1 get image generiert werden, abhängig von
dem attribut snapshots der cam.

Liebe Grüße
Werner
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

wmeiners

Hallo Topfi,

diese Fehlermeldung hatte ich heute auch bei  "ipcam get image" erhalten!

IPCAM Kam2_Alarm Wrong or not supported image format: error while reading source image: Eingabe-/Ausgabefehler

Ursache: cam war aus, also nicht erreichbar!

lg Werner
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

topfi

Hallo Werner,

dann liegt das bei meiner Kamera wohl daran, dass diese nebenbei auch mit ihrer eigenen Bewegungserkennung noch eine E-Mail generiert. Wenn sie doppelt beschäftigt ist, klappt das wahrscheinlich nicht immer. Das kommt aber wie gesagt nur selten vor.

inesa394

Hallo Werner

Ich bekomme diesen Fehler
"my" variable $tmp masks earlier declaration in same scope at ./FHEM/99_myMailUtils.pm line 102.
einfach rauslöschen? Eintrag ist ja doppelt
Meine mysendmail.conf sieht so aus für gmail
{accountname@gmail.com}
{passwort}
{smtp.gmail.com:465}
{tls=yes}
und das notify so
define MOTION.not.04 notify ipcam:snapshots.* { sendmailSnapshots ("3",'inesaxxx@@gmail.com')}

angepaßt habe ich dann noch den Pfad zu den Bildern

sub sendmailSnapshots{
  my ($cnt, $to) = @_;
   my $subj = 'ipcam: Moving-Alarm';
   my $text = "Attention:\n\n";
  my $file = '/opt/fhem/FHEM/ipcam_snapshot_';
   my $ext = '.jpg';   
Trotzdem kommt nicht bei mir an

Gruß Inesa

inesa394

Zwischenzeitlich habe ich mal wieder zeit gefunden und meinen fehler gefunden.
In dem Script von Werner mußte diese zeile angepaßt werden
$nr = sprintf ("%02d", $i); in  $nr = sprintf ("%01d", $i);
Da ipcam die bilder mir als ipcam_scnapshot_1.jpg abgelegt hatte und
sendEmail nach ipcam_scnapshot_01.jpg suchte.
Jetzt funktioniert jedenfalls alles danke noch für das Script.

wmeiners

hallo inesa,

das ist richtig. Ich habe die Datei so verändert, dass man nun bis 9 oder halt bis 99 Dateien
übermitteln kann.

Ich hänge die aktualisierte Version 1.2 an!

Liebe Grüße
Werner
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

juniorfux

Guten Abend,

sorry, dass ich auf dem alten Thema herumhacken muss, aber leider komme ich genau mit dem Teil nicht weiter :(

Ich habe die 99_myUtils.pm soweit zum laufen bekommen, dass die Mail mit Anhang rausgeht.

Überwachen möchte ich das Keyamtic der Haustüre.

Das Notify, dass bei Aktion der Keymatic die Bilder auf den Fhem-Server verschubst läuft ebenfalls sauber.
Leider reagiert das Notify zum Versand der Mail etwas "über".

Es sieht so aus:

EG_Kamera_Flur:.*snapshots.* sleep 5; { sendSnapshot("%NAME","%EVTPART1")


Nun ist es so, dass EG_Kamera_Flur scheinbar mehrfach das Reading "snapshots = 9" während der Übertragung ändert.
Habe mal ein LOG für EG_Kamera_Flur angelegt und dort erscheinen binnen weniger Sekunden mehrere Einträge.
Achso, es sollen 9 Bilder im Abstand von 1 Sekunde erstellt werden.
Braver Weise sendet das Notify dann leider auch so um die 11 Mails mit den Bildern im Anhang an die Mail-Adresse.


Bin völlig ratlos wie ich das in den Griff bekomme, sleep verzögert den Mail-Angriff lediglich, die Readings werden aber weiterhin abgearbeitet.

Ich hoffe Ihr könnt mir nochmal helfen.


Viele Grüße

Manuel

wmeiners

Hallo Manuel,
so wie ich es einschätze, ist für die 11 emails das notify verantwortlich, dass die mails mit "get ipcamxx image" von der cam holt. Denn nachdem die Bilder geholt wurden, folgt das event "ipcamxx:snapshots.*"!
Schau es dir doch mal im Event monitor an.

Liebe Grüße
Werner
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

juniorfux

Guten Morgen Werner,

ja, genau so sieht es auch aus :( Bei dem Abholvorgang wird das Reading mehrfach mit "9" überschrieben und bei jedem Überschreiben läuft mein notify los.
Hast Du eine Idee, wie ich das Notify so einbremse, dass es auf das erste reagiert, dann aber X schläft, oder erst nach x Event reagiert, und dann die Mail abschickt.

Ich habe zwar schon ein bisschen in fhem gearbeitet, aber die Nuss ist mir zu hart.

Sorry.

Manuel

wmeiners

Hallo Martin,
wie sieht dein notify aus, dass die Bilder mit "get image x" holt aus. Welches Device gibt das Event hierfür?
Ist es die Cam, ein Bewegunsmelder oder ...?
Hier musst du ansetzen.

Liebe Grüße
Werner
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

juniorfux

Morgen Werner,

ich vermute, ich weiß was du meinst, aber hier die Aufstellung des Ganzen:

An der Haustür ist eine Keymatic im Einsatz, diese soll später bei unerlaubter Öffnung die Mail auslösen.

Derzeit sieht das Notfiy so aus:

EG_Flur_HT.*{fhem ("get EG_Kamera_Flur image")}

dannn werden die Bilder verarbeitet:

EG_Kamera_Flur:.*snapshots.* sleep 5; { sendSnapshot("%NAME","%EVTPART1") }

Viele Grüße

Manuel

wmeiners

Hallo Martin,
genau hier must du ansetzen!
EG_Flur_HT.*{fhem ("get EG_Kamera_Flur image")}
Alle Ereignisse (.*) des Gerätes EG_Flur_HT Triggern das notify!

Du musst es einschränken. Dazu schaue dir im Event Monitor an, welche Ereignisse es sind und dann wähle das richtige aus.
Beispiel:
EG_Flur_HT:Open{fhem ("get EG_Kamera_Flur image")}

Werner
FHEM auf Raspberry Pi 3
2x cul (FS20, Homematic)
USV Selbstbau

TiPpFeHlEr

Hallo,

ich versuche nun auch Bilder einer Cam per mail zu senden.

was klappt:
1. Bilder per notify aufnehmen lassen und speichern
2. nach erfolgreichen speichern email senden

was nicht klappt:

1. Bilder anhängen

hier mal die sendSnapshot(@) sub rutine in der 99myUtils

#########################  Sende Bilder an Email  ##############
sub
sendSnapshot(@)
{
  my ($cam,$snapshots) = @_;
  my $storage = AttrVal($cam,"storage","");
  my $rcpt = 'xxxxx@xxx.de';
  my $from = "xxxxx\@xxx.de";
  my $usr = "xxxxx";
  my $pw = "xxxxx";
  my $smtp = "smtp.xxx.de:25";
  my $subj = "FHEM: Kamera $cam hat eine Bewegung aufgezeichnet";
  my $last = ReadingsTimestamp($cam,"last","");
  my $mess = "Kamera $cam hat eine Bewegung am $last aufgezeichnet:";
  Log 1, "IPCAM $cam : $storage";
  if(!-d $storage) {
    Log 1, "IPCAM $cam storagepath does not exists: $storage";
    return "storagepath for $cam does not exists: $storage";
  }
  if(!$last) {
    Log 1, "IPCAM $cam no snapshots available";
    return "no snapshots available for $cam";
  }
  my $cmd  = "sendemail -f $from -t $rcpt -s $smtp -xu $usr -xp $pw -u $subj -m $mess ";
     $cmd .= "-o message-content-type=text -o message-charset=utf-8 -a";
  for (my $s=1;$s<$snapshots+1;$s++) {
    $cmd .= " $storage/".ReadingsVal($cam,"snapshot$s","");
  }
  my $ret  = `$cmd`;
  $ret =~ s/[\r\n]//g;
  Log 4, "IPCAM sendSnapshot: $ret";
  return undef;


wo liegt der Fehler???

mfg Maik

TiPpFeHlEr

Fehler gefunden!

es lag nicht an der 99MyUtils , der aufruf in FHEM war falsch (veraltet)

alt: Cam1:.*snapshots.* { sendSnapshot("%NAME","%EVTPART1") }
geht so nicht mehr seit Version 5.7

neu Cam1:.*snapshots.* { sendSnapshot("$NAME","$EVTPART1") }
nun geht auch der Dateiversand.

mfg maik