Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. ReadFilesSync - korrekten Adapterpfad ermitteln

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    ReadFilesSync - korrekten Adapterpfad ermitteln

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

      Hallo, ich möchte aus dem Files Verzeichnis des Adapters ein Files lesen. In etwa so:

      var settings = JSON.parse(require('fs').readFileSync('/iobroker-data/files/adaptername/settings.json').toString());

      Wie finde ich den korrekten Pfad des Adapters? Ich mein, bei jedem kann der iobroker ja woanders installiert sein. Mit welcher Methode ermittel ich erstmal wo das iobroker-data Verzeichnis liegt?

      LG und Danke!

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

        Verzeichnis des Adapters? Liegt das file im selben Verzeichnis wie das ausgeführte js file?! Dann __dirname is your friend. Da steht das Verzeichnis des scriptfiles drin. Von d aus kannst du weitergehen.

        Iobroker-Data ist dann was anderes. Wie du das findest kannst du im History Adapter nachschauen.

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

          Danke!

          Also ich arbeite im Frontend nicht in der Admin Oberfläche. Wenn ich das folgenden probiere:

          var fs = require('fs');
          var settings = JSON.parse(fs.readFile(__dirname + '/../config/config.json').toString());
          

          Kommt der Error "require is not defined"

          Und wenn ich folgendes probiere (Im VIS Adapter abgeschaut):

          var settings = JSON.parse(ngl.conn.readFile(__dirname + '/../config/config.json').toString());
          

          Sagt er mir: "__dirname is not defined"

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

            Du willst also auf das generelle ioBroker Konfigfile zugreifen?

            Was heisst "Du arbeitest nicht in der Adminoberfläche"?

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

              Ich Bastel gerade auf einer Seite im Frontend rum, öhnlich der Edit Seite im VIS. Ich bin also in www und nicht in admin unterwegs. Dort scheint einiges anders zu laufen 🙂 Sorry ich bin gerade dabei Stück für Stück zu lernen. Ich wollte testweise mal eine JSON Datei anlegen und diese lesen / schreiben um User-Konfigurationsdaten zu speichern. Ähnlich wie VIS die Widget-Konfigurationen der Nutzer abspeichert… Bin ich auf dem Holzweg?

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                @snador:

                Bin ich auf dem Holzweg? `
                Ja. Das "Frontend" läuft im Browser, der keinen Zugriff auf Daten des ioBroker-Hosts hat. Außerdem läuft der nicht mit NodeJS, sodass require, __dirname und Module wie "fs" nicht existieren.

                Vis und viele andere Adapter-Frontends machen das was du vor hast über Socket-Kommunikation mit dem Adapter, der wiederum den Datenzugriff auf Festplatte und so übernimmt.

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

                  Also folgender Code funktioniert (Bedingung siehe unten):

                  ngl.conn.readFile("config.json",function (err, data){
                  			console.log('yo');
                  			if (err) {
                                  window.alert(theFile + ' ' + err);
                                  if (err === 'permissionError') {
                                      that.showWaitScreen(true, '', _('Loading stopped', location.protocol + '//' + location.host, location.protocol + '//' + location.host), 0);
                                      // do nothing any more
                                      return;
                                  }
                              }
                  			if(data){
                  				console.log('data success:'+data);
                  			}
                  		})
                  

                  Allerdings erst wenn ich unter iobroker-data/files einen Ordner mit dem Namen adaptername.0 anlege. Kann mir das Jemand erklären? Ein Ordner iobroker-data/files/adaptername war bereits vorhanden. Allerdings geht das readfile wohl explizit auf den adaptername.0 Ordner.

                  Und warum wird der Ordner adaptername.0 nicht automatisch bei upload angelegt wenn der Adapter doch als 0 Instanz läuft?

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

                    Danke für eure Erklärungen, so ganz langsam wie eine Schnecke komm ich weiter 🙂

                    Dies hier funktioniert:

                    var theFile = '/adaptername/config.json';
                    ngl.conn.readFile(theFile,function (err, data){
                    ...
                    
                    

                    Also eigentlich logisch. Vom Root des iobroker-data Verzeichnisses aus…

                    1 Reply Last reply Reply Quote 0
                    • AlCalzone
                      AlCalzone Developer last edited by

                      @snador:

                      Allerdings erst wenn ich unter iobroker-data/files einen Ordner mit dem Namen adaptername.0 anlege. Kann mir das Jemand erklären? Ein Ordner iobroker-data/files/adaptername war bereits vorhanden. Allerdings geht das readfile wohl explizit auf den adaptername.0 Ordner. `
                      Das liegt daran, weil jede Adapter-Instanz unabhängig voneinander ist und erst mal ihre eigene Konfiguration und ihr eigenes Datenverzeichnis hat.

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      762
                      Online

                      31.7k
                      Users

                      79.8k
                      Topics

                      1.3m
                      Posts

                      3
                      9
                      642
                      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