Lösung: Klingel erzeugt Bild von Foscam und sendet per Mail

WebUIs (DashUI, yahui, ...), Adapter (Hue, IRTrans, Sonos, ...), Logging, Scripting

Moderator: Co-Administratoren

womber
Beiträge: 256
Registriert: 18.05.2014, 14:42

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von womber » 30.01.2016, 18:44

Hallo,

´habe das Problem, dass ich eine Email bekomme mit nem Anhang "photo.jpg", die aber 0kb gross ist. URL in browser funktioniert. Bild hab ich da.
habe eine foscam FI9803.

package require base64

meine sendCamShot.tcl:

set SNAPSHOT_URL "http://192.168.178.46:88/cgi-bin/CGIPro ... pwd=xxxxxx"
set EMAIL_SUBJECT "es hat an der Haustuer geklingelt"
set EMAIL_BODY "siehe Anhang"
set SEND_TO "alexander@xxxxxxx.de"
set SEND_CC "michaela@xxxxxxx.de"
set SEND_FROM "alexander@xxxxxxxx.de"
set SMTP_HOST "smtp.strato.de"
set SMTP_USER "alexander@xxxxxxx.de"
set SMTP_PASSWD "xxxxxxxxx"
set SMTP_DOMAIN "strato.de"


# DEFINE EMAIL TEMPLATE
set tmpl "To: $SEND_TO
From: $SEND_FROM
Subject: $EMAIL_SUBJECT
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=\"=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk\"

--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk
Content-Type: text/plain; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 8bit

$EMAIL_BODY

--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk
Content-Type: application/octet-stream; name=\"photo.jpg\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"photo.jpg\"

{IMGDATA}
--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk--"


# DOWNLOAD THE SNAPSHOT
exec wget -q -O /tmp/snapshot.jpg $SNAPSHOT_URL

# READ SNAPSHOT INTO VARIABLE & BASE64 ENCODE
set fp [open "/tmp/snapshot.jpg" r]
fconfigure $fp -translation binary
set imgdata [read $fp]
set encodeddata [::base64::encode $imgdata]
close $fp

# REPLACE IMG DATA WITH REAL IMAGE DATA
regsub -all "{IMGDATA}" $tmpl $encodeddata tmpl

# WRITE READY EMAIL TO A TMP FILE
set fp [open "/tmp/ready.eml" w]
puts $fp $tmpl
close $fp

set config "
defaults
tls on
tls_starttls off
tls_certcheck off
logfile /var/log/email.log
account provider
host $SMTP_HOST
from $SEND_FROM
domain $SMTP_DOMAIN
auth login
user $SMTP_USER
password $SMTP_PASSWD
account default: provider
"

set fp [open "/tmp/msmtp.conf" w]
puts $fp $config
close $fp

exec chmod 0600 /tmp/msmtp.conf

# SEND EMAIL USING MSMTP
exec cat /tmp/ready.eml | msmtp -C /tmp/msmtp.conf $SEND_TO

# CLEAN UP
exec rm -f /tmp/msmtp.conf
exec rm -f /tmp/ready.eml
exec rm -f /tmp/snapshot.jpg


was mache ich falsch? ich meine email kommt ja an. Und die cam sollte eigentlich auch unterstützt werden.
Kann mir jemand helfen???

Lg
Alex
CCU2 * CCU.IO + DashUI + CCUHistorian auf Raspi 1 und 2 * * iPad 2 als Wandtablet * PocketControl HM (iPhone 6 + iPad Pro) * CUxD * Apple watch mit PocketControl HM * * 4x Amazon Alexa mit Homematic Steuerung

Martin_BY
Beiträge: 192
Registriert: 22.10.2013, 21:45

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von Martin_BY » 30.01.2016, 19:11

Die Email kommt an, weil das Skript durchläuft. Das ist schonmal gut.
Jetzt ist die Frage, was Deine Cam genau liefert, wenn man sie anspricht.
Nimm mal das rm für die snapshot.jpg raus und schau Dir das erzeugte File in /tmp an.

womber
Beiträge: 256
Registriert: 18.05.2014, 14:42

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von womber » 30.01.2016, 20:07

Unbenannt.JPG
Unbenannt.JPG (12.25 KiB) 1762 mal betrachtet
so sieht die aus... 1kb

aber wie gesagt: http://192.168.178.46:88/cgi-bin/CGIPro ... pwd=xxxxxx liefert mir ein bild im browser der cam
Unbenannt2.JPG
VG
Alex
CCU2 * CCU.IO + DashUI + CCUHistorian auf Raspi 1 und 2 * * iPad 2 als Wandtablet * PocketControl HM (iPhone 6 + iPad Pro) * CUxD * Apple watch mit PocketControl HM * * 4x Amazon Alexa mit Homematic Steuerung

Martin_BY
Beiträge: 192
Registriert: 22.10.2013, 21:45

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von Martin_BY » 30.01.2016, 20:27

Kannst Du mal auf der CCU in der Konsole
cat snapshot.jpg
ausführen?

womber
Beiträge: 256
Registriert: 18.05.2014, 14:42

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von womber » 30.01.2016, 21:04

Auf der Konsole in der ccu? Was meinst du damit?
CCU2 * CCU.IO + DashUI + CCUHistorian auf Raspi 1 und 2 * * iPad 2 als Wandtablet * PocketControl HM (iPhone 6 + iPad Pro) * CUxD * Apple watch mit PocketControl HM * * 4x Amazon Alexa mit Homematic Steuerung

womber
Beiträge: 256
Registriert: 18.05.2014, 14:42

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von womber » 31.01.2016, 11:27

ich sehe gerade, dass bahnuhr hier
bild1.jpg
bild1.jpg (92.98 KiB) 1704 mal betrachtet
wget.exe und dlls mit im ordner hat. Brauche ich das? wenn ja, woher bekomm ich das?

VG
Alex
CCU2 * CCU.IO + DashUI + CCUHistorian auf Raspi 1 und 2 * * iPad 2 als Wandtablet * PocketControl HM (iPhone 6 + iPad Pro) * CUxD * Apple watch mit PocketControl HM * * 4x Amazon Alexa mit Homematic Steuerung

bahnuhr
Beiträge: 473
Registriert: 25.02.2014, 13:42
Danksagung erhalten: 1 Mal

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von bahnuhr » 31.01.2016, 11:36

Guten Morgen,

ich glaube die Dateien brauchst du nicht. Habe Sie damals mit reingepackt um absolut sicher zu gehen (weil man sich ja nicht so genau damit auskennt).

Vergleiche nochmal das Script. m.E. müsste da der Fehler liegen.

Ich habe auch Foscam. Und bei mir funktionierts.


mfg
bahnuhr


Nachtrag:
Bin gerade am probieren (2 Foscam Bilder in einer Mail). Hab ich noch nicht hinbekommen.
Wenn jemand ein lauffähiges Script hat, bitte mal einstellen.
CCU2, iobroker, 264 Kanäle in 124 Geräten und 21 CUxD-Kanäle in 13 CUxD-Geräten

womber
Beiträge: 256
Registriert: 18.05.2014, 14:42

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von womber » 31.01.2016, 11:57

das ist meine tcl...sieht genau so aus wie bei dir bahnuhr... ich bin am verzweifeln :(
wie gesagt email kommt an aber bild ist 1kb im ordner

Code: Alles auswählen

package require base64

set SNAPSHOT_URL "http://192.168.178.46:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=admin&pwd=XXXXXX"
set EMAIL_SUBJECT "es hat an der Haustuer geklingelt"
set EMAIL_BODY "siehe Anhang"
set SEND_TO "alexander@XXXXXXX.de"
set SEND_FROM "alexander@XXXXXXX.de"
set SMTP_HOST "smtp.strato.de"
set SMTP_USER "alexander@XXXXXXX.de"
set SMTP_PASSWD "XXXXXXX"
set SMTP_DOMAIN "strato.de"


# DEFINE EMAIL TEMPLATE
set tmpl "To: $SEND_TO
From: $SEND_FROM
Subject: $EMAIL_SUBJECT
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=\"=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk\"

--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk
Content-Type: text/plain; charset=\"iso-8859-1\"
Content-Transfer-Encoding: 8bit

$EMAIL_BODY

--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk
Content-Type: application/octet-stream; name=\"photo.jpg\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"photo.jpg\"

{IMGDATA}
--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk--"
                                    
                                                             
# DOWNLOAD THE SNAPSHOT                                      
exec wget -q -O /tmp/snapshot.jpg $SNAPSHOT_URL                                                        
                                                             
# READ SNAPSHOT INTO VARIABLE & BASE64 ENCODE                                                          
set fp [open "/tmp/snapshot.jpg" r]                                                                    
fconfigure $fp -translation binary                                                                     
set imgdata [read $fp]                                                                                 
set encodeddata [::base64::encode $imgdata]                     
close $fp                                                    
                                                                
# REPLACE IMG DATA WITH REAL IMAGE DATA                
regsub -all "{IMGDATA}" $tmpl $encodeddata tmpl              
                                                                
# WRITE READY EMAIL TO A TMP FILE                            
set fp [open "/tmp/ready.eml" w]                                
puts $fp $tmpl                                                  
close $fp                                                    
                                                       
set config "                                                    
defaults                                               
tls on                                                          
tls_certcheck off                                               
logfile /var/log/email.log                                      
account provider                                                
host $SMTP_HOST                                
from $SEND_FROM                                
domain $SMTP_DOMAIN                            
auth login                                     
user $SMTP_USER
password $SMTP_PASSWD                                           
account default: provider                                    
"                                                               
                                                                
set fp [open "/tmp/msmtp.conf" w]                            
puts $fp $config                                       
close $fp                                                       
                                                       
exec chmod 0600 /tmp/msmtp.conf                                 
                                                                
# SEND EMAIL USING MSMTP                                        
exec cat /tmp/ready.eml | msmtp -C /tmp/msmtp.conf $SEND_TO     
                                               
# CLEAN UP                                     
exec rm -f /tmp/msmtp.conf                                 
exec rm -f /tmp/ready.eml                      
"exec rm -f /tmp/snapshot.jpg"
@Martin_BY:
cat snapshot.jpg hat als ausgabe in der konsole:
/tmp$ cat snapshot.jpg
<html><body><img src="../snapPic/Snap_20160131-115316.jpg"/></body></html>

kann das sein dass hier der Fehler liegt? Wenn ich in putty tclsh sendCamShot.tcl eingebe bekomm ich das als Ausgabe :shock:
Unbenannt3.JPG
VG Alex
CCU2 * CCU.IO + DashUI + CCUHistorian auf Raspi 1 und 2 * * iPad 2 als Wandtablet * PocketControl HM (iPhone 6 + iPad Pro) * CUxD * Apple watch mit PocketControl HM * * 4x Amazon Alexa mit Homematic Steuerung

Martin_BY
Beiträge: 192
Registriert: 22.10.2013, 21:45

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von Martin_BY » 31.01.2016, 12:41

@Martin_BY:
cat snapshot.jpg hat als ausgabe in der konsole:
/tmp$ cat snapshot.jpg
<html><body><img src="../snapPic/Snap_20160131-115316.jpg"/></body></html>
Du hast da also eine HTMl-Seite, in der ein Bild eingebettet ist. Das Problem kenne ich... :wink:
Da kann kein Bild herauskommen......
Schau mal, ob es einen anderen Befehl gibt, der Deiner Kamera ein "echtes" Bild entlockt.
kann das sein dass hier der Fehler liegt? Wenn ich in putty tclsh sendCamShot.tcl eingebe bekomm ich das als Ausgabe :shock:
Muss so sein, da Du die letzte Zeile Deines Scripts in "" gesetzt hast. Nimm die raus und setze ein # vor die Zeile, um sie inaktiv zu machen, solange Du den Fehler mit dem jpg suchst.

Martin_BY
Beiträge: 192
Registriert: 22.10.2013, 21:45

Re: Lösung: Klingel erzeugt Bild von Foscam und sendet per M

Beitrag von Martin_BY » 31.01.2016, 12:47

bahnuhr hat geschrieben: Nachtrag:
Bin gerade am probieren (2 Foscam Bilder in einer Mail). Hab ich noch nicht hinbekommen.
Wenn jemand ein lauffähiges Script hat, bitte mal einstellen.
Bitteschön.

Code: Alles auswählen

#!/bin/tclsh
package require base64
 
set SNAPSHOT_URL1 http://xxxxxxx
set SNAPSHOT_URL http://xxxxxxx
set EMAIL_SUBJECT "es hat an der Haustuer geklingelt"
set EMAIL_BODY "siehe Anhang"
set SEND_TO xxxxx@t-online.de
set SEND_TO1 xxxxxx@t-online.de
set SEND_FROM Homematic@xxxxx
set SEND_CC xxxxxx@t-online.de
set SMTP_HOST smtp.xxxxxx
set SMTP_USER xxxxxxx
set SMTP_PASSWD xxxxxxx
set SMTP_DOMAIN smtp.xxxxxx
# DEFINE EMAIL TEMPLATE
set tmpl "To: $SEND_TO
From: $SEND_FROM
Subject: $EMAIL_SUBJECT
MIME-Version: 1.0
Content-Type: multipart/message; boundary=\"=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk\"
 
--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk
Content-Type: text/plain
 

$EMAIL_BODY
 
--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk
Content-Type: application/octet-stream; name=\"photo.jpg\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"photo.jpg\"

{IMGDATA}
--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk


--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk
Content-Type: application/octet-stream; name=\"photo1.jpg\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"photo1.jpg\"

{IMGDATA1}
--=_542bc72c.5lV8m7jWYOrj//k2cdijZPr9Fjy8v4J0l/m4onTDRLUmUDMk--"
 
# DOWNLOAD THE SNAPSHOT
exec wget -q -O /tmp/snapshot.jpg $SNAPSHOT_URL
exec wget -q -O /tmp/snapshot1.jpg $SNAPSHOT_URL1
# READ SNAPSHOT INTO VARIABLE & BASE64 ENCODE
set fp [open "/tmp/snapshot.jpg" r]
fconfigure $fp -translation binary
set imgdata [read $fp]
set encodeddata [::base64::encode $imgdata]
close $fp

set fp [open "/tmp/snapshot1.jpg" r]
fconfigure $fp -translation binary
set imgdata1 [read $fp]
set encodeddata1 [::base64::encode $imgdata1]
close $fp
 
# REPLACE IMG DATA WITH REAL IMAGE DATA
regsub -all "{IMGDATA1}" $tmpl $encodeddata tmpl
 regsub -all "{IMGDATA}" $tmpl $encodeddata1 tmpl
# WRITE READY EMAIL TO A TMP FILE
set fp [open "/tmp/ready.eml" w]
puts $fp $tmpl
close $fp
 
set config "
defaults
tls on
tls_certcheck off
logfile /var/log/email.log
account provider
host $SMTP_HOST
from $SEND_FROM

domain $SMTP_DOMAIN
auth login
user $SMTP_USER
password $SMTP_PASSWD
account default: provider
"
 
set fp [open "/tmp/msmtp.conf" w]
puts $fp $config
close $fp
 
exec chmod 0600 /tmp/msmtp.conf
 
# SEND EMAIL USING MSMTP
exec cat /tmp/ready.eml | msmtp -C /tmp/msmtp.conf $SEND_TO $SEND_TO1

# CLEAN UP
exec rm -f /tmp/msmtp.conf                                 
exec rm -f /tmp/ready.eml                      
exec rm -f /tmp/snapshot.jpg
exec rm -f /tmp/snapshot1.jpg

Antworten

Zurück zu „CCU.IO“