NEWS
Verzeichnisrechte für VIS
-
Hallo,
jedesmal wenn der Klingeltaster betätigt wird, wird ein Snapshot von einer Aussenkamera auf einen, am ioBroker Server angeschlossene SD-Karte geschrieben.
Bisher habe ich den Snapshot immer direkt in das VIS-Verzeichnis abgelegt und konnte dann auch problemlos auf die Bilder von VIS aus zugreifen:im HTML-Widget:
<img src="{javascript.0.Sonderfunktionen.KlingelBild1}" height="100" width="175">
in "javascript.0.Sonderfunktionen.KlingelBild1" steht das Verzeichnis sowie der Name:
... // Bilder durchrotieren. An position 0 steht immer das letzte Bild KlingelBilder[2] = KlingelBilder[1]; KlingelBilder[1] = KlingelBilder[0]; KlingelBilder[0] = '/vis/KameraBilder/' + Name; // Bildname mit Verzeichnis merken setState('javascript.0.Sonderfunktionen.KlingelBild1', KlingelBilder[0]); setState('javascript.0.Sonderfunktionen.KlingelBild2', KlingelBilder[1]); setState('javascript.0.Sonderfunktionen.KlingelBild3', KlingelBilder[2]); ...
Das hat auch immer gut funktioniert bis ich jetzt die Bilder auf der SD-Karte speichere. Also nicht mehr im VIS-Verzeichnis.
var img_path = '/home/USB/bellpics/'; ... // Bildnamen erzeugen var Name = 'Eing_'+time.getFullYear()+time.getMonth()+time.getDate()+'_'+time.getHours()+time.getMinutes()+time.getSeconds()+'.jpg'; request.get({url: cam_img, encoding: 'binary'}, function (err, response, body) { fs.writeFile(img_path + Name, body, 'binary', function(err) { ...
das Verzeichnis /home/USB/bellpics wird auf die SD-Karte gemountet und hat folgende Rechte:
Wie kann ich denn jetzt direkt auf das neue Bilderverzeichnis von VIS aus zugreifen? Ich habe schon versucht einen Symbolischen Link im VIS-Verzeichnis anzulegen der auf dieses Bilderverzeichnis zeigt. Das scheint aber nicht zu funktionieren weil ?Die Rechte nicht passen?
Wie muss der Link im HTML-Code aussehen um direkt auf das SD-Kartenverzeichnis von VIS aus zuzugreifen?Kann mir das jemand helfen?
Vielen Dank,
Artur
-
Mit der Einführung von js-controller 2.0 haben sich die Verzeichnisrechte geändert, wahrscheinlich liegts daran.
Hier der link zum Beitrag:
https://forum.iobroker.net/topic/26759/js-controller-2-jetzt-für-alle-im-stable/2Und hier ein alter Beitrag von mir wo ich ein Script eingestellt habe mit dem es wieder funktioniert:
https://forum.iobroker.net/topic/25541/gelöst-wie-writefile-in-js-script-nutzen/53 -
Ich habe noch ein wenig rumexperimentiert und folgendes heraus gefunden:
Das speichern mit "writeFile" funktioniert wunderbar, auch wenn man in ein Verzeichnis schreibt das eigentlich nur ein Symbolischer Link ist. Diese Dateien werden aber nicht von VIS gesehen obwohl exakt die gleichen Berechtigungen und Owner an den Dateien hängen wie bei Dateien die von VIS gesehen werden (nämlich genau die Dateien, die man über den Dateiexplorer von VIS hochgeladen hat. Nehme ich die für VIS "nicht" sichtbaren Dateien und lade sie per Dateiexplorer von VIS in exakt das gleiche Verzeichnis hoch, werden sie auch von VIS gesehen. Ich vermute also das diese Dateien irgendwie noch "registriert" werden müssen damit VIS sie sieht....@Peoples
Vielen Dank für den Hinweis. Ich habe mir Dein Script mal angesehen. Prinzipiell habe ich das gleiche gemacht. Bis auf diesen kleinen Unterschied:... var data = fs.readFileSync('/tmp/image.jpg'); writeFile('vis.'+visInstance, imageFolder + fname, data, function (error) { ...
Hier wird dann wahrscheinlich (mit "fs.readFileSync" - ich weis es aber nicht -) die Bilddatei der DB bekannt gemacht? Das habe ich vorher, also mit der "alten" js.controller Version (<2.0) nicht gemacht und es hatte funktioniert.
Wie auch immer, ich habe Deinen Code genommen und meinen Bedürfnissen ein wenig angepasst und nun funktioniert es auch bei mir mit den Symbolischen Links auf die gemountete SD-Karte.Vielen Dank für deine Hilfe.
Artur