NEWS
Pfade außerhalb ./vis.0/ nicht (mehr) zugreifbar
-
Moin zusammen,
schon nach einem der letzten Updates fiel mir auf, dass ich aus VIS heraus auf Bilder unterhalb der Struktur von "./vis.0" nicht mehr zugreifen konnte. Das hatte lange Zeit prima funktioniert - ich hatte diverse Bilder und Daten unter "/opt/iobroker/iobroker-data/files/"* abgelegt und nie Probleme damit.
Hatte mich damals aber nicht weiter gestört - meine Daten habe migriert und entsprechend in VIS angepasst.Nun aber versuche ich seit einigen Tagen in einem Static HTML auf ein lokales Video, genauer einen Stream zu verlinken, das in meinem Fall unter "/opt/iobroker/node_modules/iobroker.ring/snapshot" abgelegt wird.
Code:
<html> <head> <title></title></head> <body> <video width="640" height="480" controls autoplay> <source src="/opt/iobroker/node_modules/iobroker.ring/snapshot/meinstream.mp4" type="video/mp4"> </body> </html>
Wie ihr schon ahnen könnt, kann VIS diese Daten offenbar nicht abrufen/erreichen.
Zur Sicherheit hatte ich auch ein normales Bild getestet - geht leider eben so wenig.Was hingegen bestens funktioniert bspw. ist ein Abruf a lá "/vis.0/test.png" was mir sagt das VIS zwar den Pfad "/opt/iobroker/iobroker-data/files/" als "root" betrachtet, aber keine Zugriffe darauf zulässt.
Sprich auch Aufrufe wie /test.png oder /ICONS/test.png innerhalb VIS scheitern.Natürlich könnte ich meinen "Stream-Ordner" auf systemebene überwachen und die Streamdatei
weg kopieren lassen (an eine Stelle die funktioniert) sobald ein neues File erstellt wird.
Oder ein j-script innerhalb von IO direkt verwenden um etwas entsprechendes umzusetzen.Ich kann mir Gründe vorstellen, dass "man" nicht möchte, dass VIS auf Daten außerhalb seiner Struktur Zugriff hat, dennoch nun meine Frage:
lässt sich das ändern - oder mache ich vll. auch nur etwas falsch ?
Es wäre auch für weitere Projekte sehr hilfreich, da viele APIs Daten nun mal "ganz wo anders" ablegen....auf die ich aber gerne Zugreifen würde.Bedanke mich für jeden Tipp und Hinweis!
Grüße JohnEDIT:
kleiner Nachtrag - habe gerade festgestellt das auch Files in einem neu angelegten Ordner in /vis.0/ nicht zugreifbar sind.
bsp: ./vis.0/snapshotOrdner und Files sind jeweils 777, Besitzer "iobroker".
Den Ordner habe ich inkl. Datei darin mit einem J-skript per exec command kopieren lassen. DAS ging prima.
bin etwas ratlos. Alles in /vis.0/ zu packen wird ziemlich unübersichtlich und schwierig vom Handling. -
Bilder nur noch über den Dateimanager im VIS Editor hochladen , nicht mit einem externen Programm .
Ist sein JS2 so....
Link Textlässt sich das ändern
suche mal danach , dann wirst du die Lösung auch dazu finden .
fs.readFileSync writeFile
-
hi @Glasfaser - danke dir !
Fürs generelle Verständnis hilft das auf jeden Fall - wenigstens was meine Probleme in der Vergangenheit angeht.
Bedeutet also selbst wenn ich Daten im korrekten Verzeichnis ablege "...bzw. die Dateien müssen in offiziell definierte Adapter-Basisverzeichnisse (z.B. vis.0..."
sind diese nicht "lesbar" weil ein Index oder was auch immer fehlt?Ich muss die Daten also über diesen "fs-Befehl" handeln?
Hab ich eine Möglichkeit die Dateien quasi nachträglich registrieren zu lassen?Wie das generell mit dem Command funktioniert muss ich mir noch ansehen - bin noch nicht ganz durchgestiegen ehrlich gesagt.
-
Kannst du hier mit dem Script sehr gut sehen
wird von.... nach 0_userdata.0 kopiert
const bild1 = fs.readFileSync('/tuer/alarm1.jpg'); writeFile('0_userdata.0','alarm1.jpg', bild1);
oder nach vis.0
const bild1 = fs.readFileSync('/tmp/max1.jpg'); writeFile('vis.0','/_temp/Max/Max1.jpg', bild1);
-
Besten Dank - ein simples Beispiel für "doofe" - das hat mir noch gefehlt
Alles weitere sollte hoffentlich klappen.
Danke nochmal - so macht "Forum" Spaß!
Grüße John.
-
kleiner Nachtrag für die, die vll. auf dieses Thema stoßen:
ich musste der JS Funktion noch ein
var fs = require('fs');
voran stellen! Wissen vermutlich alle..mit war's nicht klar
-
@Leone-Mortuo sagte in Pfade außerhalb ./vis.0/ nicht (mehr) zugreifbar:
var fs = require('fs');
Stehe vor der selben Aufgabe.
Würdest Du mir das script senden
danke -
@Glasfaser sagte in Pfade außerhalb ./vis.0/ nicht (mehr) zugreifbar:
Kannst du hier mit dem Script sehr gut sehen
wird von.... nach 0_userdata.0 kopiert
const bild1 = fs.readFileSync('/tuer/alarm1.jpg'); writeFile('0_userdata.0','alarm1.jpg', bild1);
Wenn er sie aber in seinem Vis-Projekt verwenden wollte, wären die Bilder in diesem Fall aber dort nicht gelistet oder doch?
-
hier mein bisher erfolgloser versuch, die vid-datei livesteam.mp4 zum datenpunkt "Ring" zu "kopieren, um sie anschließend zu visualisieren.
das ist meine erste Erfahrung mit java.
createState("javascript.0.Kamera.Ring"); schedule("*/30 * * * * *", async function () { var fs = require('fs'); const Ring = fs.readFileSync('opt/iobroker/iobroker-data/Ring/livestream.mp4'); writeFile('javascript.0.Kamera','livestream.mp4', Ring); });
-
@efxz
was möchtest du denn da realisieren? -
@Peoples
Ich möchte einen 20sec Videostream, den mein Ring Doorbell unter /opt/iobroker/... anlegt in meine Visualisierung einbinden.
Trigger und Ausgabe mit Telegram habe ich mit blockly realisiert. -
@efxz
und du bist dir sicher dass das mit einem Videostream funktioniert?Ein Bild wäre ja kein Thema.
Btw. sollte die Ring nicht wie meine Doorbird auch eine App haben um genau das zu tun was du realisieren willst?
-
@Peoples
Moin, der Themenstarter scheint's ja gelöst zu haben. -
@efxz
Dann musst du den Mal direkt fragen