NEWS
[Telegram Adapter] Wansview Snapshot speichern [GELÖST]
-
Moin,
ich möchte ein Snapshot von meiner Wansview Cam per Email verschicken.
Jetzt hackt es aber schon da dran, das Ich das Bild nicht mal auf dem Laufwerk speichern kann.
Als Antwort steht in der snap.jpg immer folgendes:
<title>401 - Unauthorized</title> # 401 - Unauthorized
mein Script sieht wie folgt aus:
function sendImage() { request.get({url: 'http://BENUTZERNAME:PASSWORT@IP/mjpeg/snap.cgi?chn=1', encoding: 'binary'}, function (err, response, body) { fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Snapshot sent'); //sendTo('telegram.0', '/tmp/snap.jpg'); sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: 'Snapshot'}); } }); }); }
Jetzt weiß Ich nicht, warum Ich kein Bild erhalte. Wenn Ich den Link raus kopiere und so in den Browser einfüge, funktioniert es.
Ich kann auch nichts mit der Endung .cgi anfang, welches im Link steht. Ich vermute ja, das es damit zusammen hängt.
Kann mir da jemand helfen ?
Gruß Sebastian
-
Hallo,
die Funktion fs.writeFile schreibt ja die Bilddatei auf die Platte. Der Pfad ist allerdings abhängig vom verwendeten Betriebssystem. Was verwendest du denn?
Gruß
Pix
-
Es liegt an der Authentifizierung.
Scheinbar unterstützt die Webinstanz welche ioBroker verwendet um http Seiten abzurufen kein Auth mit http://BENUTZER:PASSWORT@ipadresse/.
Du kannst über die Commandozeile mit````
curl --user admin:123456 http://192.168.30.30/mjpeg/snap.cgi?chn=0 --digest -o /tmp/snap.jpgAlso in ioBroker mit dem Befehl```` exec('curl --user admin:123456 http://192.168.30.30/mjpeg/snap.cgi?chn=0 --digest -o /tmp/snap.jpg'); ````das Bild abrufen und unter /tmp/snap.jpg speichern lassen.. User, Passwort und IP der Kamera musst du natürlich entsprechend anpassen. Desweiteren würde ich ein delay von 2 Sekunden einbauen damit das Bild "sicher" abgerufen werden kann.. Also das ganze Script sieht dann so aus:
exec('curl --user admin:123456 http://192.168.30.30/mjpeg/snap.cgi?chn=0 --digest -o /tmp/snap.jpg');
setTimeout(function() {
sendTo('telegram.0', '/tmp/snap.jpg');
}, 2000);Gruß
-
Hi BuZZy,
das war es, Super. Danke für die Hilfe. :mrgreen:
Das versenden per Email, hat auch auf anhieb geklappt… Sauber
Gruß