NEWS
[gelöst] Bildanzeige veraltet
-
Ich habe dieses problem immer noch nicht in den Griff bekommen

Leider verstehe ich zu wenig von dem JavaScript aus deinem Link. @Glasfaser
Daraus kann ich mir kein passendes Skript für mich bauen.Ich stehe also vor dem Problem:
vis kann keine Dateien anzeigen die höher liegen als "/iobroker-data/files/".
Javascript (Blockly bei mir) darf unterhalb dieses Ordners aber keine Dateien ablegen.Kann ich vielleicht einen Symlink erstellen? (Unter Windows?)
-
@Glasfaser
Danke, das verstehe ich zumindest ansatzweise.Ich habe mal mein Blockly Skript in JS konvertiert und folgenden Block eingefügt:
const bild1 = fs.readFileSync(folder,'snap01.jpg'); writeFile('0_userdata.0','alarm1.jpg', bild1);var Empfaenger, Satz, date, timeout8, folder, timeout9, timeout10, timeout7, timeout2, timeout3, timeout4, timeout6, timeout, timeout5; var fs = require('fs'); const path = require('path'); on({id: "javascript.0.TEST.bDummy"/*BOOL dummy*/, change: "ne"}, function (obj) { if (getState("javascript.0.TEST.bDummy").val == true) { setState("javascript.0.TEST.bDummy", false); Satz = 'Satz1'; folder = 'D:\\ioBroker\\Besucherfotos\\TEST\\'; // Neues Verzeichnis auf D mit Datum erstellen exec(('md ' + String(folder))); console.debug("exec: " + ('md ' + String(folder))); console.warn((['### Verzeichnis für Besucherfotos erstellt (',folder,')'].join(''))); // Snapshot 1 holen exec((['wget --output-document ',folder,'snap01.jpg http://ioBroker:XXXXXX@10.0.0.21/ISAPI/Streaming/channels/101/picture'].join(''))); console.debug("exec: " + (['wget --output-document ',folder,'snap01.jpg http://ioBroker:XXXXXX@10.0.0.21/ISAPI/Streaming/channels/101/picture'].join(''))); timeout = setTimeout(function () { // Snapshots für VIS ablegen const bild1 = fs.readFileSync(path.join(folder,'snap01.jpg')); writeFile(path.join('vis.0/snapshots/',Satz),'/snap01.jpg', bild1, function (errorWRITE) {}); }, 2000); } }); function errorDEL() { // function falls Fehler beim Löschen console.error(('### Fehler beim Löschen (IPcam Snapshot)')); }; function errorWRITE() { // function falls Fehler beim Schreiben console.error(('### Fehler beim Datei schreiben (IPcam Snapshot)')); };Wie lege ich denn als Ziel dann einen Ordner fest?
Also anstatt "0_userdata.0" möchte ich die Bilder dann unter "D:/ioBroker/NUC/iobroker-data/files/vis.0/snapshots/" ablegenDer snapshot wird von der Kamera geholt und unter "folder" abgelegt.
Unter "vis.0/snapshots/',Satz" liegt dann aber kein Bild.
Die function "errorDEL()" wird nicht aufgerufen. -
@Glasfaser
Danke, das verstehe ich zumindest ansatzweise.Ich habe mal mein Blockly Skript in JS konvertiert und folgenden Block eingefügt:
const bild1 = fs.readFileSync(folder,'snap01.jpg'); writeFile('0_userdata.0','alarm1.jpg', bild1);var Empfaenger, Satz, date, timeout8, folder, timeout9, timeout10, timeout7, timeout2, timeout3, timeout4, timeout6, timeout, timeout5; var fs = require('fs'); const path = require('path'); on({id: "javascript.0.TEST.bDummy"/*BOOL dummy*/, change: "ne"}, function (obj) { if (getState("javascript.0.TEST.bDummy").val == true) { setState("javascript.0.TEST.bDummy", false); Satz = 'Satz1'; folder = 'D:\\ioBroker\\Besucherfotos\\TEST\\'; // Neues Verzeichnis auf D mit Datum erstellen exec(('md ' + String(folder))); console.debug("exec: " + ('md ' + String(folder))); console.warn((['### Verzeichnis für Besucherfotos erstellt (',folder,')'].join(''))); // Snapshot 1 holen exec((['wget --output-document ',folder,'snap01.jpg http://ioBroker:XXXXXX@10.0.0.21/ISAPI/Streaming/channels/101/picture'].join(''))); console.debug("exec: " + (['wget --output-document ',folder,'snap01.jpg http://ioBroker:XXXXXX@10.0.0.21/ISAPI/Streaming/channels/101/picture'].join(''))); timeout = setTimeout(function () { // Snapshots für VIS ablegen const bild1 = fs.readFileSync(path.join(folder,'snap01.jpg')); writeFile(path.join('vis.0/snapshots/',Satz),'/snap01.jpg', bild1, function (errorWRITE) {}); }, 2000); } }); function errorDEL() { // function falls Fehler beim Löschen console.error(('### Fehler beim Löschen (IPcam Snapshot)')); }; function errorWRITE() { // function falls Fehler beim Schreiben console.error(('### Fehler beim Datei schreiben (IPcam Snapshot)')); };Wie lege ich denn als Ziel dann einen Ordner fest?
Also anstatt "0_userdata.0" möchte ich die Bilder dann unter "D:/ioBroker/NUC/iobroker-data/files/vis.0/snapshots/" ablegenDer snapshot wird von der Kamera geholt und unter "folder" abgelegt.
Unter "vis.0/snapshots/',Satz" liegt dann aber kein Bild.
Die function "errorDEL()" wird nicht aufgerufen. -
@Glasfaser
Danke, das verstehe ich zumindest ansatzweise.Ich habe mal mein Blockly Skript in JS konvertiert und folgenden Block eingefügt:
const bild1 = fs.readFileSync(folder,'snap01.jpg'); writeFile('0_userdata.0','alarm1.jpg', bild1);var Empfaenger, Satz, date, timeout8, folder, timeout9, timeout10, timeout7, timeout2, timeout3, timeout4, timeout6, timeout, timeout5; var fs = require('fs'); const path = require('path'); on({id: "javascript.0.TEST.bDummy"/*BOOL dummy*/, change: "ne"}, function (obj) { if (getState("javascript.0.TEST.bDummy").val == true) { setState("javascript.0.TEST.bDummy", false); Satz = 'Satz1'; folder = 'D:\\ioBroker\\Besucherfotos\\TEST\\'; // Neues Verzeichnis auf D mit Datum erstellen exec(('md ' + String(folder))); console.debug("exec: " + ('md ' + String(folder))); console.warn((['### Verzeichnis für Besucherfotos erstellt (',folder,')'].join(''))); // Snapshot 1 holen exec((['wget --output-document ',folder,'snap01.jpg http://ioBroker:XXXXXX@10.0.0.21/ISAPI/Streaming/channels/101/picture'].join(''))); console.debug("exec: " + (['wget --output-document ',folder,'snap01.jpg http://ioBroker:XXXXXX@10.0.0.21/ISAPI/Streaming/channels/101/picture'].join(''))); timeout = setTimeout(function () { // Snapshots für VIS ablegen const bild1 = fs.readFileSync(path.join(folder,'snap01.jpg')); writeFile(path.join('vis.0/snapshots/',Satz),'/snap01.jpg', bild1, function (errorWRITE) {}); }, 2000); } }); function errorDEL() { // function falls Fehler beim Löschen console.error(('### Fehler beim Löschen (IPcam Snapshot)')); }; function errorWRITE() { // function falls Fehler beim Schreiben console.error(('### Fehler beim Datei schreiben (IPcam Snapshot)')); };Wie lege ich denn als Ziel dann einen Ordner fest?
Also anstatt "0_userdata.0" möchte ich die Bilder dann unter "D:/ioBroker/NUC/iobroker-data/files/vis.0/snapshots/" ablegenDer snapshot wird von der Kamera geholt und unter "folder" abgelegt.
Unter "vis.0/snapshots/',Satz" liegt dann aber kein Bild.
Die function "errorDEL()" wird nicht aufgerufen.Ich kann leider Windows nicht bei mir testen ... habe alles auf der Synology.
Versuche mal den Baustein mit reinzunehmen , damit kannst du direkt das Foto hinterlegen:
exec('wget --output-document /opt/iobroker/iobroker-data/tmp/Snapshot.jpg \'http://ioBroker:XXXXXX@10.0.0.21/ISAPI/Streaming/channels/101/picture\'');Nimm eine leer JS und führe es dort aus ... direkt starten !!
-
Meins sieht so aus , damit Kopiere ich in Vis.0
const bild1 = fs.readFileSync('/tmp/carport1.jpg'); writeFile('vis.0','/klingelbild/carport1.jpg', bild1);@Glasfaser sagte in Bildanzeige veraltet:
Meins sieht so aus , damit Kopiere ich in Vis.0
const bild1 = fs.readFileSync('/tmp/carport1.jpg'); writeFile('vis.0','/klingelbild/carport1.jpg', bild1);OK, das scheint es gewesen zu sein !
So funktioniert mein Test Skript. Mal sehen ob mein "Produktiv Skript" das auch richtig umsetzt.Vielen Dank
-
@Glasfaser sagte in Bildanzeige veraltet:
Meins sieht so aus , damit Kopiere ich in Vis.0
const bild1 = fs.readFileSync('/tmp/carport1.jpg'); writeFile('vis.0','/klingelbild/carport1.jpg', bild1);OK, das scheint es gewesen zu sein !
So funktioniert mein Test Skript. Mal sehen ob mein "Produktiv Skript" das auch richtig umsetzt.Vielen Dank
-
Ja, den wget output benutze ich ja schon um den snap in meinem "D:" Ordner abzulegen.
Ich meine ich hatte es so auch schon versucht direkt unter vis.0 abzulegen.
Das ging glaube ich nicht.
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