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.4k

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

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

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

    @tobsi85:

    Bei mir leider nicht mehr! nach dem Update vom Adapter Enet, stellt er keine Verbindung mehr her.

    Im Log steht: instance system.adapter.enet.0 terminated with code 10 (Cannot find start file of adapter)

    Warum? `
    Versuch mal „iobroker upload enet“ und dann neu starten

    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
    • T Offline
      T Offline
      tobsi85
      schrieb am zuletzt editiert von
      #25

      Super für die schnelle Antwort… Danke euch.

      Läuft wieder!

      Hab es auch direkt aus dem GitHub installiert...

      1 Antwort Letzte Antwort
      0
      • frankjokeF Offline
        frankjokeF Offline
        frankjoke
        schrieb am zuletzt editiert von
        #26

        Ich möchte meine Adapter langsam umbauen aber diese auch vorher testen bevor ich auf git publishe.

        Wie kann ich auf einem Test-Raspi den beta-cs-controller installieren und kann man dann bei jeder Instanz entscheiden ob sie compact sein soll oder nicht?

        Ich will nicht dass mein Adapter den controller killt wenn irgendwelche Fehler auftreten. Momentan ist's wurscht da er normal wieder gestartet wird, jetzt wäre es eher ein fataler Fehler (ist ja schon beim Javascript-Adapter so dass man mit manchen scripten den ganzen Adapter abschießen kann).

        Deshalb der Test, und bei einigen Adaptern muss ich auch noch die Verbindungs-Logik ändern, jetzt wird nur verbunden (mit einem externen device) wenn der Adapter gestartet wird. Ist die Verbing nich möglich startet der Adapter neu.

        Kann im compact mode der adapter auch neu gestartet werden (= neue compact-instanz die alte Referenzen wie .on-Befehle oder timeouts automatisch löscht)? Bis jetz musste man sich darum nicht kümmern wenn der Adapter heruntergefahren wurde da die komplette Instant weg war.

        Deshalb ist der einstieg/umstieg nicht nur einige Zeilen code zum einfügen!

        Frank,

        NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
        Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

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

          @fsjoke:

          Wie kann ich auf einem Test-Raspi den beta-cs-controller installieren und kann man dann bei jeder Instanz entscheiden ob sie compact sein soll oder nicht? `

          im ioBroker Verzeichnis ein

          npm install ioBroker/ioBroker.js.controller#1.6.0-dev
          

          Dann wie oben beschrieben aktivieren (eigentlich steht alles oben im ersten Post räusper

          Pro instanz wählen geht noch nicht, dazu gibtes ein Admin Issue um das bis zum release zu machen. Es wird alles was compact kann als compact ausgeführt wenn man es aktiviert.

          @fsjoke:

          Ich will nicht dass mein Adapter den controller killt wenn irgendwelche Fehler auftreten. Momentan ist's wurscht da er normal wieder gestartet wird, jetzt wäre es eher ein fataler Fehler (ist ja schon beim Javascript-Adapter so dass man mit manchen scripten den ganzen Adapter abschießen kann).

          Deshalb der Test, und bei einigen Adaptern muss ich auch noch die Verbindungs-Logik ändern, jetzt wird nur verbunden (mit einem externen device) wenn der Adapter gestartet wird. Ist die Verbing nich möglich startet der Adapter neu. `

          Das sollte generell tun. Du must nur wie oben beschrieben adapter.terminate() nutzen anstelle process.exit!

          Und Ja Adapter sollten ein robustes Fehlerhandling haben.

          @fsjoke:

          Kann im compact mode der adapter auch neu gestartet werden (= neue compact-instanz die alte Referenzen wie .on-Befehle oder timeouts automatisch löscht)? Bis jetz musste man sich darum nicht kümmern wenn der Adapter heruntergefahren wurde da die komplette Instant weg war. `

          Sollte tun … teste es und falls es Probleme gibt mach Issues auf.

          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
          • frankjokeF Offline
            frankjokeF Offline
            frankjoke
            schrieb am zuletzt editiert von
            #28

            Ok, wollte heute den ersten Adapter auf compact mode testen und hab auf meinen Testraspi iobroker neu installiert da ich das iobroker start/stop unbedingt brauch.

            Das hat auch funktioniert, und ich hab auch meine V2 development Version des Raspi's laden.

            Nun hab ich ausprobiert den js-controller wie von dir beschrieben auf 1.6.0-dev upzudaten:

            npm install ioBroker/ioBroker.js.controller#1.6.0-dev
            

            Das funktionierte gar nicht

            npm ERR! code EINVALIDTAGNAME
            npm ERR! Invalid tag name "ioBroker.js.controller#1.6.0-dev": Tags may not have any characters that encodeURIComponent encodes.
            
            

            Dann hab ich's mit

            npm install https://github.com/ioBroker/ioBroker.js-controller/tarball/1.6.0-dev
            

            versucht, NPM installierte und ich hab dann natürlich iobroker start aufgerufen und folgendes bekommen:

            pi@raspi4:/opt/iobroker $ iobroker start
            module.js:550
                throw err;
                ^
            
            Error: Cannot find module '/opt/iobroker/lib/setup.js'
                at Function.Module._resolveFilename (module.js:548:15)
                at Function.Module._load (module.js:475:25)
                at Module.require (module.js:597:17)
                at require (internal/module.js:11:18)
                at Object. <anonymous>(/opt/iobroker/iobroker:2:1)
                at Module._compile (module.js:653:30)
                at Object.Module._extensions..js (module.js:664:10)
                at Module.load (module.js:566:32)
                at tryModuleLoad (module.js:506:12)
                at Function.Module._load (module.js:498:3)</anonymous> 
            

            Alse der 1.6dev dürfte nicht mit dem neuen Start zusammenarbeiten!

            Bitte melde dich wenn man eine frische Installation mit 1.6dev testen kann.

            Frank,

            NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
            Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

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

              Hm … also npm install ioBroker/ioBroker.js.controller#1.6.0-dev ist falsch ... nimm mal

              npm install ioBroker/ioBroker.js-controller#1.6.0-dev

              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
              • frankjokeF Offline
                frankjokeF Offline
                frankjoke
                schrieb am zuletzt editiert von
                #30

                NPM akzeptiert es aber die Installation ist trotzdem tot dann:

                iobroker start
                module.js:550
                    throw err;
                    ^
                
                Error: Cannot find module './lib/setup.js'
                    at Function.Module._resolveFilename (module.js:548:15)
                    at Function.Module._load (module.js:475:25)
                    at Module.require (module.js:597:17)
                    at require (internal/module.js:11:18)
                    at Object. <anonymous>(/opt/iobroker/iobroker:2:1)
                    at Module._compile (module.js:653:30)
                    at Object.Module._extensions..js (module.js:664:10)
                    at Module.load (module.js:566:32)
                    at tryModuleLoad (module.js:506:12)
                    at Function.Module._load (module.js:498:3)</anonymous> 
                

                Also kann ich iobroker nicht mehr starten sobald ich die V1.6dev installiere!

                Frank,

                NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

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

                  Komisch. Der sucht im falschen Pfad!!

                  Wie sieht denn in /opt/iobroker das iobroker executable aus?

                  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
                  • frankjokeF Offline
                    frankjokeF Offline
                    frankjoke
                    schrieb am zuletzt editiert von
                    #32

                    Bitte wenn ihr den neuen Modus testet folgendes Berücksichtigen:

                    // 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();
                    } 
                    

                    darf nicht immer am Ende stehen, es muss vor der ersten Benutzung der Variablen adapter eingefügt werden

                    Ich selbst verwende ein Modul das mir 90% der Adapterarbeit abnimmt. Mein code lautete vorher:

                    const adapter = utils.Adapter('radar'),
                    	assert = require('assert'),
                    	MA = require('./myAdapter'),
                        	A = MA.MyAdapter;
                    

                    und weiter unten nach anderen Deklarationen oder Klassendefinitionen:

                    A.init(adapter, main);
                    

                    Ich muss also den obigen code vor dem A.init(… setzten und nicht ans Ende!

                    pricess.exit hat ein Argument mit dem man den return code setzt, kann adapter.terminate das auch?

                    Ich verwende bei aktivem Stop durch Probleme erzeugt werden welche den Adapter nicht zum Laufen bringen zum Beispeil return code 5:

                    setTimeout(ret => adapter.terminate ? adapter.terminate(ret) : process.exit(ret), 1000, 5)
                    

                    p.s.:Ich wundere mich warum js-controller Adapter welche fatal exit codes liefern immer wieder re-startet! Wenn ein Adapter nicht laufen kann weil er schrott in der Konfig hat muss er das irgendwie sagen können, auch mit adapter.terminate!

                    Leider schaffe ich es nicht den 1.6.0-dev zu installieren ohne dass iobroker unbrauchbar wird und kann daher meinen code nicht testen!

                    Ich glaub der Fehler liegt daran was um den 23.1. geändert wurde damit iobroker stop/start wieder funktioniert.

                    Frank,

                    NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                    Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

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

                      Hast du deinen commit den du verdächtigst?

                      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
                      • M Offline
                        M Offline
                        Marty56
                        schrieb am zuletzt editiert von
                        #34

                        Super Update! Das hatte ich mir schon lange gewünscht. Freue mich schon drauf

                        HW:NUC (16 GB Ram)
                        OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

                        1 Antwort Letzte Antwort
                        0
                        • MeistertrM Offline
                          MeistertrM Offline
                          Meistertr
                          Developer
                          schrieb am zuletzt editiert von
                          #35

                          So, ich habe nun nach einigen anläufen eine vm aufgesetzt wo der neue js-controller drauf ist und den cm eingeschaltet in der config. ist es richtig, dass der einzige hinweis auf den mode der logeintrag ist, dass der adapter im compact mode läuft? weil unter instanzen steht zum beispiel beim javascript adapter mit und ohne comact mode 100 MB Ram..

                          1 Antwort Letzte Antwort
                          0
                          • MeistertrM Offline
                            MeistertrM Offline
                            Meistertr
                            Developer
                            schrieb am zuletzt editiert von
                            #36

                            so habe proxmox adapter nun mal versucht umzustellen. sah auch auf dem ersten Blick ganz gut aus. aber wenn ich den adapter stoppe, schmiert der js-controller ab. log:

                            host.cmbroker	2019-02-16 20:22:05.953	info	iobroker.js-controller version 2.0.0 js-controller starting
                            admin.0	2019-02-16 20:22:05.415	error	at _combinedTickCallback (internal/process/next_tick.js:139:11)
                            admin.0	2019-02-16 20:22:05.415	error	at emitErrorNT (internal/streams/destroy.js:66:8)
                            admin.0	2019-02-16 20:22:05.415	error	at Socket.emit (events.js:211:7)
                            admin.0	2019-02-16 20:22:05.415	error	at emitOne (events.js:116:13)
                            admin.0	2019-02-16 20:22:05.415	error	at WebSocket.finalize (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/WebSocket.js:182:41)
                            admin.0	2019-02-16 20:22:05.415	error	at WebSocket.emit (events.js:211:7)
                            admin.0	2019-02-16 20:22:05.415	error	at emitOne (events.js:116:13)
                            admin.0	2019-02-16 20:22:05.415	error	at WebSocket.onError (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/ws/lib/EventTarget.js:109:16)
                            admin.0	2019-02-16 20:22:05.415	error	at WebSocket.ws.onerror (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transports/websocket.js:150:10)
                            admin.0	2019-02-16 20:22:05.415	error	at WS.Transport.onError (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/engine.io-client/lib/transport.js:64:13)
                            admin.0	2019-02-16 20:22:05.415	error	Error: websocket error
                            admin.0	2019-02-16 20:22:05.414	error	websocket error
                            proxmox.0	2019-02-16 20:22:05.406	error	uncaught exception: Cannot read property 'pushLog' of null
                            javascript.0	2019-02-16 20:22:05.405	error	uncaught exception: Cannot read property 'pushLog' of null
                            host.cmbroker	2019-02-16 20:22:05.392	info	instance system.adapter.proxmox.0 terminated with code undefined ()
                            2019-02-16 20:22:05.391	info	erminating
                            host.cmbroker	2019-02-16 20:22:05.390	info	stopInstance system.adapter.proxmox.0 killing pid undefined
                            host.cmbroker	2019-02-16 20:22:05.390	info	stopInstance system.adapter.proxmox.0
                            proxmox.0	2019-02-16 20:22:05.390	info	cleaned everything up...
                            host.cmbroker	2019-02-16 20:22:05.389	info	object change system.adapter.proxmox.0
                            

                            hier der code:

                            Proxmox Compactmode

                            liegts an mir oder am js-controller?

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

                              Mit dem Compact Mode ist es extrem wichtig das Du in der unload-Funktion wirklich alles stoppst und Verbindungen beendest und so. Kann es sein das da noch was offen bleibt bei Dir?
                              Das mit dem "pushLog" bitte mal im GitHub melden

                              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
                              frankjokeF 1 Antwort Letzte Antwort
                              0
                              • M Offline
                                M Offline
                                Marty56
                                schrieb am zuletzt editiert von Marty56
                                #38

                                Ich habe die jscontroller Version 2 installiert, das iobroker.json file editiert.
                                Es scheint aber, dass die Adapter nicht im compact modus starten.

                                Muss ich sonst noch etwas beachten?
                                Bei mir läuft iobroker zum Test in einem Synology Docker.

                                ee6ecfe0-276c-4c7c-afa7-152c1b533bb9-image.png

                                b3eb729f-9833-402e-9f4f-45d0a3cdb6f1-image.png

                                6fe6634d-1c23-4901-b871-3fa4c8726629-image.png

                                46247bed-a386-4d3d-8223-9590ddccf88a-image.png

                                Update: Es scheint doch funktioniert zu haben. Beim Homematic Adapter wird beim Starten im Log sogar angezeigt, dass er im Compact Modus gestartet wurde. Ich war nur irritiert von der Memory Anzeige.

                                HW:NUC (16 GB Ram)
                                OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

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

                                  Die Memory ANzeige ist noch ein Bug, gibt ein Issue dazu das noch zu fixen.

                                  Aber nur so zur Sicherheit: 2.0.0 ist noch tief in der Entwicklung!!

                                  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 apollon77

                                    Mit dem Compact Mode ist es extrem wichtig das Du in der unload-Funktion wirklich alles stoppst und Verbindungen beendest und so. Kann es sein das da noch was offen bleibt bei Dir?
                                    Das mit dem "pushLog" bitte mal im GitHub melden

                                    frankjokeF Offline
                                    frankjokeF Offline
                                    frankjoke
                                    schrieb am zuletzt editiert von
                                    #40

                                    @apollon77 sagte in [Experimentell] JS-Controller compact mode:

                                    Mit dem Compact Mode ist es extrem wichtig das Du in der unload-Funktion wirklich alles stoppst und Verbindungen beendest und so. Kann es sein das da noch was offen bleibt bei Dir?
                                    Das mit dem "pushLog" bitte mal im GitHub melden

                                    Das hab ich auch schon rausgefunden! Leider sind einige Module wie noble so schlecht programmiert dass sie das nicht selbst machen und auch kein e'close'-Funktion oder sowas zur Verfügung stellen.

                                    Muss bei einigen Adaptern einiges ändern damit das gewährleistet ist, bei manchen wird man es nicht schaffen.

                                    Übrigens, hoffe das in Admin (wenn der Adapter das kann) ein Häkchen bei den Instanzen kommt wo man das pro Adapter aktivieren kann oder nicht. Für Leute die kein Speicherproblem haben ist's eine Veringerung der Sicherheit weil der/die Adapter dann auch den js-controller mitabschießen können!

                                    Frank,

                                    NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                                    Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

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

                                      @frankjoke sagte in [Experimentell] JS-Controller compact mode:

                                      Übrigens, hoffe das in Admin (wenn der Adapter das kann) ein Häkchen bei den Instanzen kommt wo man das pro Adapter aktivieren kann oder nicht. Für Leute die kein Speicherproblem haben ist's eine Veringerung der Sicherheit weil der/die Adapter dann auch den js-controller mitabschießen können!

                                      see 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
                                      • frankjokeF Offline
                                        frankjokeF Offline
                                        frankjoke
                                        schrieb am zuletzt editiert von frankjoke
                                        #42

                                        Habe den ersten Adapter versucht auf compact mode zu bringen: meine Erfahrungen soweit!

                                        p.s.: Was soll im Forum immer diese kranke Meldung ob man nicht einen neuen thread aufmachen will oder auf dem alten antworten? Natürlich will ich keine neuen threads auf machen wenn ich in einem was antworte, auch wenn es nach einem Jahr ist!!!

                                        Habe eine Testinstanz auf einem Ubuntu Server LTS 18.0.2 auf meinem QNAP gemacht, nur 2 CPU's und 1.2GB memory, nodejs V8.x, iobroker, redis.

                                        Die dev-Version vom js-controller drauf und compact in den jsons gesetzt, vorher natürlich den code von hier ersetzt/dazu.

                                        Erster Start: Hab schon gesehen dass admin gemeinsam mit js-controller in der gleichen Instanz läuft, hatte vorher auch nur admit 'enabled'.
                                        Nun meinen enabled: Einige Error messages im log vom host und dann wird der Adapter als normale Instanz gestartet (niocht compact)!
                                        Der Fehler nicht sehr aussagekräftig, wie immer mit property von null...
                                        Ok, bin draufgekommen dass ich natürlich keine Funktionen im startAdapter verwenden kann die einen Adapter brauchen, wie z.B. die logs! Ok, das korrigiert und normale console.log genommen um den Dingen auf die Schliche zu kommen. Adapter startet und arbeitet im compact mode!
                                        Adapter versucht zu stoppen, wieder Absturz. da da keine Meldung kam hab ich iobroker gestoppt und mit
                                        sudo -u iobroker node --inspect=ipadresse:9229 /opt/iobroker/node_modules/iobroker.js-controller/main.js --force --logs --nolazy
                                        gestartet und den chrome-debugger auf die inspect-Adresse angesetzt. Vorher hatte ich bei einigen neuralgischen Punkten debugger; eingefügt um zu sehen was mit startAdapter und beim adapter-stop passiert.

                                        Also mal dem adapterStart zugeschaut, ich wollte ja wissen wie ich sehen kann ob mein Adapter im compact mode aufgerufen worden ist!

                                        Die options die bei compact mode dem startAdapter übergeben werden sind: options = {logLevel: "info", compactInstance: "0", compact: true}

                                        Beim Stoppen des Adapters bin ich draufgekopmmen dass ein Fehler in einem callback den Adapter (und natürlich damit js-controller) zum Absturz gebracht hat, dieser Fehler wäre bei normalen Startmode nicht aufgefallen da der Adapter ja eh geschlossen wird.

                                        Nun, Adapter restart!

                                        Eigenartige logs (test mit radar2, meine Meldungen von der exit-routine nach on-'unload'):

                                        host.qnbuntu	2019-04-08 20:13:52.371	info	instance system.adapter.radar2.0 started in COMPACT mode
                                        radar2.0	2019-04-08 18:13:50.759	warn	Adapter will exit now with code false and method adapter.terminate!
                                        2019-04-08 18:13:50.354	info	erminating
                                        Terminated	2019-04-08 18:13:49.864	warn	(NO_ERROR): Without reason
                                        host.qnbuntu	2019-04-08 18:13:49.869	info	instance system.adapter.radar2.0 terminated with code 0 (NO_ERROR)
                                        2019-04-08 18:13:49.862	info	erminating
                                        radar2.0	2019-04-08 18:13:49.858	warn	Adapter will exit in latest 1 sec with code false!
                                        host.qnbuntu	2019-04-08 18:13:49.850	info	stopInstance system.adapter.radar2.0 killing pid undefined
                                        host.qnbuntu	2019-04-08 18:13:49.849	info	stopInstance system.adapter.radar2.0
                                        

                                        Jetzt ne Menge Fehlermeldungen aus meinem Adapter!

                                        Warum: Es reicht nicht nur die oben beschriebenen Routinen umzuschreiben, ihr müsst jetzt auch den Adapter fit machen da er ja anders aufgerufen wird.

                                        Beim Laden und 1. Start wird er normal durchlaufen und eure Befehle werden ausgeführt und constanten und Variablen definiert. Nach einem Restart startet er von adapter start, und alle Variablen bleiben auf den alten Werten vor dem restart!

                                        Ich habe z.B. einige constants und viele let-Variable definiert die globale Daten im Adapter darstellen sollen. Die müssen jetzt woanders hin oder mit im startAdapter neu zurückgestellt werden (damit scheiden constants jetzt teilweise aus).

                                        Außerdem musste ich sicherstellen dass alle Resources beim adapterstop abgeschaltet werden, alle timer und auch alle listener die eventuell an ports oder System-Events hängen die noch Daten liefern können, hatte da was vergessen und das lief dann weiter und erzeugte Fehler im log.

                                        Mein radar2-Adapter wird deswegen nicht compact-fähig sein da ein module (noble für BT-LE) sich nicht abschalten lässt und etliche links ins Betriebssystem macht welche flott weiterarbeiten, auch wenn man die Instanz löscht (was eigentlich nicht geht da es ein Verwis auf ein singleton im modul ist).

                                        Mit diesen Erfahrungen gewappnet mach ich mich auf den Weg und werde versuchen broadlink2, xs1, km200, systeminfo und auch die sich noch im Alfa-Stadium befindende statemachine umzubauen...

                                        Nochwas: Man muss einen upload durchführen damit der Adapter (mittel io-package.json) wieder im non-compact mode läft.

                                        Und: Speicher, wenn js-controller, admin und mein adapter im compact mode laufen dann brauch ich ca 150MB (est ist nur ein Prozess).
                                        Wenn mein Adapter nicht also copmpact läft braucht er ca 60MB und js-controller+admin 80MB.

                                        Ich würde einen Tipp ans ioBroker-Team geben: Bitte compact-mode-adapter NICHT im selben task wie js-controller laufen lassen sondern in einem dummy-adapter in einem eigenen Prozess! Das ganze wird sehr anfällig auf Fehler da jeder Fehler der nicht abgefangen wird durchschlägt!

                                        Ach übrigens: es kommen auch folgende Fehler vor, die aber unabhängig von meinem Adapter:

                                        Bei Start von iobroker immer:
                                        2019-04-08 19:39:56.333 - error: admin.0 invalid instance object: {"_id":"","type":"meta","common":{"name":"user files and images for background image","type":"meta.user"},"native":{}}

                                        Wenn mein Adapter im non-compact-mode gestartet wird (obwohl das assert nur im js-controller sein kann da ich in radar2 keins drin hab:
                                        2019-04-08 19:35:58.436 - error: host.qnbuntu error with /opt/iobroker/node_modules/iobroker.radar2/radar2.js: {"generatedMessage":false,"name":"AssertionError [ERR_ASSERTION]","code":"ERR_ASSERTION","actual":false,"expected":true,"operator":"=="}

                                        Liebe Grüße und danke für den Support von einigen
                                        Frank

                                        Frank,

                                        NUC's, VM's und Raspi's unter Raspian, Ubuntu und Debian zum Testen.
                                        Adapter die ich selbst beigesteuert habe: BMW, broadlink2, radar2, systeminfo, km200, xs1 und einige im Anmarsch!

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

                                          Um kurz meinen Senf dazu zu geben:

                                          @frankjoke sagte in [Experimentell] JS-Controller compact mode:

                                          Bitte compact-mode-adapter NICHT im selben task wie js-controller laufen lassen sondern in einem dummy-adapter in einem eigenen Prozess!

                                          Haben wir schon auf dem Schirm
                                          https://github.com/ioBroker/ioBroker.js-controller/issues/303

                                          @frankjoke sagte in [Experimentell] JS-Controller compact mode:

                                          Ich habe z.B. einige constants und viele let-Variable definiert die globale Daten im Adapter darstellen sollen. Die müssen jetzt woanders hin oder mit im startAdapter neu zurückgestellt werden (damit scheiden constants jetzt teilweise aus).

                                          Ist mir auch schon aufgefallen. Ich habe die in eine eigene Datei ausgelagert, die dann im require-cache hängt und somit das selbe Problem hat. Hier ist bei manchen Adaptern sicherlich Umdenken angesagt.

                                          @frankjoke sagte in [Experimentell] JS-Controller compact mode:

                                          Außerdem musste ich sicherstellen dass alle Resources beim adapterstop abgeschaltet werden, alle timer und auch alle listener die eventuell an ports oder System-Events hängen die noch Daten liefern können, hatte da was vergessen und das lief dann weiter und erzeugte Fehler im log.

                                          Da muss ich mal etwas ketzerisch sein. Das solltest du sowieso tun und dich nicht drauf verlassen, dass NodeJS hinter dir aufräumt.

                                          @frankjoke sagte in [Experimentell] JS-Controller compact mode:

                                          Beim Stoppen des Adapters bin ich draufgekopmmen dass ein Fehler in einem callback den Adapter (und natürlich damit js-controller) zum Absturz gebracht hat, dieser Fehler wäre bei normalen Startmode nicht aufgefallen da der Adapter ja eh geschlossen wird.

                                          Auch richtig. Daher wird compact nicht standardmäßig aktiviert werden. Und falls es das sollte, müssen Adapter hierfür zertifiziert werden.

                                          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

                                          275

                                          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