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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Hilfe bei der Verwendung von serialport

NEWS

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

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

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

Hilfe bei der Verwendung von serialport

Geplant Angeheftet Gesperrt Verschoben JavaScript
14 Beiträge 5 Kommentatoren 577 Aufrufe 4 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.
  • B Offline
    B Offline
    BeneJan
    schrieb am zuletzt editiert von
    #1

    Guten Morgen,

    über einen Arduino erhalte ich zyklisch alle 5 Sekunden Messwerte (Temperatur, Luftfeuchte und CO2) über ein serielle Schnittstelle. Die Messwerte kommen sauber an und werden z.B. in hterm angezeigt. Jetzt würde ich die Werte gerne in Datenpunkte in iobroker schreiben, um sie weiter zu verarbeiten. Folgendes Testprogramm verwende ich in JS, um die Kommunikation zu testen (Erstmal öffnen der Schnittstelle und etwas schreiben):

    var SerialPort = require('serialport');
    var port = new SerialPort('COM3', {
      baudRate: 9600
    });
     
    port.write('Test');
    

    Bei mir wird 'serialport' rot unterstrichen und ich erhalte folgende Fehlermeldung:

    javascript.0	07:22:42.312	error	script.js.common.Sensoren_allgemein.Skript_1: TypeError: SerialPort is not a constructor
    javascript.0	07:22:42.312	error	at script.js.common.Sensoren_allgemein.Skript_1:3:12
    javascript.0	07:22:42.312	error	at script.js.common.Sensoren_allgemein.Skript_1:12:3
    

    Unter der Instanz javascript.0 habe ich bei zusätzlichen npm-Modulen serialport eingetragen.
    Woran könnte der Fehler noch liegen? iobroker ist auf einem Windows 10 PC installiert.
    Schon einmal danke. Ich bin etwas ratlos.

    1 Antwort Letzte Antwort
    0
    • B Offline
      B Offline
      BeneJan
      schrieb am zuletzt editiert von
      #2

      So sieht das bei den npm-Modulen aus:
      Screen.png

      AsgothianA 1 Antwort Letzte Antwort
      0
      • B BeneJan

        So sieht das bei den npm-Modulen aus:
        Screen.png

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von
        #3

        @benejan Versuch mal so:

        const { SerialPort } = require('serialport');
        var port = new SerialPort('COM3', {
          baudRate: 9600
        });
         
        port.write('Test');
        
        

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        B 1 Antwort Letzte Antwort
        0
        • AsgothianA Asgothian

          @benejan Versuch mal so:

          const { SerialPort } = require('serialport');
          var port = new SerialPort('COM3', {
            baudRate: 9600
          });
           
          port.write('Test');
          
          
          B Offline
          B Offline
          BeneJan
          schrieb am zuletzt editiert von
          #4

          @asgothian Das serialport bleibt weiterhin rot unterstrichen, nur die Fehlermeldung hat sich geändert:

          javascript.0	09:31:46.062	error	script.js.common.Sensoren_allgemein.Skript_1: TypeError: "path" is not defined: undefined
          javascript.0	09:31:46.062	error	at script.js.common.Sensoren_allgemein.Skript_1:3:12
          javascript.0	09:31:46.062	error	at script.js.common.Sensoren_allgemein.Skript_1:12:3
          
          AsgothianA 1 Antwort Letzte Antwort
          0
          • B BeneJan

            @asgothian Das serialport bleibt weiterhin rot unterstrichen, nur die Fehlermeldung hat sich geändert:

            javascript.0	09:31:46.062	error	script.js.common.Sensoren_allgemein.Skript_1: TypeError: "path" is not defined: undefined
            javascript.0	09:31:46.062	error	at script.js.common.Sensoren_allgemein.Skript_1:3:12
            javascript.0	09:31:46.062	error	at script.js.common.Sensoren_allgemein.Skript_1:12:3
            
            AsgothianA Offline
            AsgothianA Offline
            Asgothian
            Developer
            schrieb am zuletzt editiert von
            #5

            @benejan hast du die Doku zum Serialport gelesen (die aktuelle, und nicht Beispiele zur Nutzung von vor x Jahren ?)

            da steht eindeutig:

            import { SerialPort } from 'serialport'
            
            const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })
            serialport.write('ROBOT POWER ON')
            

            das import { SerialPort } from 'serialport' ist gleichzusetzen mit const { SerialPort } = require('serialport');

            A.

            ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
            "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

            bahnuhrB B 2 Antworten Letzte Antwort
            0
            • AsgothianA Asgothian

              @benejan hast du die Doku zum Serialport gelesen (die aktuelle, und nicht Beispiele zur Nutzung von vor x Jahren ?)

              da steht eindeutig:

              import { SerialPort } from 'serialport'
              
              const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })
              serialport.write('ROBOT POWER ON')
              

              das import { SerialPort } from 'serialport' ist gleichzusetzen mit const { SerialPort } = require('serialport');

              A.

              bahnuhrB Online
              bahnuhrB Online
              bahnuhr
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #6

              @asgothian
              etwas off topic.

              Kannst du mir mal einen link geben warum man dies nun in {} setzt.

              Hab ich in keinem meiner Scripte.


              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
              Danke.
              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
              ScreenToGif :https://www.screentogif.com/downloads.html

              AsgothianA 1 Antwort Letzte Antwort
              0
              • bahnuhrB bahnuhr

                @asgothian
                etwas off topic.

                Kannst du mir mal einen link geben warum man dies nun in {} setzt.

                Hab ich in keinem meiner Scripte.

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                schrieb am zuletzt editiert von
                #7

                @bahnuhr sagte in Hilfe bei der Verwendung von serialport:

                @asgothian
                etwas off topic.

                Kannst du mir mal einen link geben warum man dies nun in {} setzt.

                Hab ich in keinem meiner Scripte.

                Das hat etwas damit zu tun was du importierst.

                Man nehme:

                ein Modul myModule welches 2 Klassen exportiert, A und B.

                Wenn du das benutzen willst kannst du das auf verschiedene Art tun:

                const module = require('myModule')
                const instance_of_a = new module.A();
                
                const classA = require('myModule').A
                const another_Instance_of_a = new classA()
                
                const {A} = require('myModule')
                const thirdinstanceofa = new A();
                
                const {A,B} = require('myModule');
                

                Insbesondere der letzte require Befehl ist dabei interessant - er gibt Dir zugriff auf beide Klassen ohne das du den Umweg über module.A und module.B machen musst.

                Ob diese Syntax also notwendig ist hängt davon ab was du per require importierst

                A.

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                1 Antwort Letzte Antwort
                0
                • AsgothianA Asgothian

                  @benejan hast du die Doku zum Serialport gelesen (die aktuelle, und nicht Beispiele zur Nutzung von vor x Jahren ?)

                  da steht eindeutig:

                  import { SerialPort } from 'serialport'
                  
                  const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })
                  serialport.write('ROBOT POWER ON')
                  

                  das import { SerialPort } from 'serialport' ist gleichzusetzen mit const { SerialPort } = require('serialport');

                  A.

                  B Offline
                  B Offline
                  BeneJan
                  schrieb am zuletzt editiert von
                  #8

                  @asgothian Ja das hatte ich gelesen und auch schon ausprobiert.
                  Dann ist das serialport immer noch rot unterstrichen und es wird folgende Fehlermeldung ausgegeben:

                  javascript.0	16:37:39.743	error	script.js.common.Sensoren_allgemein.Skript_1 compile failed: at script.js.common.Sensoren_allgemein.Skript_1:2
                  
                  OliverIOO AsgothianA 3 Antworten Letzte Antwort
                  0
                  • B BeneJan

                    @asgothian Ja das hatte ich gelesen und auch schon ausprobiert.
                    Dann ist das serialport immer noch rot unterstrichen und es wird folgende Fehlermeldung ausgegeben:

                    javascript.0	16:37:39.743	error	script.js.common.Sensoren_allgemein.Skript_1 compile failed: at script.js.common.Sensoren_allgemein.Skript_1:2
                    
                    OliverIOO Offline
                    OliverIOO Offline
                    OliverIO
                    schrieb am zuletzt editiert von
                    #9

                    @benejan

                    Das rot unterstrichene bedeutet, das der Editor den Typ nicht finden kann. Das ist aber nur eine Editor Geschichte und passiert immer dann wenn die Bibliothek keine typdefinitionen mitliefert.
                    Wenn der Code funktioniert, kann das ignoriert werden.

                    Meine Adapter und Widgets
                    TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                    Links im Profil

                    1 Antwort Letzte Antwort
                    0
                    • B BeneJan

                      @asgothian Ja das hatte ich gelesen und auch schon ausprobiert.
                      Dann ist das serialport immer noch rot unterstrichen und es wird folgende Fehlermeldung ausgegeben:

                      javascript.0	16:37:39.743	error	script.js.common.Sensoren_allgemein.Skript_1 compile failed: at script.js.common.Sensoren_allgemein.Skript_1:2
                      
                      AsgothianA Offline
                      AsgothianA Offline
                      Asgothian
                      Developer
                      schrieb am zuletzt editiert von
                      #10

                      @benejan Du hast gelesen was ich über import und require geschrieben habe ?

                      A.

                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                      1 Antwort Letzte Antwort
                      0
                      • B BeneJan

                        @asgothian Ja das hatte ich gelesen und auch schon ausprobiert.
                        Dann ist das serialport immer noch rot unterstrichen und es wird folgende Fehlermeldung ausgegeben:

                        javascript.0	16:37:39.743	error	script.js.common.Sensoren_allgemein.Skript_1 compile failed: at script.js.common.Sensoren_allgemein.Skript_1:2
                        
                        OliverIOO Offline
                        OliverIOO Offline
                        OliverIO
                        schrieb am zuletzt editiert von OliverIO
                        #11

                        @benejan

                        Du musst dann nochmal den aktuellen Code zeigen.
                        Die Fehlermeldung bedeutet, das die Compilation, also die Übersetzung von typescript nach JavaScript nicht funktioniert.
                        Also hast Du da noch einen Syntax Fehler drin.

                        Zum selber lesen auch hier mal die Dokumentation
                        https://serialport.io/docs/api-serialport

                        Du musst allerdings, glaube ich, immer require verwenden,
                        Da der JavaScript Adapter noch commonjs ist und nicht ein richtiges Node Modul.

                        Meine Adapter und Widgets
                        TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                        Links im Profil

                        1 Antwort Letzte Antwort
                        1
                        • B Offline
                          B Offline
                          BeneJan
                          schrieb am zuletzt editiert von
                          #12

                          Ja, in die Doku habe ich geschaut, aber kann dort nichts finden, was mich weiterbringt in diesem Fall. Als Code habe ich genau das zum testen genommen, was @Asgothian vorgegeben hat:

                          import { SerialPort } from 'serialport'
                           
                          const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })
                          serialport.write('ROBOT POWER ON')
                          
                          OliverIOO 1 Antwort Letzte Antwort
                          0
                          • B BeneJan

                            Ja, in die Doku habe ich geschaut, aber kann dort nichts finden, was mich weiterbringt in diesem Fall. Als Code habe ich genau das zum testen genommen, was @Asgothian vorgegeben hat:

                            import { SerialPort } from 'serialport'
                             
                            const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })
                            serialport.write('ROBOT POWER ON')
                            
                            OliverIOO Offline
                            OliverIOO Offline
                            OliverIO
                            schrieb am zuletzt editiert von OliverIO
                            #13

                            @benejan

                            sorry, nein, du hast nicht das selbe wie @Asgothian übernommen.
                            Selbst nachdem ich es nochmals geschrieben habe (weil ich es vermutet habe)
                            Hast du das auch nicht übernommen.

                            Das läuft ohne Fehler:

                            const { SerialPort } = require('serialport');
                            const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })
                            serialport.write('ROBOT POWER ON')
                            

                            Warum machen manche einem die Hilfe so schwer in dem sie die anghebotene Hilfe nicht sorgfältig genug lesen?

                            @asgothian sagte in Hilfe bei der Verwendung von serialport:

                                                                                                                                                        import { SerialPort } from 'serialport'                                                                                                                                                                                                                                                                                                                                                         const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })                                                                                                                                                                            serialport.write('ROBOT POWER ON')                                            
                            

                            das import { SerialPort } from 'serialport' ist gleichzusetzen mit const { SerialPort } = require('serialport');

                            und

                            @oliverio sagte in Hilfe bei der Verwendung von serialport:

                            Du musst allerdings, glaube ich, immer require verwenden,
                            Da der JavaScript Adapter noch commonjs ist und nicht ein richtiges Node Modul.

                            Den konkreten Pfad musst du selbst herausfinden, da das Geräte und Hardwareabhängig ist auf deinem Rechner. /dev/example ist nur ein dummy wert

                            Ausserdem empfehle ich, die ; am Ende einer Befehlszeile immer zu setzen, da es ein paar Fälle gibt, wo javascript das Zeilenende nicht richtig interpretieren kann:
                            https://javascript.info/structure#semicolon

                            Nachtrag:
                            wei es mir erst gerade aufgefallen ist:

                            Der wahre Grund des Fehlers ist dann im iobroker log sichtbar, falls man debug level debug für den javascript adapter aktiviert hat:

                            javascript.0 2025-03-16 23:06:05.577	error	SyntaxError: Cannot use import statement outside a module
                            javascript.0 2025-03-16 23:06:05.576	error	^^^^^^
                            javascript.0 2025-03-16 23:06:05.576	error	import { SerialPort } from 'serialport'
                            javascript.0 2025-03-16 23:06:05.575	error	script.js.Skript_1 compile failed: at script.js.Skript_1:4
                            

                            wäre glaube ich auch mal etwas was man im skriptlog mit anzeigen könnte @haus-automatisierung
                            Nur die letzte Zeile im Skriptlog ist nicht immer ganz erklärend

                            Meine Adapter und Widgets
                            TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                            Links im Profil

                            haus-automatisierungH 1 Antwort Letzte Antwort
                            1
                            • OliverIOO OliverIO

                              @benejan

                              sorry, nein, du hast nicht das selbe wie @Asgothian übernommen.
                              Selbst nachdem ich es nochmals geschrieben habe (weil ich es vermutet habe)
                              Hast du das auch nicht übernommen.

                              Das läuft ohne Fehler:

                              const { SerialPort } = require('serialport');
                              const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })
                              serialport.write('ROBOT POWER ON')
                              

                              Warum machen manche einem die Hilfe so schwer in dem sie die anghebotene Hilfe nicht sorgfältig genug lesen?

                              @asgothian sagte in Hilfe bei der Verwendung von serialport:

                                                                                                                                                          import { SerialPort } from 'serialport'                                                                                                                                                                                                                                                                                                                                                         const serialport = new SerialPort({ path: '/dev/example', baudRate: 9600 })                                                                                                                                                                            serialport.write('ROBOT POWER ON')                                            
                              

                              das import { SerialPort } from 'serialport' ist gleichzusetzen mit const { SerialPort } = require('serialport');

                              und

                              @oliverio sagte in Hilfe bei der Verwendung von serialport:

                              Du musst allerdings, glaube ich, immer require verwenden,
                              Da der JavaScript Adapter noch commonjs ist und nicht ein richtiges Node Modul.

                              Den konkreten Pfad musst du selbst herausfinden, da das Geräte und Hardwareabhängig ist auf deinem Rechner. /dev/example ist nur ein dummy wert

                              Ausserdem empfehle ich, die ; am Ende einer Befehlszeile immer zu setzen, da es ein paar Fälle gibt, wo javascript das Zeilenende nicht richtig interpretieren kann:
                              https://javascript.info/structure#semicolon

                              Nachtrag:
                              wei es mir erst gerade aufgefallen ist:

                              Der wahre Grund des Fehlers ist dann im iobroker log sichtbar, falls man debug level debug für den javascript adapter aktiviert hat:

                              javascript.0 2025-03-16 23:06:05.577	error	SyntaxError: Cannot use import statement outside a module
                              javascript.0 2025-03-16 23:06:05.576	error	^^^^^^
                              javascript.0 2025-03-16 23:06:05.576	error	import { SerialPort } from 'serialport'
                              javascript.0 2025-03-16 23:06:05.575	error	script.js.Skript_1 compile failed: at script.js.Skript_1:4
                              

                              wäre glaube ich auch mal etwas was man im skriptlog mit anzeigen könnte @haus-automatisierung
                              Nur die letzte Zeile im Skriptlog ist nicht immer ganz erklärend

                              haus-automatisierungH Offline
                              haus-automatisierungH Offline
                              haus-automatisierung
                              Developer Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @oliverio sagte in Hilfe bei der Verwendung von serialport:

                              Nur die letzte Zeile im Skriptlog ist nicht immer ganz erklärend

                              Ja, das Problem ist, dass das Log innerhalb der Scripts nach der Script ID sucht. Alles, wo nicht die Script ID enthalten ist, wird ausgeblendet. Dadurch fehlt meistens die (wichtige) erste Zeile des Logs und nur der Stack wird angezeigt.

                              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                              📚 Meine inoffizielle ioBroker Dokumentation

                              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

                              804

                              Online

                              32.4k

                              Benutzer

                              81.6k

                              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