NEWS
Kamerabild abholen mit javascript
-
Hallo Miteinander,
ich bin gerade dabei, alle meine Progs von der Homematic nach iobroker rüberzubringen. Heute war das Prog zum 'Bild an Telegram schicken bei Bewegung' dran.
Nachdem ich einen ganzen Tag lang nun alles Mögliche probiert habe und im Forum nichts Vergleichbares gefunden habe, hier mein Sachverhalt:- iobroker auf Raspi
- beim javascript-Adapter "exec-Befehl" freigegeben
Wenn ich mit
wget -q -O '/home/pi/webcam.jpg' 'http://user:pass@192.168.178.61/Streaming/Channels/1/picture'
oder
wget http://user:pass@192.168.178.61/Streaming/Channels/1/picture -O webcam.jpg -nd -A jpeg,jpg,bmp,gif,png
in putty versuche, ein Bild meiner Kamera abzulegen, funzt alles wunderbar.
Der gleiche Befehl mit Blockly jedoch: führt zu keinem Effekt. Es wird keine Datei geschrieben. (Betrifft natürlich alle Varianten/Schreibweisen).
Ich habe nun alle möglichen Varianten probiert, aber es geht nicht. Interessanterweise funzt der Befehl als Teil eines Homematic-Programms jedoch zuverlässig seit Jahren.
Wer weiß einen Rat?
Gruß
Erol -
Wenn das dein komplettes Blockly ist, fehlt ein Trigger.
-
Das war nur ein Ausschnitt. Ich wollte mich aufs Wesentliche konzentrieren.
-
Ich benutze das hier. Geht gut und macht direkt zwei Bilder mit Abstand .
klickme -
Danke für den Code, läuft aber leider auch nicht.
Hier mal js-code:schedule("* * * * *", function () { timeout = setTimeout(function () { exec("wget -q -O 'webcam.jpg' 'http://user:pass@192.168.178.61/Streaming/Channels/1/picture'"); }, 2000); console.log('gelaufen'); });
Mal eine doofe Frage: da es mit dem wget-Befehl in putty (eingeloggt als user "pi") geht und über die javascript-Instanz nicht: kann es es etwas mit den Rechten zu tun haben? D.h. der user iobroker (darunter läuft doch die js-Instanz) hat keine ausreichenden Schreibrechte und schreibt daher die jpg nicht?
Sorry für die vllt. total bekloppte Frage, aber ich bin kein Linux-Experte
-
Bei mir läuft das von "TheDuke" verlinkte auch problemlos.
Deine Aussage "läuft leider auch nicht" ist wenig hilfreich
Was genau läuft nicht?
Mal für die JS Instanz das loggen auf Debug gestellt und geschaut was genau bei Script Ausführung passiert?
Denke du nutzt ein Linux System, mal ins SYSLOG / Messages log geschaut wenn das Script gelaufen ist ob es irgendwelche write Error oder Zugriffsfehler gibt?
-
@Ragnar stell das Loglevel bei exec mal auf debug oder error und schau im log nach was er dir sagt.
-
Ich hole meine Fotos für Telegram wie folgend:
request.get({url: 'http://192.168.x.x:81/image/cam2?q=50&s=50', encoding: 'binary'}, function (err, response, body) { // fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) { fs.writeFile("c:/iobroker/tmp/snap.jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { console.log('Snapshot sent'); sendTo('telegram.0', 'c:/iobroker/tmp/snap.jpg'); } }); });
Gruss
-
Hier mal der Log wenn ich das Loglevel bei exec auf 'debug' --> untere, eingekreiste Zeile
und wenn ich es auf 'error' --> obere, rote Zeile
stelle.