Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Einbindung von Geräten
    5. Javascript: USB Geräte mit NPM-Modulen erkennen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Javascript: USB Geräte mit NPM-Modulen erkennen

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

      @Alle
      Moin, moin

      Ich möchte,
      das ein Javascript nur läuft, wenn ein bestimmtes USB-Gerät (Vid und Pid) angeschlossen ist.

      In der Instanz "javascript.0" habe jeweils die "zusätzlichen NPM-Module"

      • usb
      • node-usb
      • usb-detection

      sowie bei "Syntaxhilfe für npm-Module" eingetragen.

      Ich habe dann anhand der Beispiel-Scripte aus den jeweiligen Readme's zu den
      NPM-Modulen ein Test-Script erstellt.

      Bei den Modulen "usb" und "node-usb" bekomme ich in den Test-Scipten nur Fehlermeldungen
      bzgl. der Zeile mit dem Befehl: "import..."

      Beim Modul "usb-detection" erhalte ich keine Fehlermeldung in den Test-Scripten.
      Allerdings fehlt bei der Rückmeldung "add", "remove", "change" die Infos zum Device.
      Also nur die Rückmeldung mit den Infos "add", "remove", "change" ohne Device-Infos.
      Somit kann ich erkennen das sich was ändert, aber ich sehe nicht bei welchem Device.
      Außerdem wird im ReadMe des Moduls der Umstieg auf "usb" empfohlen.

      Was mache ich hier falsch?

      EDIT:
      Wegen der Fehlermeldungen in "usb" und "node-usb" habe ich über die Konsole
      von NPM die Module "usb", "node-usb" und "libudev-dev" nach installiert, leider
      ohne Erfolg.

      Jey Cee 1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer @ATARI last edited by

        @atari sagte in Javascript: USB Geräte mit NPM-Modulen erkennen:

        Bei den Modulen "usb" und "node-usb" bekomme ich in den Test-Scipten nur Fehlermeldungen
        bzgl. der Zeile mit dem Befehl: "import..."

        import funktioniert in ioBroker nicht. Du musst stattdessen require verwenden.

        A 1 Reply Last reply Reply Quote 0
        • A
          ATARI @Jey Cee last edited by ATARI

          @jey-cee
          danke für Deine rasche Antwort.

          Mit "require" hab ich es auch versucht, hat auch nicht funktioniert.
          Aber vllt. habe ich die entsprechende Befehlszeile nicht korrekt eingegeben.

          Hast Du evtl. eine kurzes Bespiel hierzu?

          Jey Cee 1 Reply Last reply Reply Quote 0
          • Jey Cee
            Jey Cee Developer @ATARI last edited by

            @atari schau im Github repository von usb bei den issues, da findest du einige Beispiele

            A 2 Replies Last reply Reply Quote 0
            • A
              ATARI @Jey Cee last edited by

              @jey-cee
              ok, schau ich mir mal an.

              1 Reply Last reply Reply Quote 0
              • A
                ATARI @Jey Cee last edited by ATARI

                @jey-cee sagte in Javascript: USB Geräte mit NPM-Modulen erkennen:

                schau im Github repository von usb bei den issues, da findest du einige Beispiele

                Nimm's mir nicht übel, aber unter den Repositorys und Issues zu USB wird man ja
                erschlagen von der Masse der Einträge. Hab mir davon einige angesehen, aber kein
                brauchbares Beispiel-Script endeckt. Im Grunde habe ich immer nur Teile aus den
                Beispiel-Scripten zu den Modulen gefunden. Vllt. bin ich aber auch einfach nur zu 'blöd' für eine richtige Suche.

                Nach

                var usb = require('usb')
                

                bekomme ich in meinem Script keine Fehlermeldung.

                Aber wie geht's dann weiter...,
                Wie müssen Javascripte wie...

                import { getDeviceList } from 'usb';
                const devices = getDeviceList();
                for (const device of devices) {
                    console.log(device); // Legacy device
                }
                

                oder

                import { findByIds } from 'usb';
                const device = findByIds(0x59e3, 0x0a23);
                if (device) {
                    console.log(device); // Legacy device
                }
                

                für ioBroker Javascript umgewandelt werden?

                Alle Beispiel-Scripte von NPM / GitHub "usb" oder "node-usb" beginnen immer mit

                import....
                const...
                

                und funktionieren nicht im ioBroker Javascript.

                EDIT:
                Wie schon erwähnt

                var usbDetect = require('usb-detection');
                usbDetect.startMonitoring();
                usbDetect.on('change', function(device) { console.log('change', device); });
                

                funktioniert, allerdings ohne Infos zum USB-Device.

                Jey Cee 1 Reply Last reply Reply Quote 0
                • Jey Cee
                  Jey Cee Developer @ATARI last edited by

                  const usb = require('usb');
                  
                  const devices = usb.getDeviceList();
                  for (const device of devices) {
                  
                      console.log(device); // Legacy device
                  
                  }
                  
                  A 1 Reply Last reply Reply Quote 0
                  • A
                    ATARI @Jey Cee last edited by

                    @jey-cee
                    SUPER !!! funktioniert.

                    Dann kann ich über

                    const device = usb.findByIds(xxxx, xxxx);
                    

                    das entsprechende Device auf "vorhanden" abfragen?

                    Jey Cee 1 Reply Last reply Reply Quote 0
                    • Jey Cee
                      Jey Cee Developer @ATARI last edited by

                      @atari keine Ahnung ich kenn die Lib USB nicht.

                      A 1 Reply Last reply Reply Quote 0
                      • A
                        ATARI @Jey Cee last edited by ATARI

                        @jey-cee

                        kein Problem.
                        Wenn ich die Befehle (aus dem Beispiel-Script zum Modul "usb")

                        • getDeviceList()
                        • findByIds(xxxx, xxxx)
                        • etc...

                        um ein vorangestelltes "usb." erweitere erhalte ich eine positive Rückmeldung über log.
                        (Das "usb." vor den Befehlen war der 'Key')

                        Merci jey-cee

                        1 Reply Last reply Reply Quote 0
                        • A
                          ATARI last edited by ATARI

                          @Jey-Cee
                          Sorry, ich bin's nochmal (hoffentlich zum letzten Mal in diesem Fall)

                          Das Starten und Stoppen von bestimmten Javascripten in Abhängigkeit vom Vorhandensein bestimmer USB-Geräte funktioniert nun, Dank Deiner Hilfe.

                          Nun habe ich vergessen, das ich ebenfalls eine "Adapter Instanz" per Javascript
                          stoppen bzw. starten müsste. (zB. zwave2.0)

                          Notwendigerweise setze ich den entsprechenden Datenpunkt zum Script
                          "scriptEnabled" auf "false" oder "true".

                          Geht das so o.ä. auch für eine Adapter Instanz?

                          EDIT:
                          Gefunden, Datenpunkt 'alive' der Adapter Instanz auf 'false' danach auf 'true'
                          setzen.

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          1.0k
                          Online

                          31.6k
                          Users

                          79.6k
                          Topics

                          1.3m
                          Posts

                          2
                          11
                          386
                          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