Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Baluberg-Vento, Wie kann ich diesen Knoten benutzen?

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Baluberg-Vento, Wie kann ich diesen Knoten benutzen?

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

      Hallo zusammen,
      seit ein paar Wochen versuche mich in Node-Red einzuarbeiten. Mein Ziel ist die Blauberg Ventilatoren ansteuern zu können. Die Geräte senden die Daten als UDP-Paket.
      Blauberg Vento
      Im netz habe ich einen Knoten gefunden:
      https://github.com/michaelkrog/node-red-contrib-blauberg-vento.git

      Der Knoten bassiert auf einem TS-Skript:
      https://github.com/michaelkrog/blaubergventojs.git

      In den Einstellungen kann ich nur die ID Nummer des Gerätes eintragen, sonst nichts mehr.
      901cca83-894a-465e-8fae-486cee99e63b-grafik.png
      Ich habe den Autor um Hilfe gebeten, er antwortet aber nicht.
      Wenn ich die Beschreibung aus dem letzten Link richtig verstehe, ist der Knoten nur für die Komunikation zuständig. Ist das richtig so?
      Wie kann ich jetzt was auslesen oder an das Gerät senden?
      Ich komme da leider nicht weiter.
      Danke für eure Hilfe!

      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @karloslb last edited by mickym

        @karloslb Ich kann Dir mit der Node auch nichts sagen.

        In meinen Augen hast Du 2 Möglichkeiten:

        1. Du baust ganz von selbst eine low-level Kommunikation auf in dem Du direkt UDP Pakete an Dein Gerät schickst und die Pakete halt nach der verlinkten Kommunikation aufbaust: https://blaubergventilatoren.de/uploads/download/b133_4_1en_01preview.pdf
          Hier würde ich Dir aber in jedem Fall ein buffer Node mitverwenden.
        2. Du nutzt das JS Bibliothek, die Du verlinkt hast direkt in einer function Node: https://github.com/michaelkrog/blaubergventojs

        zu 1 hab ich mal einen Flow zum Ausprobieren gebastelt - keine Ahnung ob der funktioniert - hab das mal anhand des PDFs zusammengebastelt. Die dyn. Buffer-Node hat mE ein Problem, deswegen habe ich das Parsen alleine mit Javascript gemacht.

        bcddf1ff-e314-4462-a1dd-7c67541b788a-image.png

        [
           {
               "id": "b822a5c6e6e5a711",
               "type": "buffer-maker",
               "z": "385f4b8d434f6005",
               "name": "type, ID und Passwort",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "type",
                       "type": "buffer",
                       "length": 1,
                       "dataType": "bin",
                       "data": "[2]"
                   },
                   {
                       "name": "sizeID",
                       "type": "buffer",
                       "length": 1,
                       "dataType": "bin",
                       "data": "[16]"
                   },
                   {
                       "name": "ID",
                       "type": "string",
                       "length": 16,
                       "dataType": "msg",
                       "data": "ID"
                   },
                   {
                       "name": "sizePWD",
                       "type": "byte",
                       "length": 1,
                       "dataType": "jsonata",
                       "data": "$length(password)"
                   },
                   {
                       "name": "password",
                       "type": "string",
                       "length": -1,
                       "dataType": "msg",
                       "data": "password"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 340,
               "y": 80,
               "wires": [
                   [
                       "f8c660323b580df5"
                   ]
               ]
           },
           {
               "id": "929cad4e0b9a7443",
               "type": "inject",
               "z": "385f4b8d434f6005",
               "name": "",
               "props": [
                   {
                       "p": "ID",
                       "v": "",
                       "vt": "str"
                   },
                   {
                       "p": "password",
                       "v": "1111",
                       "vt": "str"
                   },
                   {
                       "p": "FUNC",
                       "v": "1",
                       "vt": "num"
                   },
                   {
                       "p": "DATA",
                       "v": "[1,2]",
                       "vt": "bin"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "x": 150,
               "y": 80,
               "wires": [
                   [
                       "b822a5c6e6e5a711"
                   ]
               ]
           },
           {
               "id": "f8c660323b580df5",
               "type": "buffer-maker",
               "z": "385f4b8d434f6005",
               "name": "FUNC und DATA",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "header",
                       "type": "buffer",
                       "length": -1,
                       "dataType": "msg",
                       "data": "payload"
                   },
                   {
                       "name": "FUNC",
                       "type": "byte",
                       "length": 1,
                       "dataType": "msg",
                       "data": "FUNC"
                   },
                   {
                       "name": "DATA",
                       "type": "buffer",
                       "length": -1,
                       "dataType": "msg",
                       "data": "DATA"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 570,
               "y": 80,
               "wires": [
                   [
                       "88b327dbfb39ca80"
                   ]
               ]
           },
           {
               "id": "d029a20fb5676950",
               "type": "debug",
               "z": "385f4b8d434f6005",
               "name": "Final Packet",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 1210,
               "y": 120,
               "wires": []
           },
           {
               "id": "88b327dbfb39ca80",
               "type": "function",
               "z": "385f4b8d434f6005",
               "name": "Checksum",
               "func": "msg.checksum = 0;\nfor (var x of msg.payload.values()) {\n    msg.checksum += x;\n}\nreturn msg;",
               "outputs": 1,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 770,
               "y": 80,
               "wires": [
                   [
                       "19c7a157927761dd"
                   ]
               ]
           },
           {
               "id": "19c7a157927761dd",
               "type": "buffer-maker",
               "z": "385f4b8d434f6005",
               "name": "Header und Checksum",
               "specification": "spec",
               "specificationType": "ui",
               "items": [
                   {
                       "name": "header",
                       "type": "buffer",
                       "length": 2,
                       "dataType": "bin",
                       "data": "[253,253]"
                   },
                   {
                       "name": "payload",
                       "type": "buffer",
                       "length": -1,
                       "dataType": "msg",
                       "data": "payload"
                   },
                   {
                       "name": "item3",
                       "type": "uint16le",
                       "length": 1,
                       "dataType": "msg",
                       "data": "checksum"
                   }
               ],
               "swap1": "",
               "swap2": "",
               "swap3": "",
               "swap1Type": "swap",
               "swap2Type": "swap",
               "swap3Type": "swap",
               "msgProperty": "payload",
               "msgPropertyType": "str",
               "x": 980,
               "y": 80,
               "wires": [
                   [
                       "d029a20fb5676950",
                       "69e5f16a7ba0a2d7"
                   ]
               ]
           },
           {
               "id": "65b737e55abf4055",
               "type": "udp in",
               "z": "385f4b8d434f6005",
               "d": true,
               "name": "",
               "iface": "",
               "port": "4000",
               "ipv": "udp4",
               "multicast": "false",
               "group": "",
               "datatype": "buffer",
               "x": 160,
               "y": 160,
               "wires": [
                   [
                       "78d6d6a15e93d806"
                   ]
               ]
           },
           {
               "id": "69e5f16a7ba0a2d7",
               "type": "udp out",
               "z": "385f4b8d434f6005",
               "d": true,
               "name": "",
               "addr": "192.168.4.1",
               "iface": "",
               "port": "4000",
               "ipv": "udp4",
               "outport": "4000",
               "base64": false,
               "multicast": "false",
               "x": 1240,
               "y": 80,
               "wires": []
           },
           {
               "id": "8c24bc356424c638",
               "type": "inject",
               "z": "385f4b8d434f6005",
               "name": "incoming packet",
               "props": [
                   {
                       "p": "payload"
                   }
               ],
               "repeat": "",
               "crontab": "",
               "once": false,
               "onceDelay": 0.1,
               "topic": "",
               "payload": "[253,253,2,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,49,49,49,49,1,1,2,222,0]",
               "payloadType": "bin",
               "x": 140,
               "y": 200,
               "wires": [
                   [
                       "78d6d6a15e93d806"
                   ]
               ]
           },
           {
               "id": "78d6d6a15e93d806",
               "type": "function",
               "z": "385f4b8d434f6005",
               "name": "parse Buffer",
               "func": "let buffer=msg.payload;\nlet size_ID = buffer.slice(3).readInt8();\nlet size_PW = buffer.slice(4 + size_ID).readInt8();\nlet object={\n    \"TYPE\": buffer.slice(2, 3).readInt8(),\n    \"SIZE_ID\": size_ID,\n    \"ID\": buffer.slice(4,size_ID + 4).toString(),\n    \"SIZE_PW\": size_PW,\n    \"PWD\": buffer.slice(4 + size_ID + 1, 4 + size_ID + 1 + size_PW).toString(),\n    \"FUNC\": buffer.slice(4 + size_ID + 1 + size_PW).readInt8(),\n    \"DATA\": buffer.slice(4 + size_ID + 1 + size_PW+ 1,-2),\n    \"Checksum\" : buffer.slice(-2)\n}\n\nmsg.payload = object;\nreturn msg;",
               "outputs": 1,
               "noerr": 0,
               "initialize": "",
               "finalize": "",
               "libs": [],
               "x": 350,
               "y": 200,
               "wires": [
                   [
                       "af96eaba3270a79f"
                   ]
               ]
           },
           {
               "id": "af96eaba3270a79f",
               "type": "debug",
               "z": "385f4b8d434f6005",
               "name": "parsed Buffer",
               "active": true,
               "tosidebar": true,
               "console": false,
               "tostatus": false,
               "complete": "payload",
               "targetType": "msg",
               "statusVal": "",
               "statusType": "auto",
               "x": 540,
               "y": 200,
               "wires": []
           }
        ]
        

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

        Support us

        ioBroker
        Community Adapters
        Donate

        1.1k
        Online

        31.7k
        Users

        79.7k
        Topics

        1.3m
        Posts

        2
        2
        179
        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