NEWS
wget lädt nur eine 0kb Datei aus Stream
-
Danke, hab ich mal getestet.
Jetzt kommtLast login: Thu Nov 12 10:13:23 2020 from 192.168.99.55 pi@iobroker:~ $ wget -v /opt/iobroker/snapshot/snapshoot.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1' /opt/iobroker/snapshot/snapshoot.jpg: Schema fehlt. --2020-11-12 10:16:48-- http://192.168.xxxxx/snapshot.jpg?user=xxx&pwd=xxcc&strm=1 Verbindungsaufbau zu 192.168.99.44:80 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK Länge: 28136 (27K) [image/jpeg] Wird in »snapshot.jpg?user=xxxx&pwd=xxxx&strm=1.3« gespeichert. snapshot.jpg?us 100%[======>] 27,48K 64,0KB/s in 0,4s 2020-11-12 10:16:49 (64,0 KB/s) - »snapshot.jpg?user=xxxx&pwd=xxxx&strm=1.3« gespeichert [28136/28136] BEENDET --2020-11-12 10:16:49-- Verstrichene Zeit: 0,7s Geholt: 1 Dateien, 27K in 0,4s (64,0 KB/s) pi@iobroker:~ $Die Datei ist nochoch leer.
@David-G Versteh ich nicht hat doch ein Bild mit 27k geladen. Probiers mal mit
sudo wget -v /opt/iobroker/snapshot/snapshoot.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1'vielleicht liegst an Schreibrechten im Zielverzeichnis. Und ich habe -O anstatt -v im wget Aufruf
-
@David-G Versteh ich nicht hat doch ein Bild mit 27k geladen. Probiers mal mit
sudo wget -v /opt/iobroker/snapshot/snapshoot.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1'vielleicht liegst an Schreibrechten im Zielverzeichnis. Und ich habe -O anstatt -v im wget Aufruf
Ja,
jetzt speichert er auch die Bilder. Sogar ohne sudo und aus Blockly heraus.Jedoch hat mir der Telegramadapter beim Senden einen Fehler ausgegeben.
Darauf hin habe ich mir das Bild mal angeschaut.Man kann es nicht öffnen. Zumindest nicht unter Windows und Android.
Im Browser hat man unter dem Link ein normales JPG was man speichern kann.
-
sendImage(); function sendImage() { let bild = "/opt/iobroker/iobroker-data/bild.jpg"; axios({ method: 'get', url: 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1', responseType: 'stream' }) .then(function (response) { response.data.pipe(fs.createWriteStream(bild)); setTimeout(function() { sendTo('telegram.0', { text : bild, disable_notification: true }); }, 300); }); }das ist was du suchst
-
sendImage(); function sendImage() { let bild = "/opt/iobroker/iobroker-data/bild.jpg"; axios({ method: 'get', url: 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1', responseType: 'stream' }) .then(function (response) { response.data.pipe(fs.createWriteStream(bild)); setTimeout(function() { sendTo('telegram.0', { text : bild, disable_notification: true }); }, 300); }); }das ist was du suchst
Kann ich das Script so wie es ist nehmen und nur die URL anpassen?
Welche Einheit hat der Timeout von 300 (Ist das einer?) ?
Benutze leider nur mit Blockly.Kann ich das so in Blockly integrieren mit einem Trigger?
Wobei ich es trotzdem interessant finde, warum er das Bild nicht richtig speichert.
-
sendImage(); function sendImage() { let bild = "/opt/iobroker/iobroker-data/bild.jpg"; axios({ method: 'get', url: 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1', responseType: 'stream' }) .then(function (response) { response.data.pipe(fs.createWriteStream(bild)); setTimeout(function() { sendTo('telegram.0', { text : bild, disable_notification: true }); }, 300); }); }das ist was du suchst
-
Danke, hab ich mal getestet.
Jetzt kommtLast login: Thu Nov 12 10:13:23 2020 from 192.168.99.55 pi@iobroker:~ $ wget -v /opt/iobroker/snapshot/snapshoot.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1' /opt/iobroker/snapshot/snapshoot.jpg: Schema fehlt. --2020-11-12 10:16:48-- http://192.168.xxxxx/snapshot.jpg?user=xxx&pwd=xxcc&strm=1 Verbindungsaufbau zu 192.168.99.44:80 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK Länge: 28136 (27K) [image/jpeg] Wird in »snapshot.jpg?user=xxxx&pwd=xxxx&strm=1.3« gespeichert. snapshot.jpg?us 100%[======>] 27,48K 64,0KB/s in 0,4s 2020-11-12 10:16:49 (64,0 KB/s) - »snapshot.jpg?user=xxxx&pwd=xxxx&strm=1.3« gespeichert [28136/28136] BEENDET --2020-11-12 10:16:49-- Verstrichene Zeit: 0,7s Geholt: 1 Dateien, 27K in 0,4s (64,0 KB/s) pi@iobroker:~ $Die Datei ist nochoch leer.
@David-G sagte in wget lädt nur eine 0kb Datei aus Stream:
wget -v /opt/iobroker/snapshot/snapshoot.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1'
Müsste der Befehl nicht
wget -v -O /opt/iobroker/snapshot/snapshoot.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1'sein (also Ausgabe-Dateiname per -O angeben)?
==> https://wiki.ubuntuusers.de/wget/Obiger Befehl würde versuchen,
/opt/iobroker/snapshot/snapshoot.jpgherunter zu laden, was keinen Sinn macht. -
@David-G sagte in wget lädt nur eine 0kb Datei aus Stream:
wget -v /opt/iobroker/snapshot/snapshoot.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1'
Müsste der Befehl nicht
wget -v -O /opt/iobroker/snapshot/snapshoot.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1'sein (also Ausgabe-Dateiname per -O angeben)?
==> https://wiki.ubuntuusers.de/wget/Obiger Befehl würde versuchen,
/opt/iobroker/snapshot/snapshoot.jpgherunter zu laden, was keinen Sinn macht.Ja, das srimmt.
Ist auch der letzte Stand. Nur eben mit einem Bild was man nicht öffnen kann.
sudo wget -o /opt/iobroker/snapshot/bild1.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1' -
Unter Windows konnte ich die Bilddateien jetzt öffnen.
WinSCP öffnet sie im Editor.Ihr Inhalt ist:
--2020-11-12 11:18:57-- http://192.168.xx.xx/snapshot.jpg?user=xx&pwd=xxx&strm=1 Verbindungsaufbau zu 192.168.xx.xx:80 … verbunden. HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK Länge: 26564 (26K) [image/jpeg] snapshot.jpg?user=xxx&pwd=xxxx&strm=1: Keine Berechtigung Schreiben nach »snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1« nicht möglich (Keine Berechtigung). -
Ja, das srimmt.
Ist auch der letzte Stand. Nur eben mit einem Bild was man nicht öffnen kann.
sudo wget -o /opt/iobroker/snapshot/bild1.jpg 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1' -
@David-G großes O, nicht kleines o. Und bitte lass das
sudoweg, das verhaut dir nur die Berechtigungen.Danke, das war es.
Das sudo hatte ich schon weg.
Das kleine -o war das Problem.Hab grad erfolgreich das Bild per Telegram bekommen.
-
Danke, das war es.
Das sudo hatte ich schon weg.
Das kleine -o war das Problem.Hab grad erfolgreich das Bild per Telegram bekommen.
Bei mir geht es auch um wget, allerdings bekomme ich die Datei einfach nicht auf meinen USB Stick von der FritzBox gespeichert. Im User "pi" ist der Stick unter /media/fritzbox-usb eingebunden. Ich kann auch von der Konsole zugreifen. Führe ich jetzt z.B. den Befehl
wget --output-document /media/fritzbox-usb/snapshot.png 'http://192.168.178.225/capture'aus, wird die Datei nicht gespeichert. Wenn ich das Bild in den /tmp Ordner via
wget --output-document /tmp/snapshot.png 'http://192.168.178.225/capture'speichere, geht es ohne Probleme. Was mache ich falsch?
Von der Konsole kann ich auf den Mountpunkt zugreifen.
-
@arteck Wieso nicht warten bis der Stream fertig ist statt ein fixes (möglicherweise unnötig langes oder zu kurzes) Timeout?
@AlCalzone gute frage.....

let axios = require('axios'); var fs = require('fs'); let bild1 = "/opt/iobroker/iobroker-data/bild.jpg"; sendImage1(); async function sendImage1() { const writer = fs.createWriteStream(bild); const response = await axios({ url: 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1', method: 'get', responseType: 'stream' }) response.data.pipe(writer); return new Promise((resolve, reject) => { writer.on('finish', resolve => { sendTo('telegram.0', { text : bild, disable_notification: true }); }) }) } -
@AlCalzone gute frage.....

let axios = require('axios'); var fs = require('fs'); let bild1 = "/opt/iobroker/iobroker-data/bild.jpg"; sendImage1(); async function sendImage1() { const writer = fs.createWriteStream(bild); const response = await axios({ url: 'http://192.168.xxxxx/snapshot.jpg?user=xxxx&pwd=xxxxx&strm=1', method: 'get', responseType: 'stream' }) response.data.pipe(writer); return new Promise((resolve, reject) => { writer.on('finish', resolve => { sendTo('telegram.0', { text : bild, disable_notification: true }); }) }) }@david-g
Nachdem mich das Thema mit der leeren Datei nach einem wget nun ebenfalls 2 Tage beschäftigt hat, habe ich in meinem Fall die folgende Ursache festgestellt:
Die http-Quelle, von der ich das Bild hole (bei mir Motioneye), hat die gleiche IP-Adresse wie der ioBroker, der das Bild abholt. Beide laufen in einem Docker-Container des Host-Rechners (bei mir ein QNAP-NAS) - und in dieser Konfiguration kann es passieren, dass keine Kommunikation zwischen den beiden Docker-Instanzen möglich ist. Dies ist z. B. in den 'Docker Docs' (siehe hier) beschrieben.
Ich habe dementsprechend Motioneye neu installiert mit der Netzwerkeinstellung "Bridge". Damit erhält Motioneye eine eigene IP-Adresse, und der Zugriff vom ioBroker klappt dann reibungslos
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden