NEWS
ioBroker Windows Kamerabild Blockly
-
Moin,
ich habe ioBroker zum testen mal auf Windows 10 inistalliert. Nun will ich mir mein Kamera Bild via Telegram schicken lassen. Leider bekomme ich es nicht hin, dass Kamerabild zu speichern. Unter Linux ging es noch mit dem Befehl:
wget -q -N -O /opt/iobroker/klingel.jpg "http://192.168.0.20:8080/livefeed?oid=1&size=1280x720"
Das funktioniert so nun nicht mehr weil wget nicht installiert ist. Wie werden die Befehle von den Baustein unter Windows ausgeführt? In der Eingabeaufforderung (command prompt bzw. cmd)? PowerShell?
Wenn ich daspowershell -command "& { iwr http://192.168.0.20:8080/livefeed?oid=1&size=1280x720 -OutFile klingel.jpg }"
direkt in cmd eingebe oder das
Invoke-WebRequest -Uri "http://192.168.0.20:8080/livefeed?oid=1&size=1280x720" -OutFile "C:\klingel.jpg"
in PowerShell funktioniert das und das Bild wird gespeichert. Wenn ich den Befehl in Blockly einsetze geht es nicht.
Kann mir da jemand weiter helfen?
-
Hallo, habe leider genau das gleiche Problem. Ich fürchte das ist aussichtslos. Habe schon versucht Wget auf Windows zum laufen bringen. Funktioniert aber trotzdem nicht
-
Per Script geht es auf Win so:
//Bild senden mit Telegram request.get({url: 'http://192.168.243.156:88//cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxxxx&pwd=xxxxx', encoding: 'binary'}, function (err, response, body) { fs.writeFile("c:/tmp/snap.jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Snapshot sent'); sendTo('telegram.0', {text: 'c:/tmp/snap.jpg', caption: 'Haustür: Es klingelt.'}); } }); });
Vielleicht hilfst.
-
@J-C-H said in ioBroker Windows Kamerabild Blockly:
Hallo, habe leider genau das gleiche Problem. Ich fürchte das ist aussichtslos. Habe schon versucht Wget auf Windows zum laufen bringen. Funktioniert aber trotzdem nicht
Hab die Lösung gefunden
Zuerst wget installieren, anschließend den Ordner wo ioBroker installiert ist unter Einstellungen -> Sicherheit für Jeden Vollzugriff zuteilen.
Im ioBroker im exec Block dann [wget http://XXX.XXX.... .jpg -O "C:\PFAD\DATEINAME.jpg"] eintragen.
Im Telegramm Block dann ["C:\PFAD\DATEINAME.jpg"] den Pfad wo die Datei gespeichert wurde.So hat es bei mir funktioniert
-
@bahnuhr sagte in ioBroker Windows Kamerabild Blockly:
Per Script geht es auf Win so:
//Bild senden mit Telegram request.get({url: 'http://192.168.243.156:88//cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxxxx&pwd=xxxxx', encoding: 'binary'}, function (err, response, body) { fs.writeFile("c:/tmp/snap.jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Snapshot sent'); sendTo('telegram.0', {text: 'c:/tmp/snap.jpg', caption: 'Haustür: Es klingelt.'}); } }); });
Vielleicht hilfst.
Also ich stehe gerade vor der gleichen Herausforderung mit Windows und bekomme es auch nicht hin. Nicht einmal mit deinem Skript. Ich habe dem Ordner C:\temp Vollzugriff für "jeder" erteilt, aber es passoert einfach nichts wenn ich das Skript starte. Nicht einmal ein LOG Eintrag.
-
Re: ioBroker Windows Kamerabild Blockly
Hallo, ich kann mit iobroker unter Windows kein Bild abspeichern. Das Problem wurde vor ein paar Jahren schon mal diskutiert und nicht endgültig gelöst.
Kann mir da jemand helfen?
Ich habe mittlerweile eine Batch-Datei,die genau das macht, brauche nur noch ein Blockly, welches diese Batch Datei aus iobroker antriggert und sie arbeiten lässt -
@hartmut-dittmer
Ich habe das mal an den von Dir verlinkten Post angehängt. -
Da hier uralte Threads mit längst abgekündigten Bibliotheken (request) und unnötigen Befehlen (exec + wget) geteilt werden, hier ein kurzes Update:
Mittlerweile gibt es
httpGet
direkt in Blockly. Zusammen mit dem ioBroker-Dateisystem kann man das ohne exec und Scripts realisieren. Entweder direkt per JavaScript:on({ id: 'alias.0.aussen.Klingel.PRESS', val: true }, async (obj) => { httpGet('http://192.168.243.156:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=xxxxx&pwd=xxxxx', { timeout: 5000, responseType: 'arraybuffer' }, async (err, response) => { sendTo('telegram', 'send', { text: createTempFile('kamera.jpg', response.data), user: '...', }); }); });
oder wie gesagt direkt per Blockly.
Beispiele gibts dazu genüge im ioBroker-Master-Kurs (mit ausführlicher Erklärung).
Siehe auch https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httpget
-
Alternativ könnte man natürlich auch das Kamerabild dauerhaft Speichern und mit einem Trigger auf jedes neue Bild oder eine Änderung reagieren:
Beispiele gibts dazu genüge im ioBroker-Master-Kurs (mit ausführlicher Erklärung).
-
@haus-automatisierung
Moin und vielen Dank, es funktioniert perfekt
Auf Anhieb mit dem temporären Pfad und auch das dauerhafte Abspeichern. Letzteres benutze ich jetzt, um per telegramm oder pushover ein Bild zu schicken, wenn der BWM am Tor auslöst.
Hier wird das Bild immer wieder neu überschrieben und dann verschickt. Könnte ich es nicht auch hinbekommen, dass jedes neues Bild abgespeichert wird mit neuem Namen (Zeitstempel)? Im Idealfall für jeden Tag in einen neuen Ordner?