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. Script in mehrere Scripts aufteilen, ein Object pro Script

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Script in mehrere Scripts aufteilen, ein Object pro Script

Geplant Angeheftet Gesperrt Verschoben JavaScript
12 Beiträge 6 Kommentatoren 865 Aufrufe 4 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 Martin 5

    Hallo,
    ich möchte ein etwas umfangreicheres Script schreiben und der Übersicht wegen den Code auf mehrere Scripte aufteilen. Aus Java bin ich es gewöhnt für jedes Object eine Datei zu erzeugen. Geht das auch im ioBroker.
    Ich habe bei meiner Suche etwas von einem Global Ordner gefunden, finde ihn aber nicht im ioBroker.
    Kann man eigene Module erstellen und dann mit require einbinden?

    Vorab vielen Dank für Antworten.
    Grüße Martin

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #2

    @martin-5 sagte: Global Ordner gefunden, finde ihn aber nicht im ioBroker.

    Im Expertenmodus von Javascript findet man die Gruppe "global". Skripte dort sollten nur häufig verwendete eigene Funktionen enthalten.

    @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

    Kann man eigene Module erstellen und dann mit require einbinden?

    Kann man, wenn man weis, wie Module erstellt werden.
    Wenn die eigenen Module unter "iobroker-data/modules" liegen:

    const clock = require('../../../iobroker-data/modules/test.js');
    

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    M U 2 Antworten Letzte Antwort
    1
    • paul53P paul53

      @martin-5 sagte: Global Ordner gefunden, finde ihn aber nicht im ioBroker.

      Im Expertenmodus von Javascript findet man die Gruppe "global". Skripte dort sollten nur häufig verwendete eigene Funktionen enthalten.

      @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

      Kann man eigene Module erstellen und dann mit require einbinden?

      Kann man, wenn man weis, wie Module erstellt werden.
      Wenn die eigenen Module unter "iobroker-data/modules" liegen:

      const clock = require('../../../iobroker-data/modules/test.js');
      
      M Offline
      M Offline
      Martin 5
      schrieb am zuletzt editiert von
      #3

      @paul53 Danke.
      Den globalen Ordner habe ich nun gefunden. Ist ja auch keine Leistung. ;-)
      Bei den Modulen bin ich nicht weiter gekommen. Ist aber auch nicht das was ich suche. Wenn man ein größeres Script schreiben möchte wird es schnell unübersichtlich.
      Beispiel:
      Ich erstelle eine Klasse aus der ich mehrere weitere Klassen ableite. In Java wird jede Klasse in eine Datei geschrieben wobei der Klassenname gleich dem Dateinamen ist. Alle Klassen in einem Verzeichnis sehen sich gegenseitig. Das ist recht praktisch und nach meinem Empfinden auch übersichtlich.
      Aber vielleicht sollen die Scripte auch gar nicht so groß werden.

      Grüße Martin

      CodierknechtC 1 Antwort Letzte Antwort
      0
      • M Martin 5

        @paul53 Danke.
        Den globalen Ordner habe ich nun gefunden. Ist ja auch keine Leistung. ;-)
        Bei den Modulen bin ich nicht weiter gekommen. Ist aber auch nicht das was ich suche. Wenn man ein größeres Script schreiben möchte wird es schnell unübersichtlich.
        Beispiel:
        Ich erstelle eine Klasse aus der ich mehrere weitere Klassen ableite. In Java wird jede Klasse in eine Datei geschrieben wobei der Klassenname gleich dem Dateinamen ist. Alle Klassen in einem Verzeichnis sehen sich gegenseitig. Das ist recht praktisch und nach meinem Empfinden auch übersichtlich.
        Aber vielleicht sollen die Scripte auch gar nicht so groß werden.

        Grüße Martin

        CodierknechtC Online
        CodierknechtC Online
        Codierknecht
        Developer Most Active
        schrieb am zuletzt editiert von
        #4

        @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

        Den globalen Ordner habe ich nun gefunden

        Globale Scripte haben - meiner bescheidenen Meinung nach - einen entscheidenden Nachteil: Sie werden in alle anderen Scripte "reinkopiert". Auch dort, wo man sie gar nicht benötigt.

        Ich würde @paul53's Vorschlag mit den Modulen verfolgen ...

        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
        HmIP|ZigBee|Tasmota|Unifi
        Zabbix Certified Specialist
        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

        U 1 Antwort Letzte Antwort
        1
        • CodierknechtC Codierknecht

          @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

          Den globalen Ordner habe ich nun gefunden

          Globale Scripte haben - meiner bescheidenen Meinung nach - einen entscheidenden Nachteil: Sie werden in alle anderen Scripte "reinkopiert". Auch dort, wo man sie gar nicht benötigt.

          Ich würde @paul53's Vorschlag mit den Modulen verfolgen ...

          U Offline
          U Offline
          uwe72
          schrieb am zuletzt editiert von uwe72
          #5

          @codierknecht Exakt, der Mechanismus der Global Scripte ist sehr gewöhnungsbedürftig, dass dies da einfach in die common reingeschrieben wird, ob sie dort gebraucht werden oder nicht. Dies übrigens noch Java-Script-Instanzen-übergreifend.

          Als ehemaliger Java-Entwickler wünscht man sich, dass man den Code den man öfters benötigt in einer "anderen Stelle" (externes File, Module,...) einmal schreibt und hinterlegt und dann in den common-Scripten per import/requires einzubindet.

          Vor einem halben Jahr war ich da schon sehr weit dies auszuprobieren, hatte am Ende aber aufgegeben. Da es glaub mit TypeScript dann noch schwieriger war. Kann mich generell nicht mehr erinnern, was das Problem war. Müsste hier auch Posts dazu geben zu diesem Thema.

          Hast Du das Thema mit den "externen Modulen" schon verfolgt?

          1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @martin-5 sagte: Global Ordner gefunden, finde ihn aber nicht im ioBroker.

            Im Expertenmodus von Javascript findet man die Gruppe "global". Skripte dort sollten nur häufig verwendete eigene Funktionen enthalten.

            @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

            Kann man eigene Module erstellen und dann mit require einbinden?

            Kann man, wenn man weis, wie Module erstellt werden.
            Wenn die eigenen Module unter "iobroker-data/modules" liegen:

            const clock = require('../../../iobroker-data/modules/test.js');
            
            U Offline
            U Offline
            uwe72
            schrieb am zuletzt editiert von
            #6

            @paul53 said in Script in mehrere Scripts aufteilen, ein Object pro Script:

            @martin-5 sagte: Global Ordner gefunden, finde ihn aber nicht im ioBroker.

            Im Expertenmodus von Javascript findet man die Gruppe "global". Skripte dort sollten nur häufig verwendete eigene Funktionen enthalten.

            @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

            Kann man eigene Module erstellen und dann mit require einbinden?

            Kann man, wenn man weis, wie Module erstellt werden.
            Wenn die eigenen Module unter "iobroker-data/modules" liegen:

            const clock = require('../../../iobroker-data/modules/test.js');
            

            Kannst Du mir helfen. Habe eine Docker-Umgebung. Wo genau finde ich dein Verzeichnis "iobroker-data/modules"?
            2d6cfbb1-3a4b-49b0-b373-88826ff00360-image.png

            paul53P U 2 Antworten Letzte Antwort
            0
            • U uwe72

              @paul53 said in Script in mehrere Scripts aufteilen, ein Object pro Script:

              @martin-5 sagte: Global Ordner gefunden, finde ihn aber nicht im ioBroker.

              Im Expertenmodus von Javascript findet man die Gruppe "global". Skripte dort sollten nur häufig verwendete eigene Funktionen enthalten.

              @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

              Kann man eigene Module erstellen und dann mit require einbinden?

              Kann man, wenn man weis, wie Module erstellt werden.
              Wenn die eigenen Module unter "iobroker-data/modules" liegen:

              const clock = require('../../../iobroker-data/modules/test.js');
              

              Kannst Du mir helfen. Habe eine Docker-Umgebung. Wo genau finde ich dein Verzeichnis "iobroker-data/modules"?
              2d6cfbb1-3a4b-49b0-b373-88826ff00360-image.png

              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von paul53
              #7

              @uwe72 sagte: Docker-Umgebung.

              Davon habe ich keine Ahnung.

              @uwe72 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

              Wo genau finde ich dein Verzeichnis "iobroker-data/modules"?

              Unter Linux unter /opt/iobroker/iobroker-data. Darunter das Verzeichnis "modules" erstellt und darin dann die Skripte (Node-Module). Daten unter "iobroker-data" werden beim Backup gesichert.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              U 1 Antwort Letzte Antwort
              1
              • paul53P paul53

                @uwe72 sagte: Docker-Umgebung.

                Davon habe ich keine Ahnung.

                @uwe72 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

                Wo genau finde ich dein Verzeichnis "iobroker-data/modules"?

                Unter Linux unter /opt/iobroker/iobroker-data. Darunter das Verzeichnis "modules" erstellt und darin dann die Skripte (Node-Module). Daten unter "iobroker-data" werden beim Backup gesichert.

                U Offline
                U Offline
                uwe72
                schrieb am zuletzt editiert von
                #8

                @paul53 Wie heißt denn bei dir der volle absolute Pfad zu "iobroker-data/modules"?

                OliverIOO 1 Antwort Letzte Antwort
                0
                • U uwe72

                  @paul53 said in Script in mehrere Scripts aufteilen, ein Object pro Script:

                  @martin-5 sagte: Global Ordner gefunden, finde ihn aber nicht im ioBroker.

                  Im Expertenmodus von Javascript findet man die Gruppe "global". Skripte dort sollten nur häufig verwendete eigene Funktionen enthalten.

                  @martin-5 sagte in Script in mehrere Scripts aufteilen, ein Object pro Script:

                  Kann man eigene Module erstellen und dann mit require einbinden?

                  Kann man, wenn man weis, wie Module erstellt werden.
                  Wenn die eigenen Module unter "iobroker-data/modules" liegen:

                  const clock = require('../../../iobroker-data/modules/test.js');
                  

                  Kannst Du mir helfen. Habe eine Docker-Umgebung. Wo genau finde ich dein Verzeichnis "iobroker-data/modules"?
                  2d6cfbb1-3a4b-49b0-b373-88826ff00360-image.png

                  U Offline
                  U Offline
                  uwe72
                  schrieb am zuletzt editiert von uwe72
                  #9
                  const clock = require('../../../iobroker-data/modules/test.js');
                  

                  Hast Du mir ein kleines Beispiel für den Inhalt von test.js, müssen da so Dinge wie export.... oder was rein? Und wie der Inhalt dann im common Script eingebunden wird bzw. verwendet wird? DANKE

                  T 1 Antwort Letzte Antwort
                  0
                  • U uwe72

                    @paul53 Wie heißt denn bei dir der volle absolute Pfad zu "iobroker-data/modules"?

                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #10

                    @uwe72
                    Ah du hast diesen thread auch schon gefunden

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    1
                    • U uwe72
                      const clock = require('../../../iobroker-data/modules/test.js');
                      

                      Hast Du mir ein kleines Beispiel für den Inhalt von test.js, müssen da so Dinge wie export.... oder was rein? Und wie der Inhalt dann im common Script eingebunden wird bzw. verwendet wird? DANKE

                      T Nicht stören
                      T Nicht stören
                      ticaki
                      schrieb am zuletzt editiert von
                      #11

                      @uwe72

                      hab dir in deinem anderen Thread einen Link zu einem Beispiel von paul gepostet :D

                      Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

                      Spenden

                      U 1 Antwort Letzte Antwort
                      1
                      • T ticaki

                        @uwe72

                        hab dir in deinem anderen Thread einen Link zu einem Beispiel von paul gepostet :D

                        U Offline
                        U Offline
                        uwe72
                        schrieb am zuletzt editiert von
                        #12

                        Habe für mich mal eine funktionierende Lösung in einem neuen Post aufgeschrieben:
                        https://forum.iobroker.net/topic/78632/info-auslagerung-von-scripte-aus-global-aufs-filesystem

                        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

                        745

                        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