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. Skripten / Logik
  4. JavaScript
  5. Konfiguration für eigene Scripts

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    876

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Konfiguration für eigene Scripts

Geplant Angeheftet Gesperrt Verschoben JavaScript
7 Beiträge 3 Kommentatoren 375 Aufrufe 3 Watching
  • Ä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.
  • M Offline
    M Offline
    MisterKrueml
    schrieb am zuletzt editiert von MisterKrueml
    #1

    Hallo miteinander,

    ich bin zur Zeit dabei die Lichtsteuerung für meine Wohnung zu überarbeiten. Ich habe deCONZ im Einsatz und das funktioniert gut, es ist aber noch sehr nah dran an Zigbee selbst. In Sachen Home-Automation habe ich vor allem die Möglichkeit vermisst, eine Szene für die gesamte Beleuchtung auszuwählen, die dann aber erst beim Betätigen eines Taster für den jeweiligen Raum angeschaltet wird. Mit einem ioBroker Script konnte ich das und mehr ohne weiteres umsetzen, die Kommunikation mit deCONZ funktioniert reibungslos!

    Ich verwalte meinen Code generell in git, d.h. ich würde von der "Mirror scripts to file path" Funktion im JavaScript Adapter gebrauch machen. Nun habe ich mich aber gefragt was die gängige Lösung ist um eine Art Konfiguration (z.B. als JSON) für die eigenen Skripte zu realisieren. Im Prinzip gibt es wohl drei Möglichkeiten:

    • Konfiguration direkt im JavaScript File. So mache ich es im Moment und das gefällt mir nicht.
    • Konfiguration in einer separaten Datei irgendwo im File-System. Man setzt in ioBroker dann eine Variable / "State", die den Pfad angibt. Das JavaScript schaut in den State und lädt mit fs.readFileSync von dem hinterlegten Pfad.
    • Gesamte Konfiguration gespeichert in einer Baumstruktur aus ioBroker Objekten. Vorteil hier wäre, dass man die Baumansicht der ioBroker Objekte nutzen könnte um das Skript zu konfigurieren.

    Wie macht ihr das normalerweise? Interessant wäre z.B. auch zu wissen wo Adapter in der Regel ihr Konfiguration speichern. Hat jemand die eine oder andere Lösung schonmal ausprobiert?

    Viele Grüße
    Krueml

    arteckA F 2 Antworten Letzte Antwort
    0
    • M MisterKrueml

      Hallo miteinander,

      ich bin zur Zeit dabei die Lichtsteuerung für meine Wohnung zu überarbeiten. Ich habe deCONZ im Einsatz und das funktioniert gut, es ist aber noch sehr nah dran an Zigbee selbst. In Sachen Home-Automation habe ich vor allem die Möglichkeit vermisst, eine Szene für die gesamte Beleuchtung auszuwählen, die dann aber erst beim Betätigen eines Taster für den jeweiligen Raum angeschaltet wird. Mit einem ioBroker Script konnte ich das und mehr ohne weiteres umsetzen, die Kommunikation mit deCONZ funktioniert reibungslos!

      Ich verwalte meinen Code generell in git, d.h. ich würde von der "Mirror scripts to file path" Funktion im JavaScript Adapter gebrauch machen. Nun habe ich mich aber gefragt was die gängige Lösung ist um eine Art Konfiguration (z.B. als JSON) für die eigenen Skripte zu realisieren. Im Prinzip gibt es wohl drei Möglichkeiten:

      • Konfiguration direkt im JavaScript File. So mache ich es im Moment und das gefällt mir nicht.
      • Konfiguration in einer separaten Datei irgendwo im File-System. Man setzt in ioBroker dann eine Variable / "State", die den Pfad angibt. Das JavaScript schaut in den State und lädt mit fs.readFileSync von dem hinterlegten Pfad.
      • Gesamte Konfiguration gespeichert in einer Baumstruktur aus ioBroker Objekten. Vorteil hier wäre, dass man die Baumansicht der ioBroker Objekte nutzen könnte um das Skript zu konfigurieren.

      Wie macht ihr das normalerweise? Interessant wäre z.B. auch zu wissen wo Adapter in der Regel ihr Konfiguration speichern. Hat jemand die eine oder andere Lösung schonmal ausprobiert?

      Viele Grüße
      Krueml

      arteckA Offline
      arteckA Offline
      arteck
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @misterkrueml sagte in Konfiguration für eigene Scripts:

      Konfiguration direkt im JavaScript File

      was meinst du mit Konfiguration ??

      zigbee hab ich, zwave auch, nuc's genauso und HA auch

      M 1 Antwort Letzte Antwort
      0
      • arteckA arteck

        @misterkrueml sagte in Konfiguration für eigene Scripts:

        Konfiguration direkt im JavaScript File

        was meinst du mit Konfiguration ??

        M Offline
        M Offline
        MisterKrueml
        schrieb am zuletzt editiert von MisterKrueml
        #3

        @arteck said in Konfiguration für eigene Scripts:

        @misterkrueml sagte in Konfiguration für eigene Scripts:

        Konfiguration direkt im JavaScript File

        was meinst du mit Konfiguration ??

        Ich habe das Script recht generisch geschrieben, so dass es im Prinzip für beliebige Wohnungen oder Häuser funktionieren würde - solange die Konfiguration auf die jeweilige Wohnung / Haus angepasst wird. Damit assoziiere ich z.B. Schalter mit Räumen oder die States in ioBroker, die die Szene für den Raum angeben und so weiter. Ein Beispiel für das Wohnzimmer mit Kommentaren:

        const living_room = {
            groupName: '[Living Room] All',  /* deCONZ Gruppe */
            buttons: [
                {name: '[Living Room] Remote', id: 1},  /* deCONZ Taster */
            ],
            sceneId: 'living_room',  /* Variable in ioBroker, die die Szene für das Wohnzimmer angibt */
            switchId: 'living_room.main',  /* Variable in ioBroker, die als "virtuellen Switch" für Homekit fungiert */
        }
        

        Das kann ich ja alles ohne weiteres auslagern, so dass das Skript selbst unabhängig von einem konkreten Setup bleibt. Die Frage ist nur, wohin damit?

        arteckA 1 Antwort Letzte Antwort
        0
        • M MisterKrueml

          @arteck said in Konfiguration für eigene Scripts:

          @misterkrueml sagte in Konfiguration für eigene Scripts:

          Konfiguration direkt im JavaScript File

          was meinst du mit Konfiguration ??

          Ich habe das Script recht generisch geschrieben, so dass es im Prinzip für beliebige Wohnungen oder Häuser funktionieren würde - solange die Konfiguration auf die jeweilige Wohnung / Haus angepasst wird. Damit assoziiere ich z.B. Schalter mit Räumen oder die States in ioBroker, die die Szene für den Raum angeben und so weiter. Ein Beispiel für das Wohnzimmer mit Kommentaren:

          const living_room = {
              groupName: '[Living Room] All',  /* deCONZ Gruppe */
              buttons: [
                  {name: '[Living Room] Remote', id: 1},  /* deCONZ Taster */
              ],
              sceneId: 'living_room',  /* Variable in ioBroker, die die Szene für das Wohnzimmer angibt */
              switchId: 'living_room.main',  /* Variable in ioBroker, die als "virtuellen Switch" für Homekit fungiert */
          }
          

          Das kann ich ja alles ohne weiteres auslagern, so dass das Skript selbst unabhängig von einem konkreten Setup bleibt. Die Frage ist nur, wohin damit?

          arteckA Offline
          arteckA Offline
          arteck
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @misterkrueml ahh jetzt ja... hmm..

          über generische Steuerung habe ich mir nie gedanken gemacht zumindest nicht so wie du es schreibst .. da man hierfür den scenen oder in Scripten Rules verwenden kann.mein Haus hat in jedem Zimmer eine einzelne Steuerung da überschneidet sich nix..
          das einzig generische ist "Haus verlassen" -> alles aus..und guten nacht

          zigbee hab ich, zwave auch, nuc's genauso und HA auch

          1 Antwort Letzte Antwort
          0
          • M MisterKrueml

            Hallo miteinander,

            ich bin zur Zeit dabei die Lichtsteuerung für meine Wohnung zu überarbeiten. Ich habe deCONZ im Einsatz und das funktioniert gut, es ist aber noch sehr nah dran an Zigbee selbst. In Sachen Home-Automation habe ich vor allem die Möglichkeit vermisst, eine Szene für die gesamte Beleuchtung auszuwählen, die dann aber erst beim Betätigen eines Taster für den jeweiligen Raum angeschaltet wird. Mit einem ioBroker Script konnte ich das und mehr ohne weiteres umsetzen, die Kommunikation mit deCONZ funktioniert reibungslos!

            Ich verwalte meinen Code generell in git, d.h. ich würde von der "Mirror scripts to file path" Funktion im JavaScript Adapter gebrauch machen. Nun habe ich mich aber gefragt was die gängige Lösung ist um eine Art Konfiguration (z.B. als JSON) für die eigenen Skripte zu realisieren. Im Prinzip gibt es wohl drei Möglichkeiten:

            • Konfiguration direkt im JavaScript File. So mache ich es im Moment und das gefällt mir nicht.
            • Konfiguration in einer separaten Datei irgendwo im File-System. Man setzt in ioBroker dann eine Variable / "State", die den Pfad angibt. Das JavaScript schaut in den State und lädt mit fs.readFileSync von dem hinterlegten Pfad.
            • Gesamte Konfiguration gespeichert in einer Baumstruktur aus ioBroker Objekten. Vorteil hier wäre, dass man die Baumansicht der ioBroker Objekte nutzen könnte um das Skript zu konfigurieren.

            Wie macht ihr das normalerweise? Interessant wäre z.B. auch zu wissen wo Adapter in der Regel ihr Konfiguration speichern. Hat jemand die eine oder andere Lösung schonmal ausprobiert?

            Viele Grüße
            Krueml

            F Offline
            F Offline
            fastfoot
            schrieb am zuletzt editiert von fastfoot
            #5

            @misterkrueml ich nutze das zwar nicht selbst, aber mit require() kannst du zB eine Konfiguration laden. Der Pfad ist relativ zu /opt/iobroker/node_modules/ anzugeben. Wenn Du deinen Config ordner also in /opt/iobroker/configs/ hast, dann kansst du eine Datei myConfig.json so laden

            // {
            //     "baseID":"0_userdata.0.TestDP",
            //     "reset":"0_userdata.0.TestDP.Reset"
            // }
            const myConfig = require('../configs/myConfig.json');
            log(myConfig.baseID);
            log(myConfig.reset);
            

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            M 1 Antwort Letzte Antwort
            0
            • F fastfoot

              @misterkrueml ich nutze das zwar nicht selbst, aber mit require() kannst du zB eine Konfiguration laden. Der Pfad ist relativ zu /opt/iobroker/node_modules/ anzugeben. Wenn Du deinen Config ordner also in /opt/iobroker/configs/ hast, dann kansst du eine Datei myConfig.json so laden

              // {
              //     "baseID":"0_userdata.0.TestDP",
              //     "reset":"0_userdata.0.TestDP.Reset"
              // }
              const myConfig = require('../configs/myConfig.json');
              log(myConfig.baseID);
              log(myConfig.reset);
              
              M Offline
              M Offline
              MisterKrueml
              schrieb am zuletzt editiert von MisterKrueml
              #6

              @fastfoot said in Konfiguration für eigene Scripts:

              @misterkrueml ich nutze das zwar nicht selbst, aber mit require() kannst du zB eine Konfiguration laden. Der Pfad ist relativ zu /opt/iobroker/node_modules/iobroker.javascript/lib/ anzugeben. Wenn Du deinen Config ordner also in /opt/iobroker/configs/ hast, dann kansst du eine Datei myConfig.json so laden

              // {
              //     "baseID":"0_userdata.0.TestDP",
              //     "reset":"0_userdata.0.TestDP.Reset"
              // }
              const myConfig = require('../../../configs/myConfig.json');
              log(myConfig.baseID);
              log(myConfig.reset);
              

              Ja genau, an sowas hatte ich gedacht. Ich habe überlegt fs zu nutzen, um zu vermeiden, dass der Pfad relativ sein muss:

              const fs = require('fs')
              const raw = fs.readFileSync('/absolute/path/to/file')
              const config = JSON.parse(raw)
              

              Ich denke das könnte beides eine gute Lösung sein, da so die Config auch direkt in einem git Repo liegen kann.

              F 1 Antwort Letzte Antwort
              0
              • M MisterKrueml

                @fastfoot said in Konfiguration für eigene Scripts:

                @misterkrueml ich nutze das zwar nicht selbst, aber mit require() kannst du zB eine Konfiguration laden. Der Pfad ist relativ zu /opt/iobroker/node_modules/iobroker.javascript/lib/ anzugeben. Wenn Du deinen Config ordner also in /opt/iobroker/configs/ hast, dann kansst du eine Datei myConfig.json so laden

                // {
                //     "baseID":"0_userdata.0.TestDP",
                //     "reset":"0_userdata.0.TestDP.Reset"
                // }
                const myConfig = require('../../../configs/myConfig.json');
                log(myConfig.baseID);
                log(myConfig.reset);
                

                Ja genau, an sowas hatte ich gedacht. Ich habe überlegt fs zu nutzen, um zu vermeiden, dass der Pfad relativ sein muss:

                const fs = require('fs')
                const raw = fs.readFileSync('/absolute/path/to/file')
                const config = JSON.parse(raw)
                

                Ich denke das könnte beides eine gute Lösung sein, da so die Config auch direkt in einem git Repo liegen kann.

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #7

                @misterkrueml mich hat halt gestört, für ein Skript 2 Dateien zu haben, meist sind meine Projekte recht klein. Gefallen hat mir bei require() der Einzeiler :-)

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                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

                716

                Online

                32.6k

                Benutzer

                82.1k

                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