Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [Experimentell] JS-Controller compact mode

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Experimentell] JS-Controller compact mode

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tobsi85 last edited by

      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?

      1 Reply Last reply Reply Quote 0
      • S
        SchuetzeSchulz last edited by

        Kann ich so leider nicht nachvollziehen.

        Habe bei mir extra den eNet-Adapter komplett deinstalliert, aus dem Github neu installiert und er läuft.

        1 Reply Last reply Reply Quote 0
        • apollon77
          apollon77 last edited by

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

          1 Reply Last reply Reply Quote 0
          • T
            tobsi85 last edited by

            Super für die schnelle Antwort… Danke euch.

            Läuft wieder!

            Hab es auch direkt aus dem GitHub installiert...

            1 Reply Last reply Reply Quote 0
            • frankjoke
              frankjoke last edited by

              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!

              1 Reply Last reply Reply Quote 0
              • apollon77
                apollon77 last edited by

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

                1 Reply Last reply Reply Quote 0
                • frankjoke
                  frankjoke last edited by

                  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.

                  1 Reply Last reply Reply Quote 0
                  • apollon77
                    apollon77 last edited by

                    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

                    hobbyquaker created this issue in ioBroker/ioBroker.js-controller

                    closed fixes #1

                    1 Reply Last reply Reply Quote 0
                    • frankjoke
                      frankjoke last edited by

                      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!

                      1 Reply Last reply Reply Quote 0
                      • apollon77
                        apollon77 last edited by

                        Komisch. Der sucht im falschen Pfad!!

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

                        1 Reply Last reply Reply Quote 0
                        • frankjoke
                          frankjoke last edited by

                          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.

                          1 Reply Last reply Reply Quote 0
                          • apollon77
                            apollon77 last edited by

                            Hast du deinen commit den du verdächtigst?

                            Gesendet vom Handy …

                            1 Reply Last reply Reply Quote 0
                            • M
                              Marty56 last edited by

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

                              1 Reply Last reply Reply Quote 0
                              • Meistertr
                                Meistertr Developer last edited by

                                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 Reply Last reply Reply Quote 0
                                • Meistertr
                                  Meistertr Developer last edited by

                                  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 Reply Last reply Reply Quote 0
                                  • apollon77
                                    apollon77 last edited by

                                    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

                                    frankjoke 1 Reply Last reply Reply Quote 0
                                    • M
                                      Marty56 last edited by Marty56

                                      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.

                                      1 Reply Last reply Reply Quote 0
                                      • apollon77
                                        apollon77 last edited by

                                        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!!

                                        1 Reply Last reply Reply Quote 0
                                        • frankjoke
                                          frankjoke @apollon77 last edited by

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

                                          1 Reply Last reply Reply Quote 0
                                          • apollon77
                                            apollon77 last edited by

                                            @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

                                            Apollon77 created this issue in ioBroker/ioBroker.admin

                                            closed Add support for Compact mode #351

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            844
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            14
                                            47
                                            8765
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo