NEWS
Gelöst: Speicherpfad in Iobroker
-
ausschlaggebend sind die Befehle fs.readFileSync und writeFile
https://forum.iobroker.net/topic/32652/externes-bild-in-vis
dass unter js-controller 3.1 das Bild so abgelegt wird
das ist seit js-controller 2.0 schon so..
-
@Glasfaser Hast evtl. noch mal das ganze Script zur Ansicht? Mit dem Ausschnitt unter https://forum.iobroker.net/topic/32652/externes-bild-in-vis, komme ich nicht klar.
Michael -
@michihorn sagte in Speicherpfad in Iobroker:
Mit dem Ausschnitt .... komme ich nicht klar.
Öffne bei den Beiträgen von mir die Spoiler ... da sind die Scripts enthalten !
-
@Glasfaser Hallo vielen Dank habs gleich mal ausprobiert, im Script sehe ich erstmal folgendes:
Offenbar kann mein Java kein writefile, hast du eine Idee? -
nicht beachten das Rote >>><>>>>>< darunter
-
@Glasfaser Ich habe mal etwas probiert, leider klappt es bei mir nur bedingt.
Ich habe das mal knapp Zusammengefasstvar fs = require('fs'); exec('wget --output-document /tmp/Vorne.jpg \'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxx&pwd=roadxxxxx\''); const picture= fs.readFileSync('/tmp/Vorne.jpg'); writeFile('vis.0','/klingelbild/Vorne.jpg', picture, function (error) { }); });
Offenbar ist das Dateiformat nicht lesbar.
Gruß
Michael -
@michihorn
Dein Scriptaufbau ist falsch ....
Lege mal ein neues Script an und füge das ein , dann siehst du was ich meineeinmal starten ... dann wird auch ein Bild erzeugt inkl. Ablage in Vis .
var fs = require('fs'); exec('wget --output-document /tmp/Vorne.jpg \'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxx&pwd=roadxxxxx\''); const picture= fs.readFileSync('/tmp/Vorne.jpg'); writeFile('vis.0','/klingelbild/VorneTest.jpg', picture, function (error) { });
-
@Glasfaser Sorry es bleibt ein unlesbares Format
-
-
@Glasfaser Ich habe keine Fehlermeldung...aauch im Log steht nichts
17:51:00.008 info javascript.3 (5376) script.js.Klingel.Skript_11: exec: wget --output-document /tmp/Vorne.jpg 'http://192.168.178.104:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxn&pwd=roadki -
unlesbares Format
und wie kommst du dann auf diese Aussage ?
Wie und was meinst du damit !????
-
@Glasfaser Ich öffne das Speicherverzeichnis, sehe die Datei ohne Vorschau. Wenn ich die Datei anklicke bekomme ich vom "Windows Fotos" die Meldung VorneTest.jpg Dieses Dateiformat wird wahrscheinlich nicht unterstützt
Ich habe mir gerade mal die Eigenschaften der Datei angeschaut, es ist eine 0 Bytes Datei. Also irgendwas habe ich noch falsch gemacht.
Im Dateimanager vom Iobroker sieht es so aus
-
@Glasfaser @michihorn
exec
ist asynchron, d.h. der Code darunter geht weiter, bevor der Befehl abgeschlossen ist. Alles was nach dem exec passieren soll, muss in den Callback:var fs = require("fs"); exec( "wget --output-document /tmp/Vorne.jpg 'http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxx&pwd=roadxxxxx'", (error, stdout, stderr) => { if (!error) { const picture = fs.readFileSync("/tmp/Vorne.jpg"); writeFile("vis.0", "/klingelbild/VorneTest.jpg", picture); } } );
Da eh etwas runtergeladen werden soll, kann man den httprequest auch direkt selbst machen, ohne Umweg übers Dateisystem (ungetestet, sollte aber gehen):
request( { url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxx&pwd=roadxxxxx", encoding: null, }, (error, response, body) => { if (!error && body) { writeFile("vis.0", "/klingelbild/VorneTest.jpg", body); } } );
-
nimm mal diese Widget und trage dort dein Bild ein ... :
[{"tpl":"tplImage","data":{"g_fixed":false,"g_visibility":true,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":"true","visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"src":"/vis.0/klingelbild/Vorne.jpg","visibility-oid":"javascript.0.Dreambox.Dreambox_an_aus"},"style":{"left":"629px","top":"161px","z-index":"1","width":"234px","height":"150px","font-family":"Jura-DemiBold","font-size":"14px"},"widgetSet":"basic"}]
-
wie schon @AlCalzone braucht dein System zu lange ... deswegen 0kb bei dir
var fs = require('fs'); var timeout1 exec('wget --output-document /tmp/Vorne.jpg \'http://xxxxxxxx@192.168.xxxxxx/streaming/channels/101/picture\''); timeout1 = setTimeout(function () { const picture= fs.readFileSync('/tmp/Vorne.jpg'); writeFile('vis.0','/klingelbild/Vorneneu.jpg', picture, function (error) { }); }, 20000);
würde auch mit Timeout gehen ...
-
@AlCalzone sagte in Speicherpfad in Iobroker:
request( { url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxx&pwd=roadxxxxx", encoding: null, }, (error, response, body) => { if (!error && body) { writeFile("vis.0", "/klingelbild/VorneTest.jpg", body); } } );
Super das klappt bei mir. Danke sehr
Ich bedanke mich auch bei Glasfaser -
@AlCalzone sagte in Speicherpfad in Iobroker:
@Glasfaser @michihorn
`
Da eh etwas runtergeladen werden soll, kann man den httprequest auch direkt selbst machen, ohne Umweg übers Dateisystem (ungetestet, sollte aber gehen):request( { url: "http://192.168.178.xxx:88/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=hxxx&pwd=roadxxxxx", encoding: null, }, (error, response, body) => { if (!error && body) { writeFile("vis.0", "/klingelbild/VorneTest.jpg", body); } } );
Kannte ich noch nicht ... kann man gut gebrauchen
Danke -
@AlCalzone Kannst Du mir evtl. noch zeigen wie ich eine Datei auf einem Laufwerk ins Vis bringen kann?
Ich habe also einen Ordner auf C:\Test, dort werden mir regelmäßig Bilder einer Kamera per Email zugesandt, die ich dann extrahiert habe, ich möchte also immer das letzte Bild in Vis hoch laden.
Gruß
Michael