Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. ReadFilesSync - korrekten Adapterpfad ermitteln

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

ReadFilesSync - korrekten Adapterpfad ermitteln

Geplant Angeheftet Gesperrt Verschoben Entwicklung
9 Beiträge 3 Kommentatoren 674 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • snadorS Offline
    snadorS Offline
    snador
    schrieb am zuletzt editiert von
    #1

    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 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      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.

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • snadorS Offline
        snadorS Offline
        snador
        schrieb am zuletzt editiert von
        #3

        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 Antwort Letzte Antwort
        0
        • apollon77A Offline
          apollon77A Offline
          apollon77
          schrieb am zuletzt editiert von
          #4

          Du willst also auf das generelle ioBroker Konfigfile zugreifen?

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

          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
          1 Antwort Letzte Antwort
          0
          • snadorS Offline
            snadorS Offline
            snador
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #6

              @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.

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Antwort Letzte Antwort
              0
              • snadorS Offline
                snadorS Offline
                snador
                schrieb am zuletzt editiert von
                #7

                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 Antwort Letzte Antwort
                0
                • snadorS Offline
                  snadorS Offline
                  snador
                  schrieb am zuletzt editiert von
                  #8

                  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 Antwort Letzte Antwort
                  0
                  • AlCalzoneA Offline
                    AlCalzoneA Offline
                    AlCalzone
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    @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.

                    Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    891

                    Online

                    32.4k

                    Benutzer

                    81.5k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe