NEWS
[Gelöst] Javascript Permission Error
-
Hat damit leider nix zu tun, da ich in egal welchem Verzeichnis immer diesen Error bekomme.
Trotzdem hier mal das Ergebnis:
drwxrwxr-x 3 root root 4096 Apr 19 14:43 . drwxrwxrwx 7 root root 4096 Apr 19 14:40 .. drwxrwxrwx 18 root root 4096 Apr 16 19:48 files -rwxrwxrwx 1 root root 2234 Apr 5 14:18 iobroker.json -rwxrwxrwx 1 root root 1081114 Apr 19 14:56 obj.json -rwxrwxrwx 1 root root 1081115 Apr 19 14:57 objects.json -rwxrwxrwx 1 root root 1081114 Apr 19 14:57 objects.json.bak -rwxrwxrwx 1 root root 15464 Apr 19 15:07 states.json -rwxrwxrwx 1 root root 15466 Apr 19 15:07 states.json.bak -
Weshalb wird auf "system.adapter.fullcalendar.0.alive" bei "any" getriggert ? Das passiert alle 15 s, also recht häufig.
Anmerkung: Das Kopieren der Datei objects.json erfolgt nur einmal bei Skriptstart. Wenn getriggert wird, ist die Kopie nicht unbedingt aktuell. Damit das Kopieren beendet ist, bevor die Datei eingelesen wird, sollte das Lesen innerhalb einer Callback-Funktion von exec(cmd, callback) erfolgen.
-
Auf meinem RPi 2 habe ich mal den Dateizugriff getestet (ohne Auswertung des Inhalts).
const datei = "/opt/iobroker/iobroker-data/objects.test"; var fs = require('fs'); function getCal() { exec('cp /opt/iobroker/iobroker-data/objects.json ' + datei, function(err, stdout, stderr) { if(err) log(stderr, 'error'); else { fs.readFile(datei, function(err, json) { if(err) log('Fehler Datei lesen: ' + err, 'error'); else { log('Datei gelesen'); } }); } }); } getCal(); // ScriptstartDie Datei wird kopiert und anschließend problemlos gelesen (Log: Datei gelesen).
Keine Ahnung, was bei Dir schief läuft :shock:
-
Der Teil mit der Auswertung erzeugt dann allerdings einen Fehler. `
Ich habe mal das Skript um eine Auswertung erweitert (fullcalendar habe ich auf dem PI nicht installiert, da Produktivsystem) und das Ergebnis ist wie erwartet.else { var obj = JSON.parse(json); var strlist = ''; for(var index in obj) { if (index.indexOf('javascript.0.Aussen.T') !== -1) { strlist = strlist + getObject(index).common.name + ';'; } } log('Datei gelesen: ' + strlist); }Log:
javascript.0 script.js.common.Test: Datei gelesen: Aussen.Temperatur;Aussen.Taupunkt;Aussen.Temperatur-Min-24h;Aussen.Temperatur-Max-24h;Aussen.Temperatur-Mittel-24h;Aussen.Temperatur-Liste-24h; -
Ich habe mal das Skript um eine Auswertung erweitert (fullcalendar habe ich auf dem PI nicht installiert, da Produktivsystem) und das Ergebnis ist wie erwartet. `
Hätte ich jetzt auch erwartet

Der Code-Teil oben, der nicht funktioniert, ist auch ein Anderer:
var list = new Array(""); var strList = ""; var obj = JSON.parse(json); for(var index in obj) { // var indexObj = JSON.stringify(obj); if (index.indexOf('fullcalendar.0.20') !== -1) { list.push(getObject(index).common.name); } strList += getObject(index).common.name; } -
Hi,
Ich habs jetzt auch mal geschafft zu antworten..
1. Das Auslesen hat nicht funktioniert, da ich in der javascript.js einige Änderungen gemacht hatte. Diese wurde jetzt natürlich überschrieben …..
2. Das Skript habe ich auch angepasst, ich darf ja nur ein Objekt von der ID fordern wenn die ID auch fullcalender.0.20..... entspricht. Ansonsten funktioniert die Punkt Notation ja nicht.
Jetzt funktioniert alles.
Danke für eure Hilfe
Gruß Finn