Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Daten von USB (seriell) an Datenpunkt übergeben

    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

    Daten von USB (seriell) an Datenpunkt übergeben

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

      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 Reply Last reply Reply Quote 0
      • K
        klassisch Most Active @Bjoern77 last edited by

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

          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-sky paul53 2 Replies Last reply Reply Quote 0
          • liv-in-sky
            liv-in-sky @Bjoern77 last edited by liv-in-sky

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

            1 Reply Last reply Reply Quote 0
            • paul53
              paul53 @Bjoern77 last edited by

              @Bjoern77 sagte:

              Byte 16 und 17?

              Beginnt Deine Zählung mit 1 oder 0 ?

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

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

                  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 Reply Last reply Reply Quote 1
                  • K
                    klassisch Most Active @Bjoern77 last edited by

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

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    642
                    Online

                    31.7k
                    Users

                    79.9k
                    Topics

                    1.3m
                    Posts

                    blockly communication javascript
                    4
                    8
                    550
                    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