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

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

Moderator: Co-Administratoren

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 » 02.01.2016, 16:50

alchy hat geschrieben:
Martin_BY hat geschrieben:Habe heute noch eine zweite Kamera in Betrieb genommen und frage mich gerade, wie man das Script wohl ändern müsste, damit 2 Bilder von 2 Kameras verschickt werden?

Code: Alles auswählen

    package require base64
     
    set SNAPSHOT_URL "http://192.168.1.22/snapshot.cgi?user=user&pwd=user"
    set SNAPSHOT_URL1 "http://192.168.1.23/snapshot.cgi?user=user1&pwd=user1"
    set EMAIL_SUBJECT "es hat an der Haustuer geklingelt"
    set EMAIL_BODY "siehe Anhang"
    set SEND_TO "your@gmail.com"
    set SEND_FROM "your@gmail.com"
    set SMTP_HOST "smtp.gmail.com"
    set SMTP_USER "your@gmail.com"
    set SMTP_PASSWD "passwort"
    set SMTP_DOMAIN "smtp.gmail.com"
    # 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\"
    {IMGDATA1}
    --=_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\"

     

    {IMGDATA}
    --=_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

    # 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
Hallo Alchy,

irgendwas passt in der Änderung für die 2 Bilder nicht, da kommt nur kryptisches Zeug in der Mail....
Die *eml darf ich hier nicht hochladen, sieht aber arg so aus als wäre das, was eigentlich ein Anhang sein soll, in einem kryptischen Buchstabensalat ausgegeben.

ChristianF
Beiträge: 395
Registriert: 27.06.2014, 21:50

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

Beitrag von ChristianF » 03.01.2016, 00:11

Das was Deine Kamera da liefert ist kein jpg Bild sondern eine Webseite in die ein jpg eingebettet ist. Hilft dir für das Script nicht weiter. Da der Dateiname offenbar bis auf Bruchteile von Sekunden runtergeht (003), dürfte die Chance, das richtige File zu erwischen, gegen Null gehen. Aber Du kannst den eingebetteten Pfad zum Bild ja mal manuell aufrufen, vielleicht hast Du Glück.

Sonst sieht es echt nach "falsche Kamera" aus.
370 Kanäle in 119 Geräten und 22 CUxD-Kanäle in 18 CUxD-Geräten, dazu ioBroker und diverse weitere eingebundene Systeme, vom 433MHz Bewegungsmelder bis hin zur Wallbox.

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 » 03.01.2016, 09:15

ChristianF hat geschrieben:Das was Deine Kamera da liefert ist kein jpg Bild sondern eine Webseite in die ein jpg eingebettet ist. Hilft dir für das Script nicht weiter. Da der Dateiname offenbar bis auf Bruchteile von Sekunden runtergeht (003), dürfte die Chance, das richtige File zu erwischen, gegen Null gehen. Aber Du kannst den eingebetteten Pfad zum Bild ja mal manuell aufrufen, vielleicht hast Du Glück.

Sonst sieht es echt nach "falsche Kamera" aus.
Die letzten 6 oder 7 Snapshots werden in dem Ordner gespeichert, wobei sich der Ordnername halt jeden Tag ändert. Aber es wäre denke ich kein Problem, das Bild zu holen, wenn man dem Script beibrächte, erst den Snapshot auszulösen und dann den Pfad des Bildes aufzurufen.
Aber wie geht das?
Martin_BY hat geschrieben: Das Problem scheint mir zu sein, daß die Kamera nicht direkt ein jpg. bereitstellt.
Ich vermute die Lösung darin, daß ich mir mit

Code: Alles auswählen

http://192.168.x.x/web/cgi-bin/hi3510/param.cgi?cmd=snap
die dann erzeugte Datei ausgeben lasse:
var path="/tmpfs/snap_tmpfs/20160102/IMG001/IMG_chn0_TIMER_MNG_20160102141158_004.jpg"
Und diese Variable dann im Script zusammensetze. Leider weiss ich nicht, wie den Teil zwischen den "" als Variable in den Scriptaufruf einbaue..... :?:
Kann mir jemand helfen, das Script so zu modifizieren, daß ich die oben beschriebenen 2 Schritte auf dem Weg zu dem Bild ausführen kann?

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

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

Beitrag von alchy » 03.01.2016, 10:07

Sollte deine Kamera die Bilder nicht direkt bereitstellen?

testweise so probiert?

Code: Alles auswählen

http://IP.DEINER.EIGENEN.CAM:PORT/tmpfs/auto.jpg
oder

Code: Alles auswählen

http://IP.DEINER.EIGENEN.CAM:PORT/tmpfs/auto.jpg?usr=USER&pwd=PASSWORD
oder

Code: Alles auswählen

http://IP.DEINER.EIGENEN.CAM:PORT/tmpfs/snap.jpg?usr=USER&pwd=PASSWORD
usw. usw.

oder auch mal z.B. >> H I E R << nachgeschaut?

Was das Script angeht mit den 2 Kameras, versuch es mal mit dem >> H I E R << oder versuche es mal selbst mit der Suche. DAS obige hatte ich auch nur damit gefunden.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

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 » 03.01.2016, 10:20

alchy hat geschrieben:Sollte deine Kamera die Bilder nicht direkt bereitstellen?

testweise so probiert?

Code: Alles auswählen

http://IP.DEINER.EIGENEN.CAM:PORT/tmpfs/auto.jpg
oder

Code: Alles auswählen

http://IP.DEINER.EIGENEN.CAM:PORT/tmpfs/auto.jpg?usr=USER&pwd=PASSWORD
oder

Code: Alles auswählen

http://IP.DEINER.EIGENEN.CAM:PORT/tmpfs/snap.jpg?usr=USER&pwd=PASSWORD
usw. usw.
Ja, ja und ja. :(
The requested URL '/tmpfs/auto.jpg' resolves to a file outside the permitted web server directory tree.
alchy hat geschrieben:oder auch mal z.B. >> H I E R << nachgeschaut?
Liefert komplett 404.
alchy hat geschrieben: Was das Script angeht mit den 2 Kameras, versuch es mal mit dem >> H I E R << oder versuche es mal selbst mit der Suche. DAS obige hatte ich auch nur damit gefunden.

Alchy
Schau' ich mir an. Danke.
Edit: mit dem in dem Thread enthaltenen Script klappt das Versenden von 2 Bildern. Jetzt muß ich "nur noch" das zweite Bild greifen können.
:?

ChristianF
Beiträge: 395
Registriert: 27.06.2014, 21:50

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

Beitrag von ChristianF » 03.01.2016, 12:58

Also wenn es so kompliziert ist mit deiner Cam würde ich entweder mal den Hersteller kontaktieren, oder ernsthaft über deren Austausch nachdenken. Gute Cams gibt es bereits für etwa 100EUR.
370 Kanäle in 119 Geräten und 22 CUxD-Kanäle in 18 CUxD-Geräten, dazu ioBroker und diverse weitere eingebundene Systeme, vom 433MHz Bewegungsmelder bis hin zur Wallbox.

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 » 03.01.2016, 13:02

ChristianF hat geschrieben:Also wenn es so kompliziert ist mit deiner Cam würde ich entweder mal den Hersteller kontaktieren, oder ernsthaft über deren Austausch nachdenken. Gute Cams gibt es bereits für etwa 100EUR.
Kompliziert ist relativ.
Sollte sich jemand finden, der mir erklären kann, wie man ein Script dazu bringt, den Verweis auf das File aufzurufen und dann in einen neuen Aufruf einzusetzen, ist es ganz simpel. Und den Teil stelle ich mir - als Laie - nicht so komplex vor. Ich kann es halt nur nicht.

Im Wetterscript wird ja auch die Ausgabe zerlegt und in Variablen geschrieben oder beim Benzinpreisscript.

mikewolf99
Beiträge: 1322
Registriert: 13.08.2008, 20:57
Wohnort: Österreich nähe Wien
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

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

Beitrag von mikewolf99 » 04.01.2016, 19:58

Hallo,
für alle die eine Foscam FI9803P V2 habe bzw sollte es für alle HD Foscams funktionieren hier ein Tip um ein Snapshot zu bekommen funktioniert auch via CCU

ne bat datei sieht so aus

set timestamp=%date%_%time%
set timestamp=%timestamp:.=%
set timestamp=%timestamp::=%
wget "http://192.168.123.218:80/cgi-bin/CGIPr ... x&pwd=xxxx"
wait 1
ren CGIProxy.* snapshot.jpg
copy snapshot.jpg "h:\Bilder\Klingel\%timestamp%.*
del snapshot.jpg

das Tcl Script sofern vorhanden modifizieren:

set SNAPSHOT_URL "http://192.168.123.218:80/cgi-bin/CGIPr ... x&pwd=xxxx

mfg
mikewolf
CCU2 mit Cuxd und HP CLX ,3 x FHZ2000,2 Funkgateway (eckig),und 2 Funkgateway (rund),RS LanGate
ca 590 Komponenten gemischt HM und FS20 90/10)`CCU auf Cubie LXCCU,CCU auf RPi3 Pivccu,Iobroker auf HPgen8,
Tinker,orangepi,Odroid .....,Sonoffs,Xiaomi und ne Menge esp8266

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 » 07.01.2016, 20:50

Nach der Lektüre einiger Webseiten zum Thema TCL und der Analyse einiger hier kursierender TCL-Scripts habe ich mir - wenn auch ohne jede Vorkenntnisse - meine angedachte Lösung zusammengebastelt.

Vielleicht kann es ja noch jemand brauchen - die Kamera kostet auf EBAY um die 40.-€.

Nochmal zusammenfassend:
Die Kamera gibt nicht direkt ein jpg aus, sondern eine Webseite, in der das Bild eingebettet wird. Das wiederum kann das Script nicht verarbeiten. Deshalb wollte ich den Snapshot auslösen, den dann zurückgegebenen Pfad auslesen und in die Variable einsetzen.
So funktioniert es nun:

Code: Alles auswählen

set SNAPSHOT_PFAD http://192.168.x.x/web/cgi-bin/hi3510/param.cgi?cmd=snap&-chn=2 
set Pfad [exec wget -q -O - $SNAPSHOT_PFAD]
regexp {/.*g} $Pfad TEILPFAD
set SNAPSHOT_URL1 http://192.168.x.x$TEILPFAD
Jetzt habe ich meine Mail mit den Snapshots von 2 Kameras. :D

Nächster Step: Das Bild auch noch auf einen FTP-Server speichern, damit die Fritz-Box es lesen kann. Ich hab noch keine Ahnung, wie das geht, aber wenn ich den Teil oben rausfinden konnte, wird es damit auch noch klappen. Vielleicht.

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 » 09.01.2016, 14:46

Könnte mir jemand bei folgendem Schritt helfen?

Mit diesem Aufruf kann ich mir das erzeugte jpg auf den FTP-Server kopieren:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd/ /usr/local/addons/cuxd/curl -T '/tmp/snapshot1.jpg' ftp://192.168.x.x/Bilder/ --user USER:PWD");
Jetzt würde ich diesen CURL-Befehl gerne noch in das tcl-Script integrieren.
Ich habe gesehen, daß im NETATMO-Script auch CURL verwendet wird, sollte also gehen. Nur hinbekommen hab' ich es bisher nicht.

Antworten

Zurück zu „CCU.IO“