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

  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. [Experimentell] JS-Controller compact mode

NEWS

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

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

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

[Experimentell] JS-Controller compact mode

Geplant Angeheftet Gesperrt Verschoben Entwicklung
47 Beiträge 14 Kommentatoren 10.5k Aufrufe 7 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.
  • BluefoxB Offline
    BluefoxB Offline
    Bluefox
    schrieb am zuletzt editiert von Bluefox
    #1

    Wir arbeiten gerade an neuem JS-Controller Mode - "Compact".

    In diesem Modus startet js-controller alle Adapter (die diesen Modus unterstützen) in dem selben Prozess wie js-controller.

    Dabei gewinnt man speicher, die für gemeinsame npm Module benutz wird, aber verliert an der Stabilität.

    Per Adapter spart man minimum 40MB RAM. Dieses Modus ist für die Systeme mit wenig Speicher gedacht. Z.b Raspi Zero mit 512 MB.

    Aktuell können und sollten nur die erfahrene Entwickler diesen Modus ausprobieren. Ich denke, ab März werden dann keine neue Adapter akzeptiert ohne Unterstützung für diesen Modus.

    Ich konnte ca. 8 Adapter in einer Stunde umbauen. Dafür muss man folgendes tun:

    1. io-package.json => common.compact = true setzen.

    2. main.js modifizieren

    War

         const adapter = new utils.Adapter({
              name: ...,
              stateChange: function () {...},
              ...
         });
    
    

    Ändern auf:

         let adapter;
         function startAdapter(options) {
              options = options || {};
              Object.assign(options, {
                   name: ...,
                   stateChange: function () {...},
                   ...
              });
              adapter = new utils.Adapter(options);
    
              return adapter;
         });
    
    

    Und ganz am Ende von der Datei:

    // If started as allInOne/compact mode => return function to create instance
    if (module && module.parent) {
        module.exports = startAdapter;
    } else {
        // or start the instance directly
        startAdapter();
    } 
    
    

    3. Alle process.exit ersetzen auf:

       adapter.terminate ? adapter.terminate() : process.exit()
    
    

    4. Um diesen Modus bei js-controller zu aktivieren sollte man in iobroker-data/iobroker.json => system.compact = true setzen. (wie hier https://github.com/ioBroker/ioBroker.js … t.json#L12)

    Natürlich diesen Modus unterstützt nur der js-controller vom git (branch master) : https://github.com/ioBroker/ioBroker.js ... /master

    Wenn Ihr Eure Adapter umgebaut habt bitte eine kurze Info in https://docs.google.com/spreadsheets/d/ ... sp=sharing eintragen. Hier auch bitte "Planned" reinschreiben wenn man einen/seinen Adapter startet und Status eintragen

    1 Antwort Letzte Antwort
    1
    • AlCalzoneA Offline
      AlCalzoneA Offline
      AlCalzone
      Developer
      schrieb am zuletzt editiert von
      #2

      Für TypeScript-Entwickler kann das Ganze so aussehen:

      2.: src/main.ts

      let adapter: ioBroker.Adapter;
      function startAdapter(options: Partial <iobroker.adapteroptions>= {}) {
      	return adapter = utils.adapter({
      		// Default options
      		...options,
      		// custom options
      		name: "my-adapter",
      		// ...
      	});
      }
      
      // ...
      
      if (module && module.parent) {
      	// Export startAdapter in compact mode
      	module.exports = startAdapter;
      } else {
      	// Otherwise start the adapter immediately
      	startAdapter();
      }</iobroker.adapteroptions> 
      

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

      1 Antwort Letzte Antwort
      0
      • apollon77A Offline
        apollon77A Offline
        apollon77
        schrieb am zuletzt editiert von
        #3

        Wir nehmen übrigens auch seeeehr gern PRs für ioBroker Adapter an falls jemand schneller als Bluefox mit Umbauen ist ;-))

        Wer langeweile hat kann ggf durch http://download.iobroker.net/list.html# … =1&filter= gehen und von oben nach unten arbeiten ;-)

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

          Weitere Infos unter https://github.com/ioBroker/ioBroker.js … issues/290

          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
          • MicM Offline
            MicM Offline
            Mic
            Developer
            schrieb am zuletzt editiert von
            #5

            Super, vielen Dank für diese Erweiterung!

            @Bluefox:

            In diesem Modus startet js-controller alle Adapter (die diesen Modus unterstützen) in dem selben Prozess wie js-controller. `
            Aus "Systemoptimierungs-Sicht" stellt sich mir hier noch die Frage, ob es zukünftig auch angedacht ist, einzelne Adapter auszuschließen zu können, also in separaten Prozessen zu betreiben, während man die "stabilen" Adapter im selben Prozess wie der JS-Controller laufen lässt…

            Dann wäre das nämlich auch eine tolle Option für User, deren Raspi an der Speicherobergrenze von 1 GB ist. Sie könnten dann die stabilen Adapter alle im selben Prozess halten, und die paar problematischen (falls es die gibt), die mal abschmieren, ausschließen...

            Nur so eine Idee...

            1 Antwort Letzte Antwort
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              schrieb am zuletzt editiert von
              #6

              Vllt … https://github.com/ioBroker/ioBroker.admin/issues/351 :-)

              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
              • MicM Offline
                MicM Offline
                Mic
                Developer
                schrieb am zuletzt editiert von
                #7

                :) 8-)

                1 Antwort Letzte Antwort
                0
                • arteckA Offline
                  arteckA Offline
                  arteck
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #8

                  wird dann der einzelstart bzw restart eines Adapters noch gehen ??

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

                  1 Antwort Letzte Antwort
                  0
                  • apollon77A Offline
                    apollon77A Offline
                    apollon77
                    schrieb am zuletzt editiert von
                    #9

                    Erst einmal muss man den compact Mode für den JS:Controller einschalten. Wenn er aus ist werden alle Adapter gestartet wie bisher auch. Also alle die VMs und genug RAM haben werden wohl das weiter so nutzen wie jetzt.

                    Mit dem oben verlinkten Admin-Issue und der Erweiterung darin könnte man dann pro Instanz auch bei aktiviertem compact-Mode entscheiden welche Instanz wie läuft. Und wenn man https://github.com/ioBroker/ioBroker.js … issues/303 noch macht wirds noch flexibler :-)

                    Auf Low-Memory Systemen kann der compact Mode genutzt werden

                    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
                    • AlCalzoneA Offline
                      AlCalzoneA Offline
                      AlCalzone
                      Developer
                      schrieb am zuletzt editiert von
                      #10

                      @arteck:

                      wird dann der einzelstart bzw restart eines Adapters noch gehen ?? `

                      Aktuell nicht, soll aber noch behoben werden.

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

                      1 Antwort Letzte Antwort
                      0
                      • J Offline
                        J Offline
                        Jan1
                        schrieb am zuletzt editiert von
                        #11

                        Gleich mal ne Frage zur Version, ich habe gesehen, das im latest wieder js-controller 1.5.3 angeboten wird. Läuft die Version nun problemlos, oder sollte man da besser bei 1.4.2 bleiben?

                        1 Antwort Letzte Antwort
                        0
                        • apollon77A Offline
                          apollon77A Offline
                          apollon77
                          schrieb am zuletzt editiert von
                          #12

                          Uups auch nicht Absicht. Sage es bluefox.

                          Gesendet vom Handy …

                          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
                          • J Offline
                            J Offline
                            Jan1
                            schrieb am zuletzt editiert von
                            #13

                            Alles klar und danke für die Info.

                            1 Antwort Letzte Antwort
                            0
                            • apollon77A Offline
                              apollon77A Offline
                              apollon77
                              schrieb am zuletzt editiert von
                              #14

                              For All: Ich habe eine Zeile oben im Initialen Post gefixt:

                              > typeof module !== undefined muss entweder typeof module !== "undefined" oder module != undefined oder einfach nur module sein.

                              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
                              • apollon77A Offline
                                apollon77A Offline
                                apollon77
                                schrieb am zuletzt editiert von
                                #15

                                Koordiniering der Implementierung in alle Adapter: https://docs.google.com/spreadsheets/d/ … sp=sharing

                                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
                                • apollon77A Offline
                                  apollon77A Offline
                                  apollon77
                                  schrieb am zuletzt editiert von
                                  #16

                                  Update compact Mode: aktuellste GitHub Version 1.6.0 sollte stoppen von compact-adatern und auch prozess-umbenennen gefixt haben

                                  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
                                  • S Offline
                                    S Offline
                                    SchuetzeSchulz
                                    schrieb am zuletzt editiert von
                                    #17

                                    Hallo zusammen,

                                    ich würde auch gern meine Adapter (lgtv, lgtv11, hp-ilo, enet) ändern.

                                    Allerdings habe ich den zu ändern Code

                                         const adapter = new utils.Adapter({
                                              name: ...,
                                              stateChange: function () {...},
                                              ...
                                         });
                                    
                                    

                                    So in keinen meiner Adapter drin. Alle meine Adapter sind vom Aufbau im Prinzip gleich. Kann da mal jemand schauen und mir sagen was ich wo ändern muss? Den Eintrag in der JSON sehe ich nicht als Problem.

                                    1 Antwort Letzte Antwort
                                    0
                                    • blauholstenB Offline
                                      blauholstenB Offline
                                      blauholsten
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #18

                                      … er geschrieben dann überlegt :oops:

                                      Entwickler vom: - Viessman Adapter
                                      - Alarm Adapter

                                      1 Antwort Letzte Antwort
                                      0
                                      • B Offline
                                        B Offline
                                        BasGo
                                        schrieb am zuletzt editiert von
                                        #19

                                        @SchuetzeSchulz:

                                        Hallo zusammen,

                                        ich würde auch gern meine Adapter (lgtv, lgtv11, hp-ilo, enet) ändern.

                                        Allerdings habe ich den zu ändern Code

                                             const adapter = new utils.Adapter({
                                                  name: ...,
                                                  stateChange: function () {...},
                                                  ...
                                             });
                                        
                                        

                                        So in keinen meiner Adapter drin. Alle meine Adapter sind vom Aufbau im Prinzip gleich. Kann da mal jemand schauen und mir sagen was ich wo ändern muss? Den Eintrag in der JSON sehe ich nicht als Problem. `

                                        Kann dir gerne im Laufe des Tages mal deinen ioBroker.lgtv anpassen und dir einen PR schicken?

                                        Dort hast du z.B. in Zeile 161 sowas wie ..

                                        adapter.on('stateChange', function (id, state)
                                        { ... }
                                        

                                        .. und das müsste u.a. halt ersetzt werden. 8-)

                                        1 Antwort Letzte Antwort
                                        0
                                        • S Offline
                                          S Offline
                                          SchuetzeSchulz
                                          schrieb am zuletzt editiert von
                                          #20

                                          @BasGo:

                                          Kann dir gerne im Laufe des Tages mal deinen ioBroker.lgtv anpassen und dir einen PR schicken? `

                                          Das wäre super. Dann würde ich das für die anderen Adapter übernehmen wollen.

                                          Vielen Dank schon mal im Voraus!

                                          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

                                          649

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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