NEWS
[gelöst] Bild wird nicht richtig gespeichert (EDIT) Jetzt nicht richtig versandt
-
Hallo Leute,
ich versuche gerade ein Bild meiner Webcam an Telegram zu senden. dazu habe ich im Forum einiges an Programmbeispielen gefunden.
Leider macht es nicht das was es soll.
Und zwar wird das Bild gelesen (Der Pfad stimmt, im Browser wird damit das gewünschte .jpg angezeigt.).
Es werden auch die 4 verschiedenen Bilder erzeugt. Leider sind die alle korrupt, und können in der Windows Fotoanzeige nicht geöffnet werden.
Damit klappt dann auch der Versand nicht. Also irgendwas geht schief beim Speichern der Fotos.
Hat jemand einen Tipp woran das liegen könnte?
Lg
Günther
Hier mein Programm:
var request = require('request'); var fs = require('fs'); var a = 1; function sendImage() { request.get({url: 'http://localhost/image0.jpg?resolution=640x480', encoding: 'binary'}, function (err, response, body) { fs.writeFile("/xampp/htdocs/magicmirror/Webcam_"+a+".jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Bild '+a+' gespeichert'); sendTo("telegram.0","/xampp/htdocs/magicmirror/Webcam_"+a+".jpg"); console.log('Bild '+a+' gesendet'); a = a + 1; } }); }); } on({id: "hm-rpc.1.0009156996014F.1.MOTION"/*G_MagicMirror_Bewegung:1.MOTION*/, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; console.log('Änderung des Motion Zustandes erkannt'); if (getState("hm-rpc.1.0009156996014F.1.MOTION").val === true) { console.log('Bild an Telegram versenden'); { // send 4 images: immediately, in 5, 15 and 30 seconds sendImage(); setTimeout(sendImage, 5000); setTimeout(sendImage, 15000); setTimeout(sendImage, 30000); } }});
IOBroker auf Windows 10:
Adapter mit latest Repository aktuell
Node.js: v8.10.0
npm: 5.8.0
-
sendTo("telegram.0","/xampp/htdocs/magicmirror/Webcam_"+a+".jpg"); ```` `
Das sieht für mich so aus, als würde ein String mit dem Pfad + Dateinamen gesendet, nicht der Inhalt der Datei (body).
-
Hallo Paul,
Das Senden ist der nächste Schritt. Die Datei wird bereits schlecht auf die Festplatte gespeichert. Lässt sich dort nicht öffnen.
lg
Günther
-
So, ich habe das Problem mit der Datei nun umgangen. Ich habe dazu den PhantomJS Adapter genommen. Nun wird korrekterweise ein richtiger Screenshot erzeugt.
Nur kann ich den jetzt nicht versenden.
Ich habe das nun mit Blockly gelöst.
Das Bild wird richtig gespeichert. Es ist ein Apache und ein Tomcat installiert, sodass das Bild mit http erreichbar ist.
Beim Versand kommt allerdings folgende Fehlermeldung:
telegram.0 2018-08-18 18:27:24.528 error Cannot send photo [chatId - xyz]: Error: ETELEGRAM: 400 Bad Request: wrong file identifier/HTTP URL specified
Any Ideas?
Lg
Günther
-
Ich würde es so versuchen:
telegram in die Callback-Funktion von phantomjs (mit Ergebnissen anhaken) packen, damit das Erzeugen der Datei fertig ist, bevor sie verschickt werden soll. Bei telegram Meldung den Dateipfad angeben.
-
Hallo Paul,
der Tipp war Gold wert. Nun funktioniert es so wie geplant.
Vielen Dank
Günther