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. Daten von USB (seriell) an Datenpunkt übergeben

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    126

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

Daten von USB (seriell) an Datenpunkt übergeben

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
blocklyjavascriptcommunication
8 Beiträge 4 Kommentatoren 775 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.
  • Bjoern77B Offline
    Bjoern77B Offline
    Bjoern77
    schrieb am zuletzt editiert von
    #1

    Moin
    Dies ist mein erster Beitrag hier: Tolles Projekt und tolles Forum.
    Bisher hat mich lesen schon weit gebracht. Nun muss ich aber fragen.
    Bei mir läuft Iobroker auf einem Raspberry. Ich habe schon viele Objekte eingebunden: Fritz Box, Sonoffs, Mqtt...
    Nun möchte ich noch meinen Füllstand des Öltanks visualisieren.
    Es handelt sich hier um einen Ultraschall System. Der Monitor hat eine serielle Schnittstelle über USB. Der Monitor sendet alle 60min einen Datensatz mit 22Byte rüber. Mich interessieren 2 Bits. Bit 17 und 18 beinhalten meine Restölmenge in Litern.
    Mir fehlt nun ein Ansatz, wie ich diese Bytes als Datenpunkt bekomme.
    Kann mich bitte jemand auf den richtigen Weg schubsen?
    Danke und Gruss
    Björn

    K 1 Antwort Letzte Antwort
    0
    • Bjoern77B Bjoern77

      Moin
      Dies ist mein erster Beitrag hier: Tolles Projekt und tolles Forum.
      Bisher hat mich lesen schon weit gebracht. Nun muss ich aber fragen.
      Bei mir läuft Iobroker auf einem Raspberry. Ich habe schon viele Objekte eingebunden: Fritz Box, Sonoffs, Mqtt...
      Nun möchte ich noch meinen Füllstand des Öltanks visualisieren.
      Es handelt sich hier um einen Ultraschall System. Der Monitor hat eine serielle Schnittstelle über USB. Der Monitor sendet alle 60min einen Datensatz mit 22Byte rüber. Mich interessieren 2 Bits. Bit 17 und 18 beinhalten meine Restölmenge in Litern.
      Mir fehlt nun ein Ansatz, wie ich diese Bytes als Datenpunkt bekomme.
      Kann mich bitte jemand auf den richtigen Weg schubsen?
      Danke und Gruss
      Björn

      K Offline
      K Offline
      klassisch
      Most Active
      schrieb am zuletzt editiert von
      #2

      @Bjoern77 Serieller Eingang via USB? Da fällt mir der Smarmeter-Adapter ein https://github.com/Apollon77/ioBroker.smartmeter , den ich allerdings selbst nicht benutze und selbst nicht kenne.
      Der RFLInk-Adapter verwendet auch Serial via USB, hat aber eine auf RFLink zugeschnittene Auswertung.

      1 Antwort Letzte Antwort
      0
      • Bjoern77B Offline
        Bjoern77B Offline
        Bjoern77
        schrieb am zuletzt editiert von
        #3

        Hallo
        Danke für die schnelle Antwort.
        Ich bin ein Stück weiter. Ich habe es mit Node Red versucht. Dort gibt es eine Serial In.
        Ich bekomme die Daten auch in einen Buffer. Nur dann komme ich nicht weiter.

        Der Buffer sieht so aus:
        Raw:
        [83,73,0,22,2,16,11,30,27,80,94,82,94,0,0,0,9,217,15,57,70,169,83,73,0,22,2,16,12,2,25,80,94,82,94,0,0,0,9,217,15,57,40,6,83,73,0,22,2,16,12,34,23,80,94,82,94,87,0,56,9,217,15,57,232,232,83,73,0,22,2,16,13,6,20,80,94,82,94,0,0,0,9,217,15,57,67,195,83,73,0,22,2,16,13,38,18,80,94,82,94,88,0,56,9,217,15,57,18,108,83,73,0,22,2,16,14,10]

        Ich brauch nur die ersten 22byte:
        83,73,0,22,2,16,11,30,27,80,94,82,94,0,0,0,9,217,15,57,70,169

        Nun kommt die Frage, wie ich aus diesem Buffer meine 22byte schnippel und daraus dann meine Byte 16 und 17?
        Und dann muss ich den Wert von Byte 16 * 256 multiplizieren und den Wert von Byte 17 addieren.
        Das Ergebnis ist dan 2521 Liter Restmenge im Öltank.
        Nur wie sag ich es der Software?
        Hat jemand einen Ansatz für mich?
        Danke und Gruß
        Björn

        liv-in-skyL paul53P 2 Antworten Letzte Antwort
        0
        • Bjoern77B Bjoern77

          Hallo
          Danke für die schnelle Antwort.
          Ich bin ein Stück weiter. Ich habe es mit Node Red versucht. Dort gibt es eine Serial In.
          Ich bekomme die Daten auch in einen Buffer. Nur dann komme ich nicht weiter.

          Der Buffer sieht so aus:
          Raw:
          [83,73,0,22,2,16,11,30,27,80,94,82,94,0,0,0,9,217,15,57,70,169,83,73,0,22,2,16,12,2,25,80,94,82,94,0,0,0,9,217,15,57,40,6,83,73,0,22,2,16,12,34,23,80,94,82,94,87,0,56,9,217,15,57,232,232,83,73,0,22,2,16,13,6,20,80,94,82,94,0,0,0,9,217,15,57,67,195,83,73,0,22,2,16,13,38,18,80,94,82,94,88,0,56,9,217,15,57,18,108,83,73,0,22,2,16,14,10]

          Ich brauch nur die ersten 22byte:
          83,73,0,22,2,16,11,30,27,80,94,82,94,0,0,0,9,217,15,57,70,169

          Nun kommt die Frage, wie ich aus diesem Buffer meine 22byte schnippel und daraus dann meine Byte 16 und 17?
          Und dann muss ich den Wert von Byte 16 * 256 multiplizieren und den Wert von Byte 17 addieren.
          Das Ergebnis ist dan 2521 Liter Restmenge im Öltank.
          Nur wie sag ich es der Software?
          Hat jemand einen Ansatz für mich?
          Danke und Gruß
          Björn

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von liv-in-sky
          #4

          @Bjoern77 am besten du versuchst irgendwie diesen buffer in einen iobroker datenpunkt (string) zu schreiben - ein kleines script erledigt den rest

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          1 Antwort Letzte Antwort
          0
          • Bjoern77B Bjoern77

            Hallo
            Danke für die schnelle Antwort.
            Ich bin ein Stück weiter. Ich habe es mit Node Red versucht. Dort gibt es eine Serial In.
            Ich bekomme die Daten auch in einen Buffer. Nur dann komme ich nicht weiter.

            Der Buffer sieht so aus:
            Raw:
            [83,73,0,22,2,16,11,30,27,80,94,82,94,0,0,0,9,217,15,57,70,169,83,73,0,22,2,16,12,2,25,80,94,82,94,0,0,0,9,217,15,57,40,6,83,73,0,22,2,16,12,34,23,80,94,82,94,87,0,56,9,217,15,57,232,232,83,73,0,22,2,16,13,6,20,80,94,82,94,0,0,0,9,217,15,57,67,195,83,73,0,22,2,16,13,38,18,80,94,82,94,88,0,56,9,217,15,57,18,108,83,73,0,22,2,16,14,10]

            Ich brauch nur die ersten 22byte:
            83,73,0,22,2,16,11,30,27,80,94,82,94,0,0,0,9,217,15,57,70,169

            Nun kommt die Frage, wie ich aus diesem Buffer meine 22byte schnippel und daraus dann meine Byte 16 und 17?
            Und dann muss ich den Wert von Byte 16 * 256 multiplizieren und den Wert von Byte 17 addieren.
            Das Ergebnis ist dan 2521 Liter Restmenge im Öltank.
            Nur wie sag ich es der Software?
            Hat jemand einen Ansatz für mich?
            Danke und Gruß
            Björn

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

            @Bjoern77 sagte:

            Byte 16 und 17?

            Beginnt Deine Zählung mit 1 oder 0 ?

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            1 Antwort Letzte Antwort
            0
            • Bjoern77B Offline
              Bjoern77B Offline
              Bjoern77
              schrieb am zuletzt editiert von
              #6

              Moin
              Danke für die Antworten.
              Ich denke die Zählung beginnt mit 0.
              Meine "wichtigen" Bytes sind 16 mit Wert 9 und Byte 17 mit Wert 217.
              9 * 256 + 217 = Restöl.
              Aber wie ich das Umsätze...??? :-)
              Danke und Gruß
              Björn

              1 Antwort Letzte Antwort
              0
              • Bjoern77B Offline
                Bjoern77B Offline
                Bjoern77
                schrieb am zuletzt editiert von
                #7

                Moin
                Ein Weihnachtswunder: Es funktioniert!
                Also, wer eine Proteus Füllstandsanzeige einbinden möchte, kann das mit Node Red machen.
                Man benötigt die Serial Node.
                Zerlegt wird das ganze mit einer Funktion wie dieser:

                let arr = [];
                arr.push(...msg.payload);
                
                let result = 256 * arr[16] + arr[17];
                msg.payload = result;
                return msg;
                

                Hier der gesamte Flow mit den richtigen Settings für die Serielle:

                [
                    {
                        "id": "99d77eab.d4a9d8",
                        "type": "tab",
                        "label": "Buffer to Array",
                        "disabled": false,
                        "info": ""
                    },
                    {
                        "id": "59d5a970.095358",
                        "type": "function",
                        "z": "99d77eab.d4a9d8",
                        "name": "Calculate result",
                        "func": "let arr = [];\narr.push(...msg.payload);\n\nlet result = 256 * arr[16] + arr[17];\nmsg.payload = result;\nreturn msg;",
                        "outputs": 1,
                        "noerr": 0,
                        "x": 460,
                        "y": 200,
                        "wires": [
                            [
                                "44e6b472.074a3c",
                                "f5e44a87.62f1a8"
                            ]
                        ]
                    },
                    {
                        "id": "8e1b88dd.fd1038",
                        "type": "serial in",
                        "z": "99d77eab.d4a9d8",
                        "name": "",
                        "serial": "a2f7fb51.59e46",
                        "x": 220,
                        "y": 200,
                        "wires": [
                            [
                                "59d5a970.095358"
                            ]
                        ]
                    },
                    {
                        "id": "f5e44a87.62f1a8",
                        "type": "ui_text",
                        "z": "99d77eab.d4a9d8",
                        "group": "ebfa9ff4.005738",
                        "order": 3,
                        "width": 0,
                        "height": 0,
                        "name": "",
                        "label": "text",
                        "format": "{{msg.payload}}",
                        "layout": "row-spread",
                        "x": 660,
                        "y": 240,
                        "wires": []
                    },
                    {
                        "id": "44e6b472.074a3c",
                        "type": "debug",
                        "z": "99d77eab.d4a9d8",
                        "name": "",
                        "active": true,
                        "tosidebar": true,
                        "console": false,
                        "tostatus": false,
                        "complete": "false",
                        "x": 680,
                        "y": 160,
                        "wires": []
                    },
                    {
                        "id": "a2f7fb51.59e46",
                        "type": "serial-port",
                        "z": "",
                        "serialport": "/dev/ttyUSB0",
                        "serialbaud": "115200",
                        "databits": "8",
                        "parity": "none",
                        "stopbits": "1",
                        "waitfor": "",
                        "dtr": "none",
                        "rts": "none",
                        "cts": "none",
                        "dsr": "none",
                        "newline": "10000",
                        "bin": "bin",
                        "out": "time",
                        "addchar": "",
                        "responsetimeout": "10000"
                    },
                    {
                        "id": "ebfa9ff4.005738",
                        "type": "ui_group",
                        "z": "",
                        "name": "Test",
                        "tab": "64424ddc.01020c",
                        "disp": true,
                        "width": "6",
                        "collapse": false
                    },
                    {
                        "id": "64424ddc.01020c",
                        "type": "ui_tab",
                        "z": "",
                        "name": "Home",
                        "icon": "dashboard",
                        "disabled": false,
                        "hidden": false
                    }
                ]
                

                Schönes Fest und Gruß
                Björn

                K 1 Antwort Letzte Antwort
                1
                • Bjoern77B Bjoern77

                  Moin
                  Ein Weihnachtswunder: Es funktioniert!
                  Also, wer eine Proteus Füllstandsanzeige einbinden möchte, kann das mit Node Red machen.
                  Man benötigt die Serial Node.
                  Zerlegt wird das ganze mit einer Funktion wie dieser:

                  let arr = [];
                  arr.push(...msg.payload);
                  
                  let result = 256 * arr[16] + arr[17];
                  msg.payload = result;
                  return msg;
                  

                  Hier der gesamte Flow mit den richtigen Settings für die Serielle:

                  [
                      {
                          "id": "99d77eab.d4a9d8",
                          "type": "tab",
                          "label": "Buffer to Array",
                          "disabled": false,
                          "info": ""
                      },
                      {
                          "id": "59d5a970.095358",
                          "type": "function",
                          "z": "99d77eab.d4a9d8",
                          "name": "Calculate result",
                          "func": "let arr = [];\narr.push(...msg.payload);\n\nlet result = 256 * arr[16] + arr[17];\nmsg.payload = result;\nreturn msg;",
                          "outputs": 1,
                          "noerr": 0,
                          "x": 460,
                          "y": 200,
                          "wires": [
                              [
                                  "44e6b472.074a3c",
                                  "f5e44a87.62f1a8"
                              ]
                          ]
                      },
                      {
                          "id": "8e1b88dd.fd1038",
                          "type": "serial in",
                          "z": "99d77eab.d4a9d8",
                          "name": "",
                          "serial": "a2f7fb51.59e46",
                          "x": 220,
                          "y": 200,
                          "wires": [
                              [
                                  "59d5a970.095358"
                              ]
                          ]
                      },
                      {
                          "id": "f5e44a87.62f1a8",
                          "type": "ui_text",
                          "z": "99d77eab.d4a9d8",
                          "group": "ebfa9ff4.005738",
                          "order": 3,
                          "width": 0,
                          "height": 0,
                          "name": "",
                          "label": "text",
                          "format": "{{msg.payload}}",
                          "layout": "row-spread",
                          "x": 660,
                          "y": 240,
                          "wires": []
                      },
                      {
                          "id": "44e6b472.074a3c",
                          "type": "debug",
                          "z": "99d77eab.d4a9d8",
                          "name": "",
                          "active": true,
                          "tosidebar": true,
                          "console": false,
                          "tostatus": false,
                          "complete": "false",
                          "x": 680,
                          "y": 160,
                          "wires": []
                      },
                      {
                          "id": "a2f7fb51.59e46",
                          "type": "serial-port",
                          "z": "",
                          "serialport": "/dev/ttyUSB0",
                          "serialbaud": "115200",
                          "databits": "8",
                          "parity": "none",
                          "stopbits": "1",
                          "waitfor": "",
                          "dtr": "none",
                          "rts": "none",
                          "cts": "none",
                          "dsr": "none",
                          "newline": "10000",
                          "bin": "bin",
                          "out": "time",
                          "addchar": "",
                          "responsetimeout": "10000"
                      },
                      {
                          "id": "ebfa9ff4.005738",
                          "type": "ui_group",
                          "z": "",
                          "name": "Test",
                          "tab": "64424ddc.01020c",
                          "disp": true,
                          "width": "6",
                          "collapse": false
                      },
                      {
                          "id": "64424ddc.01020c",
                          "type": "ui_tab",
                          "z": "",
                          "name": "Home",
                          "icon": "dashboard",
                          "disabled": false,
                          "hidden": false
                      }
                  ]
                  

                  Schönes Fest und Gruß
                  Björn

                  K Offline
                  K Offline
                  klassisch
                  Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @Bjoern77 herzlichen Glückwunsch zum Erfolg und vielen Dank für die Rückmeldung

                  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

                  406

                  Online

                  32.5k

                  Benutzer

                  81.7k

                  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