Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Problem beim Einbinden eines node.js Adapters

    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

    Problem beim Einbinden eines node.js Adapters

    This topic has been deleted. Only users with topic management privileges can see it.
    • UncleSam
      UncleSam Developer @Boardy last edited by

      Hatte dasselbe Problem. Bei mir war die Lösung

      import * as loxoneWsApi from 'node-lox-ws-api';
      
      // ....
      
      client = new loxoneWsApi(/* ... */);
      

      Das kommt aber ganz darauf an, wie der Export bei der benutzten Library aussieht. Vielleicht kann uns @AlCalzone hier weiterhelfen?

      declare module sagt einfach: es gibt ein Modul. Was das Modul beinhaltet ist dann eben nicht festgelegt und damit ist alles "any".

      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer @Boardy last edited by

        @Boardy @UncleSam Der TypeError deutet für mich darauf hin dass du das Paket falsch importierst oder falsch nutzt. Laut Anleitung:

        const DMX = require('dmx')
        

        was in TypeScript übersetzt wie folgt aussehen sollte (ein sog. Standard-Import):

        import DMX from "dmx";
        

        Die Form

        import * as DMX
        

        nutzt man, wenn das Modul mehrere Exporte hat, die du unter dem Namen DMX zusammenfassen möchtest.

        Dann gäbe es noch import { something } from "modul", welches nur den Export something importiert.

        B 1 Reply Last reply Reply Quote 1
        • B
          Boardy @AlCalzone last edited by

          Cool das hat nun funktioniert (-:

          @UncleSam sagte in Problem beim Einbinden eines node.js Adapters:

          • du lädst alles auf GitHub und installierst dann auf dem Gerät via GitHub URL den aktuellsten Stand

          Das ist für mich der schnellste weg... nun hab ich gesehen dass Visual Studio Code auch remote debuggen kann... geht das auch mit einem nicht privilegierten Container auf dem NAS?

          Aktuell hab ich die Syntaxfehler weg und er Adapter statet und stoppt auch gleich wieder... muss mich noch mal durch die adapterdoku wühlen und Beispiele ansehen... falls einer auf den ersten Blick sieht was schief geht wäre ein Hinweis nett (-:
          fdc75b78-cace-4582-8339-2176e7bd4f7b-grafik.png

          Gibt es vielleicht ein relativ triviales Type Script Besipiel an dem ich mich orientieren kann?
          Denke aber mein Hauptproblem ist die DMX Klasse richtig einzubinden...

          LG

          Uwe

          UncleSam 1 Reply Last reply Reply Quote 0
          • UncleSam
            UncleSam Developer @Boardy last edited by

            @Boardy sagte in Problem beim Einbinden eines node.js Adapters:

            nun hab ich gesehen dass Visual Studio Code auch remote debuggen kann... geht das auch mit einem nicht privilegierten Container auf dem NAS?

            Remote Debugging ist eine Funktionalität von nodejs, somit funktioniert das in jeder denkbaren Kombination.

            Die andere Variante, die ich auch schon gemacht habe, ist Remote VS Code. Damit läuft dein VS Code GUI auf deinem PC, aber der Rest von VS Code läuft direkt in der VM: https://code.visualstudio.com/docs/remote/ssh Ich benutze das zB zum auf dem Raspi zu entwickeln, so kann ich immer auf meinem Desktop PC bleiben und trotzdem ohne herum kopieren meinen Code direkt auf dem Raspi laufen lassen.

            Gibt es vielleicht ein relativ triviales Type Script Besipiel an dem ich mich orientieren kann?

            Mein einfachster Adapter in TypeScript ist:
            https://github.com/UncleSamSwiss/ioBroker.luxtronik2

            B 1 Reply Last reply Reply Quote 0
            • B
              Boardy @UncleSam last edited by

              @UncleSam Ich kämpfe noch damit, im Docker container SSH zum laufen zu bringen... (BUANET) aber das habe ich an anderer Stelle adressiert...

              Ich wäre schon glücklich wenn mein Adapter mal was ins Log schreibt - hast du ne Idee warum der gleich wieder beendet?
              https://github.com/Bordman-ger/ioBroker.nanodmx.git

              Fehlt wohl noch irgend was elementares - ich halte mich lieber an deinen loxone adapter, der ist auch nicht so viel komplizierter wie der luxtronik2...

              UncleSam 2 Replies Last reply Reply Quote 0
              • UncleSam
                UncleSam Developer @Boardy last edited by

                @Boardy sagte in Problem beim Einbinden eines node.js Adapters:

                ich halte mich lieber an deinen loxone adapter, der ist auch nicht so viel komplizierter wie der luxtronik2...

                Einfach aufpassen: Loxone ist nicht ganz nach den aktuellsten Erkenntnissen bezüglich Devcontainer und so gemacht. Luxtronik2 hingegen habe ich letzte Woche mit dem Adapter Creator erstellt.

                1 Reply Last reply Reply Quote 0
                • UncleSam
                  UncleSam Developer @Boardy last edited by UncleSam

                  @Boardy sagte in Problem beim Einbinden eines node.js Adapters:

                  Ich wäre schon glücklich wenn mein Adapter mal was ins Log schreibt

                  Auf den ersten Blick (auf dem Handy) sehe ich keinen Fehler. Hast du mal versucht, den Adapter von Hand oder mit Debugger (Break on Exception) zu starten? Das kannst du ja auch auf deinem PC machen, der wird erst beim Verbinden des DMX mit einem Fehler kommen. So habe ich schon öfter ganz grundlegende Probleme gefunden.

                  B 1 Reply Last reply Reply Quote 0
                  • B
                    Boardy @UncleSam last edited by

                    @UncleSam ok dann versuch ich erst mal den Docker Container lokal zum laufen zu bringen...

                    B 1 Reply Last reply Reply Quote 0
                    • B
                      Boardy @Boardy last edited by

                      @Boardy so, läuft dank der Diskussion zu den Containern
                      Link Text
                      ging es relativ einfach...

                      Was ich im Debugger sehe, er springt direkt von
                      b4af4ba4-b218-40ad-a59c-860c1c9aeb52-grafik.png
                      zu
                      bf0623bb-2cb2-4dc8-b1f3-ed337cca64be-grafik.png
                      zu
                      6b75ab1c-8053-4160-8c22-13d16dffe9a8-grafik.png b2b601db-585b-4284-885f-379e1708dc5c-grafik.png

                      Fehlt mir da noch was? sieht für mich aus als würde er alles deklarieren und dann normal beenden...

                      UncleSam AlCalzone 2 Replies Last reply Reply Quote 0
                      • UncleSam
                        UncleSam Developer @Boardy last edited by

                        @Boardy sagte in Problem beim Einbinden eines node.js Adapters:

                        Fehlt mir da noch was? sieht für mich aus als würde er alles deklarieren und dann normal beenden...

                        Das sieht grundsätzlich gut aus. Ich würde Breakpoints allerdings in der Klasse selber setzen (zB im Konstruktor) und nicht in den Deklarationen. Zudem kannst du mal ganz unten links die Option einschalten, dass der Debugger anhalten soll, wenn eine Exception geschieht (und zwar beides: caught und uncaught). Wenn also was schief geht, hält der Debugger an.

                        B 1 Reply Last reply Reply Quote 0
                        • B
                          Boardy @UncleSam last edited by

                          @UncleSam ok da hab ich mich unklar ausgedrückt. Im Konstruktror saß ein Breakpoint - wurde nicht angesprungen..
                          nun hab die die Exceptions aktiviert - auch hier werden nur die 3 Coding Stellen s.o. angeprungen... ist sicher ein ganz dummer Anfängerfehler...
                          b1c9011f-f7a0-4447-a712-b9d2ce6c0248-grafik.png

                          B 1 Reply Last reply Reply Quote 0
                          • B
                            Boardy @Boardy last edited by

                            @Boardy ich habe es hinbekommen.. ich habe den Konstruktor umgebaut analog deinem Luxtronix, nun geht es....

                            1 Reply Last reply Reply Quote 0
                            • AlCalzone
                              AlCalzone Developer @Boardy last edited by

                              @Boardy in deinem Screenshot verwendest du require.main zum Prüfen, ob das Modul importiert oder direkt gestartet wurde. Bist du sicher, dass der Check nicht falsch ist (siehe auch https://stackoverflow.com/a/45137096/10179833)?

                              if (require.main === module) {
                                   // this module was run directly from the command line as in node xxx.js
                              } else {
                                   // this module was not run directly from the command line and probably loaded by something else
                              }
                              

                              Auf Github sieht es noch so aus
                              https://github.com/Bordman-ger/ioBroker.nanodmx/blob/master/src/main.ts#L203-L209
                              was funktionieren sollte (und im Übrigen vom Adapter-Creator auch so erzeugt wird).

                              B 1 Reply Last reply Reply Quote 0
                              • B
                                Boardy @AlCalzone last edited by

                                @AlCalzone Vielen Dank dass du dir das auch noch mal angesehen hast...
                                direct nach dem Creator hatte ich da etwas rumoptimiert weil ich folgenden Hinweis bekommen habe:
                                242b8fcc-7266-4fd5-a7f7-f99b12fb1400-grafik.png

                                Was nun optimal wäre habe ich noch nicht verstanden aber mit module.parent geht es ja endlich (-:

                                Bist du sicher, dass der Check nicht falsch ist
                                ich bin mir bei gar nichts sicher, alles Neuland, IOBroker erst seit ein paar Wochen und Node.js, JS, Typescript, VSCode, alles neu... daher stochere ich da sehr im Trüben und versuche bis was bei rauskommt...

                                Auf Github sieht es noch so aus
                                nein, da ist schon die neue Version es sieht WIEDER gut aus, seit heute Mittag läuft mein Adapter und ich konnte auch schon was damit ansteuern... das Adapter Gerüst war wohl das größte Problem...

                                Auch hier noch mal Danke für das schöne Video zum Typescript und eure Hilfe...
                                nun geht es vermutlich schnell weiter mit dem proggen..

                                Vielen Dank und Gute Nacht (-:

                                Uwe

                                AlCalzone 1 Reply Last reply Reply Quote 1
                                • AlCalzone
                                  AlCalzone Developer @Boardy last edited by

                                  @Boardy sagte in Problem beim Einbinden eines node.js Adapters:

                                  Was nun optimal wäre habe ich noch nicht verstanden aber mit module.parent geht es ja endlich (-:

                                  Lass es so, ist nur ein Hinweis. Über eine Änderung kann man nachdenken, wenn Node 14 unsere minimal unterstützte Version ist.

                                  B 1 Reply Last reply Reply Quote 0
                                  • B
                                    Boardy @AlCalzone last edited by

                                    @AlCalzone @UncleSam eine Kleinigkeit fehlt noch, dann hab ich den Adapter soweit um mein Minimalziel zu erreichen und die Objektänderungen vom IOBroker kommen im USB Stick an... aber ich hänge noch - vermutlich eine Variablendeklarationsproblem...

                                    Könnt ihr bitte noch mal gucken was da schief gehen könnte?
                                    1a0c9ecf-56d0-4b7a-a7cf-c6081900a3c0-grafik.png

                                    irgend was mit der Portnummer ist schief - es ändert auch nichts wenn ich diese als String definiere, wenn ich den Festwert als 11 oder "11" übergebe geht es... wa sist da falsch?

                                    das log
                                    346a6bf0-278b-4202-b813-28d6a42d775b-grafik.png

                                    Debuggen kann ich leider noch nicht da ich nun in den Synology Container reindebuggen mpüsste und SSH noch nicht läuft

                                    mein GitHub ist wieder aktuell

                                    AlCalzone 1 Reply Last reply Reply Quote 0
                                    • AlCalzone
                                      AlCalzone Developer @Boardy last edited by

                                      @Boardy Wenn ich das richtig deute, fehlen da da die eckigen Klammern:

                                      ....update({ [portnumber]: state.val }); // setzt die Eigenschaft "11", wenn in portnumber 11 steht
                                      

                                      One die eckigen Klammern setzt du die Eigenschaft "portnumber" des Objekts.

                                      ==> https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Operators/Objekt_Initialisierer, scrolle zu Berechnete Bezeichnernamen

                                      B 2 Replies Last reply Reply Quote 1
                                      • B
                                        Boardy @AlCalzone last edited by

                                        @AlCalzone 👍 🕺
                                        Dank dir das wars..

                                        1 Reply Last reply Reply Quote 0
                                        • B
                                          Boardy @AlCalzone last edited by

                                          @AlCalzone
                                          @UncleSam
                                          So, noch mal vielen Dank für die Hilfe, der Adapter lief nun einige Wochen im Test und es gab keine Probleme... was muss ich denn noch machen um den Adapter der Community verfügbar zu machen?

                                          UncleSam, mein Adapter sollte universell für ein paar verschiedene DMX Treiber funktionieren, vielleicht läuft er ja auch bei dir?

                                          Aus diesem Grund habe ich ihn noch mal umbenannt und er ist nun hier als nodedmx zu finden:
                                          https://github.com/Bordman-ger/ioBroker.nodedmx.git

                                          LG Uwe

                                          UncleSam 1 Reply Last reply Reply Quote 0
                                          • UncleSam
                                            UncleSam Developer @Boardy last edited by

                                            @Boardy sagte in Problem beim Einbinden eines node.js Adapters:

                                            was muss ich denn noch machen um den Adapter der Community verfügbar zu machen?

                                            Du musst ihn nun im Repository eintragen. Alle Infos findest du hier:
                                            https://github.com/ioBroker/ioBroker.repositories/

                                            UncleSam, mein Adapter sollte universell für ein paar verschiedene DMX Treiber funktionieren, vielleicht läuft er ja auch bei dir?

                                            Werde ich mir gerne anschauen. Und wenn es (noch) nicht geht, dann werde ich sicher schauen, dass wir meinen Code bei dir einbringen können.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            411
                                            Online

                                            31.7k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            dependencies gyp error node.js
                                            3
                                            36
                                            2186
                                            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