Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Javascript Permission Error

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Javascript Permission Error

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      strackfi last edited by

      Hallo zusammen,

      Ich habe folgendes Script gestern noch erfolgreich getestet und nach dem heutigen Update auf admin 3.3.9

      kommt im Log nur noch eine Fehlermeldung:

      Script:

      //####################################Kalender Script#######################################
      //Zuerst objects.json kopieren, da auf diese nicht zugegreiffen werden kann
      exec("cp /opt/iobroker/iobroker-data/objects.json /opt/iobroker/iobroker-data/obj.json","");
      //Datei Pfad zur kopierten objects.json angeben 
      const datei = "/opt/iobroker/iobroker-data/obj.json";
      //fs einbinden
      var fs = require('fs');
      
      on({id: "system.adapter.fullcalendar.0.alive" }, function (obj) {
        //per fs file einlesen und Namen, der Events als Array spiechern
        fs.readFile(datei, function(err, json) {
         if(err) log('Fehler Datei lesen: ' + err, 'error');
         else {
          log("Abfrage durchgeführt");
          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;
          }
          setState("admin.0.calendar.event_list",strList);
         }
        }); 
      });
      
      

      und die besagte Fehlermeldung:

      javascript.2	2018-04-19 14:55:45.132	error	Error in callback: Error: Permission denied
      javascript.2	2018-04-19 14:55:45.131	error	May not read /opt/iobroker/iobroker-data/obj.json
      
      

      Danke schomal für eure Hilfe

      Gruß Finn

      1 Reply Last reply Reply Quote 0
      • wendy2702
        wendy2702 last edited by

        Mal die Datei Berechtigungen der Datei angeschaut?

        ls -la /opt/iobroker/iobroker-data/
        
        1 Reply Last reply Reply Quote 0
        • S
          strackfi last edited by

          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
          
          
          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            Hast Du es mal mit einer anderen Dateiendung versucht, z.B. obj.text ?

            1 Reply Last reply Reply Quote 0
            • S
              strackfi last edited by

              @paul53 auch hier kommt die besagte Fehlermeldung. Auch bei einer komplett leeren Datei in einem anderen Verzeichnis wird die Fehlermeldung ausgegeben.

              So langsam bin ich am verzweifeln :oops:

              Gruß Finn

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                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.

                1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 last edited by

                  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(); // Scriptstart
                  
                  

                  Die Datei wird kopiert und anschließend problemlos gelesen (Log: Datei gelesen).

                  Keine Ahnung, was bei Dir schief läuft :shock:

                  1 Reply Last reply Reply Quote 0
                  • ruhr70
                    ruhr70 last edited by

                    Habe das mit Deinem Skript und identischer Admin Version auch einmal getestet.

                    Die Datei wird kopiert und gelesen.

                    Der Teil mit der Auswertung erzeugt dann allerdings einen Fehler.

                    1 Reply Last reply Reply Quote 0
                    • paul53
                      paul53 last edited by

                      @ruhr70:

                      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;
                      
                      1 Reply Last reply Reply Quote 0
                      • ruhr70
                        ruhr70 last edited by

                        @paul53:

                        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;
                            }
                        
                        1 Reply Last reply Reply Quote 0
                        • S
                          strackfi last edited by

                          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

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          604
                          Online

                          31.7k
                          Users

                          79.8k
                          Topics

                          1.3m
                          Posts

                          4
                          11
                          1843
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo