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

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Internet-Speedtest als Adapterersatz via NodeRed

NEWS

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

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

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

Internet-Speedtest als Adapterersatz via NodeRed

Geplant Angeheftet Gesperrt Verschoben Node-Red
communicationmonitoringnode-red
10 Beiträge 5 Kommentatoren 2.1k Aufrufe 6 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.
  • mickymM Online
    mickymM Online
    mickym
    Most Active
    schrieb am zuletzt editiert von mickym
    #1

    Da ich keinen vernünftigen Adapter im stable gefunden habe und ich ja auch bereits in einem eigenen Thread gezeigt habe, wie einfach es mit NodeRed in der jetzigen Version ist, externe NodeJS Module zu nutzen, habe ich einen super simplen Flow erstellt, der einen Speedtest durchführt und alles in Datenpunkte schreibt. (Also als Adapterersatz quasi quick & dirty)

    Da die Node in NodeRed auch schon in die Jahre gekommen ist, habe ich es über die automatische Installation einfach gehabt.

    Ich habe aber bewußt nichts konfiguriert, man muss also mit dem Ergebnis so leben, wie es ist. ;) Das Tool bzw. die Bibliothek mit der der Speedtest arbeitet ist diese: https://github.com/ddsol/speedtest.net#readme

    Hier mal das Ergebnis - etwaige Umrechnungen müsst ihr selbst vornehmen:

    10740c03-1f22-4516-9384-72a54881e793-image.png

    Der Flow ist super simple und nutzt natürlich meinen Subflow zur automatischen Erstellung von Datenpunkten aus komplexen Datenstrukturen:

    357106df-6aca-46c6-86d3-276d7d00eab6-image.png

    Wenn ihr den Flow importiert müsst ihr ein paar Minuten warten, bis NodeRed im Hintergrund die Bibliothek installiert hat.

    Wer ungeduldig ist bekommt den Fehler: Node ist nicht vorhanden. Also so ca. 5 Minuten warten bevor ihr den Flow triggert.
    66c14325-7d60-4257-9405-08253828f154-image.png

    Und natürlich wieder die Erstellung von Fremdobjekten im NodeRed Adapter zulassen:

    [
        {
            "id": "6e802f1553b18149",
            "type": "subflow",
            "name": "JSON or Obj to IOBroker",
            "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the top-value of the node (environment variable top) is used. \n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der top-Wert (Umgebungsvariable top) der Node verwendet. <br>\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. ",
            "category": "",
            "in": [
                {
                    "x": 60,
                    "y": 160,
                    "wires": [
                        {
                            "id": "e023fe88445ce43e"
                        }
                    ]
                }
            ],
            "out": [
                {
                    "x": 2120,
                    "y": 280,
                    "wires": [
                        {
                            "id": "f5d52c6a57d08904",
                            "port": 0
                        },
                        {
                            "id": "74c895ce724750de",
                            "port": 0
                        }
                    ]
                }
            ],
            "env": [
                {
                    "name": "top",
                    "type": "str",
                    "value": "objRoot"
                }
            ],
            "meta": {},
            "color": "#E2D96E",
            "icon": "node-red/batch.svg"
        },
        {
            "id": "3e11e8338f694832",
            "type": "split",
            "z": "6e802f1553b18149",
            "name": "split object",
            "splt": "\\n",
            "spltType": "str",
            "arraySplt": 1,
            "arraySpltType": "len",
            "stream": false,
            "addname": "key",
            "x": 1170,
            "y": 160,
            "wires": [
                [
                    "0562a4249c8b856b"
                ]
            ]
        },
        {
            "id": "0562a4249c8b856b",
            "type": "change",
            "z": "6e802f1553b18149",
            "name": "add key to topic",
            "rules": [
                {
                    "t": "set",
                    "p": "stateName",
                    "pt": "msg",
                    "to": "key",
                    "tot": "msg"
                },
                {
                    "t": "set",
                    "p": "topic",
                    "pt": "msg",
                    "to": "topic  & '.' & key",
                    "tot": "jsonata"
                },
                {
                    "t": "change",
                    "p": "topic",
                    "pt": "msg",
                    "from": " ",
                    "fromt": "str",
                    "to": "_",
                    "tot": "str"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 1360,
            "y": 160,
            "wires": [
                [
                    "ddc90985bef0fafa"
                ]
            ]
        },
        {
            "id": "ddc90985bef0fafa",
            "type": "switch",
            "z": "6e802f1553b18149",
            "name": "is type?",
            "property": "payload",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "istype",
                    "v": "array",
                    "vt": "array"
                },
                {
                    "t": "istype",
                    "v": "object",
                    "vt": "object"
                },
                {
                    "t": "else"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 3,
            "x": 1540,
            "y": 160,
            "wires": [
                [
                    "bfce19b206660fbe"
                ],
                [
                    "3e11e8338f694832"
                ],
                [
                    "1a8c03d866b85b12"
                ]
            ]
        },
        {
            "id": "bfce19b206660fbe",
            "type": "split",
            "z": "6e802f1553b18149",
            "name": "split array",
            "splt": "\\n",
            "spltType": "str",
            "arraySplt": 1,
            "arraySpltType": "len",
            "stream": false,
            "addname": "",
            "x": 580,
            "y": 280,
            "wires": [
                [
                    "e89927810c6d75ec"
                ]
            ]
        },
        {
            "id": "e89927810c6d75ec",
            "type": "change",
            "z": "6e802f1553b18149",
            "name": "add index to topic",
            "rules": [
                {
                    "t": "set",
                    "p": "topic",
                    "pt": "msg",
                    "to": "topic  & '.' & parts.index",
                    "tot": "jsonata"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 770,
            "y": 280,
            "wires": [
                [
                    "a4d1a5d04564dc77"
                ]
            ]
        },
        {
            "id": "f5d52c6a57d08904",
            "type": "change",
            "z": "6e802f1553b18149",
            "name": "finalize msg.topic",
            "rules": [
                {
                    "t": "set",
                    "p": "top",
                    "pt": "msg",
                    "to": "'0_userdata.0.' & top",
                    "tot": "jsonata"
                },
                {
                    "t": "set",
                    "p": "topic",
                    "pt": "msg",
                    "to": "top & topic",
                    "tot": "jsonata"
                },
                {
                    "t": "change",
                    "p": "topic",
                    "pt": "msg",
                    "from": "..",
                    "fromt": "str",
                    "to": ".",
                    "tot": "str"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 1970,
            "y": 240,
            "wires": [
                []
            ]
        },
        {
            "id": "c863dd7d651b2272",
            "type": "switch",
            "z": "6e802f1553b18149",
            "name": "is type?",
            "property": "payload",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "istype",
                    "v": "json",
                    "vt": "json"
                },
                {
                    "t": "istype",
                    "v": "object",
                    "vt": "object"
                },
                {
                    "t": "istype",
                    "v": "array",
                    "vt": "array"
                },
                {
                    "t": "else"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 4,
            "x": 400,
            "y": 160,
            "wires": [
                [
                    "158930afddd0780b"
                ],
                [
                    "3e11e8338f694832"
                ],
                [
                    "bfce19b206660fbe"
                ],
                [
                    "a4d1a5d04564dc77"
                ]
            ]
        },
        {
            "id": "158930afddd0780b",
            "type": "json",
            "z": "6e802f1553b18149",
            "name": "",
            "property": "payload",
            "action": "",
            "pretty": false,
            "x": 570,
            "y": 120,
            "wires": [
                [
                    "3649300b4c233b10"
                ]
            ]
        },
        {
            "id": "1a8c03d866b85b12",
            "type": "switch",
            "z": "6e802f1553b18149",
            "name": "is msg.top != null",
            "property": "top",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "nnull"
                },
                {
                    "t": "null"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 2,
            "x": 1750,
            "y": 280,
            "wires": [
                [
                    "f5d52c6a57d08904"
                ],
                [
                    "74c895ce724750de"
                ]
            ]
        },
        {
            "id": "e023fe88445ce43e",
            "type": "change",
            "z": "6e802f1553b18149",
            "name": "",
            "rules": [
                {
                    "t": "delete",
                    "p": "topic",
                    "pt": "msg"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 210,
            "y": 160,
            "wires": [
                [
                    "c863dd7d651b2272"
                ]
            ]
        },
        {
            "id": "3649300b4c233b10",
            "type": "switch",
            "z": "6e802f1553b18149",
            "name": "is array?",
            "property": "payload",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "istype",
                    "v": "array",
                    "vt": "array"
                },
                {
                    "t": "else"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 2,
            "x": 700,
            "y": 120,
            "wires": [
                [
                    "bfce19b206660fbe"
                ],
                [
                    "3e11e8338f694832"
                ]
            ]
        },
        {
            "id": "1b8480cd2df7ba3f",
            "type": "comment",
            "z": "6e802f1553b18149",
            "name": "Array",
            "info": "",
            "x": 400,
            "y": 280,
            "wires": []
        },
        {
            "id": "b3541807672be040",
            "type": "comment",
            "z": "6e802f1553b18149",
            "name": "object",
            "info": "",
            "x": 1140,
            "y": 100,
            "wires": []
        },
        {
            "id": "a4d1a5d04564dc77",
            "type": "switch",
            "z": "6e802f1553b18149",
            "name": "is type?",
            "property": "payload",
            "propertyType": "msg",
            "rules": [
                {
                    "t": "istype",
                    "v": "object",
                    "vt": "object"
                },
                {
                    "t": "istype",
                    "v": "array",
                    "vt": "array"
                },
                {
                    "t": "else"
                }
            ],
            "checkall": "true",
            "repair": false,
            "outputs": 3,
            "x": 960,
            "y": 280,
            "wires": [
                [
                    "3e11e8338f694832"
                ],
                [
                    "bfce19b206660fbe"
                ],
                [
                    "1a8c03d866b85b12"
                ]
            ]
        },
        {
            "id": "74c895ce724750de",
            "type": "change",
            "z": "6e802f1553b18149",
            "name": "finalize msg.topic",
            "rules": [
                {
                    "t": "set",
                    "p": "top",
                    "pt": "msg",
                    "to": "top",
                    "tot": "env"
                },
                {
                    "t": "set",
                    "p": "top",
                    "pt": "msg",
                    "to": "'0_userdata.0.' & top",
                    "tot": "jsonata"
                },
                {
                    "t": "set",
                    "p": "topic",
                    "pt": "msg",
                    "to": "top & topic",
                    "tot": "jsonata"
                },
                {
                    "t": "change",
                    "p": "topic",
                    "pt": "msg",
                    "from": "..",
                    "fromt": "str",
                    "to": ".",
                    "tot": "str"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 1970,
            "y": 320,
            "wires": [
                []
            ]
        },
        {
            "id": "c9b74b75fb88fae5",
            "type": "comment",
            "z": "2140b385.78fb7c",
            "name": "Speedtest Internet",
            "info": "",
            "x": 190,
            "y": 3600,
            "wires": []
        },
        {
            "id": "ca0931a9b59c5c60",
            "type": "function",
            "z": "2140b385.78fb7c",
            "name": "Speedtest",
            "func": "msg = {};\n\n(async () => {\n  try {\n    await speedTest({acceptLicense: true, acceptGdpr: true}).then(output => {\n    msg.payload = output;\n//    clearTimeout(myTimeout);\n    node.send(msg);\n    node.done();\n    }).catch(err => {\n    // An error has been returned by the Promise.\n    // Do something with it...\n    msg.error = {name: err.name, \n            message:err.message};\n    node.error(\"Error in try\",msg);\n    node.done();\n});\n  } catch (err) {\n    node.error(\"Error in async\",{error: {name: err.name,  message:err.message}});\n  } \n})();\n",
            "outputs": 1,
            "noerr": 0,
            "initialize": "",
            "finalize": "",
            "libs": [
                {
                    "var": "speedTest",
                    "module": "speedtest-net"
                }
            ],
            "x": 320,
            "y": 3720,
            "wires": [
                [
                    "c05dc2ab8d6c3bf2"
                ]
            ]
        },
        {
            "id": "96b2931dd2362824",
            "type": "inject",
            "z": "2140b385.78fb7c",
            "name": "",
            "props": [
                {
                    "p": "payload"
                }
            ],
            "repeat": "",
            "crontab": "",
            "once": false,
            "onceDelay": 0.1,
            "topic": "",
            "payload": "true",
            "payloadType": "bool",
            "x": 170,
            "y": 3720,
            "wires": [
                [
                    "ca0931a9b59c5c60"
                ]
            ]
        },
        {
            "id": "c05dc2ab8d6c3bf2",
            "type": "change",
            "z": "2140b385.78fb7c",
            "name": "",
            "rules": [
                {
                    "t": "set",
                    "p": "payload.timestamp",
                    "pt": "msg",
                    "to": "$moment(payload.timestamp).format('DD.MM.YYYY HH:mm:ss')\t",
                    "tot": "jsonata"
                }
            ],
            "action": "",
            "property": "",
            "from": "",
            "to": "",
            "reg": false,
            "x": 550,
            "y": 3720,
            "wires": [
                [
                    "fcf68520386d279a"
                ]
            ]
        },
        {
            "id": "fcf68520386d279a",
            "type": "subflow:6e802f1553b18149",
            "z": "2140b385.78fb7c",
            "name": "",
            "env": [
                {
                    "name": "top",
                    "value": "speedTest",
                    "type": "str"
                }
            ],
            "x": 830,
            "y": 3720,
            "wires": [
                [
                    "5df05b2321564d35"
                ]
            ]
        },
        {
            "id": "5df05b2321564d35",
            "type": "ioBroker out",
            "z": "2140b385.78fb7c",
            "name": "",
            "topic": "",
            "ack": "true",
            "autoCreate": "true",
            "stateName": "",
            "role": "",
            "payloadType": "",
            "readonly": "true",
            "stateUnit": "",
            "stateMin": "",
            "stateMax": "",
            "x": 1060,
            "y": 3720,
            "wires": []
        },
        {
            "id": "194a0d9b8bff3a64",
            "type": "catch",
            "z": "2140b385.78fb7c",
            "name": "",
            "scope": [
                "ca0931a9b59c5c60"
            ],
            "uncaught": false,
            "x": 270,
            "y": 3800,
            "wires": [
                [
                    "5f88c6f34f800ee0"
                ]
            ]
        },
        {
            "id": "5f88c6f34f800ee0",
            "type": "debug",
            "z": "2140b385.78fb7c",
            "name": "",
            "active": true,
            "tosidebar": true,
            "console": false,
            "tostatus": false,
            "complete": "true",
            "targetType": "full",
            "statusVal": "",
            "statusType": "auto",
            "x": 430,
            "y": 3800,
            "wires": []
        }
    ]
    

    Achso und wer den ganzen Datenschutzeinstellungen nicht zustimmt, der muss bitte in der Funktion Node die Parameter auf false setzen (Zeile 5):

    {acceptLicense: true, acceptGdpr: true}
    

    Fehler - also bei nicht akzeptieren Datenschutz oder Lizenzbestimmungen werden dann über die Catch Node abgefangen und ausgegeben. Wer quasi aber schon mal zugestimmt hat, dann wird das anscheinend gecacht.

    Achso für alle die nicht so bewandert mit den Möglichkeiten sind:

    1. In der Inject Node kann man ein Wiederholungsintervall definieren, um den Speedtest zyklisch auszuführen.
      6f94c784-e24a-41c9-9dff-5f9e3c98fe64-image.png

    oder man

    1. erstellt einen weiteren Datenpunkt und hängt vorne noch eine iobrokerIN Node dran. Dann kann man über seine VIS oder was auch immer für eine Visualisierung den Speedtest bei Bedarf trigggern.

    Viel Spaß damit. :grin:

    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

    Kalle BlomquistK 1 Antwort Letzte Antwort
    7
    • mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      So nachdem mir die Werte der Bandbreite etwas suspekt waren, habe ich festgestellt, dass die in BPS (also Bytes pro Sekunde) ausgewiesen sind und nicht in Mbit/s - deshalb habe ich es mit diesen beiden Nodes hier noch korrigiert und auf 2 Nachkommastellen gerundet, wer das einfügen will:

      0d630a74-bee3-4010-871b-6ae28e48d1bf-image.png

      Die Change Node rechnet die BPS nicht nur in MBit/s um, sondern setzt dann auch die Unit im Datenpunkt des iobrokers.

      d38bfc48-cbd5-4623-b2e1-d7d4d6d4522b-image.png

      Da das aber nur einmal gemacht wird, muss man ggf. den Datenpunkt nochmal löschen, da er sonst nicht neu definiert wird.

      [{"id":"7a6713744a29181f","type":"switch","z":"2140b385.78fb7c","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"bandwidth","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1030,"y":3720,"wires":[["145dfd1e0726d8c8"],["5df05b2321564d35"]]},{"id":"145dfd1e0726d8c8","type":"change","z":"2140b385.78fb7c","name":"bandwidth BPS in Mbit/s","rules":[{"t":"set","p":"payload","pt":"msg","to":"$round(payload/125000, 2)\t","tot":"jsonata"},{"t":"set","p":"stateUnit","pt":"msg","to":"Mbit/s","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1230,"y":3700,"wires":[["5df05b2321564d35"]]}]
      

      def53275-667b-4153-8b52-7452667df5ce-image.png

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      F B L 3 Antworten Letzte Antwort
      4
      • mickymM mickym

        So nachdem mir die Werte der Bandbreite etwas suspekt waren, habe ich festgestellt, dass die in BPS (also Bytes pro Sekunde) ausgewiesen sind und nicht in Mbit/s - deshalb habe ich es mit diesen beiden Nodes hier noch korrigiert und auf 2 Nachkommastellen gerundet, wer das einfügen will:

        0d630a74-bee3-4010-871b-6ae28e48d1bf-image.png

        Die Change Node rechnet die BPS nicht nur in MBit/s um, sondern setzt dann auch die Unit im Datenpunkt des iobrokers.

        d38bfc48-cbd5-4623-b2e1-d7d4d6d4522b-image.png

        Da das aber nur einmal gemacht wird, muss man ggf. den Datenpunkt nochmal löschen, da er sonst nicht neu definiert wird.

        [{"id":"7a6713744a29181f","type":"switch","z":"2140b385.78fb7c","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"bandwidth","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1030,"y":3720,"wires":[["145dfd1e0726d8c8"],["5df05b2321564d35"]]},{"id":"145dfd1e0726d8c8","type":"change","z":"2140b385.78fb7c","name":"bandwidth BPS in Mbit/s","rules":[{"t":"set","p":"payload","pt":"msg","to":"$round(payload/125000, 2)\t","tot":"jsonata"},{"t":"set","p":"stateUnit","pt":"msg","to":"Mbit/s","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1230,"y":3700,"wires":[["5df05b2321564d35"]]}]
        

        def53275-667b-4153-8b52-7452667df5ce-image.png

        F Offline
        F Offline
        frankyboy73
        schrieb am zuletzt editiert von
        #3

        @mickym Hi, nach dem umsteig von Node.js 14 auf Version 16.16.0 und NPM 8.11.0 bekomme ich jetzt Fehlermeldungen. Ich war vorher von Buster auf Bullseye umgestiegen, da lief es aber noch.

        
        
        node-red.0
        2022-07-13 17:26:39.959	error	13 Jul 17:26:39 - [error] [function:Speedtest] Function node failed to load external modules
        
        node-red.0
        2022-07-13 17:26:39.937	error	13 Jul 17:26:39 - [error] [function:Speedtest] Failed to load module : Error: Cannot find module '/opt/iobroker/iobroker-data/node-red/node_modules/lzma-native/binding-v4.0.6-node-v93-linux-arm/lzma_native.node'Require stack:- /opt/iobroker/iobroker-data/node-red/node_modules/lzma-native/index.js- /opt/iobroker/iobroker-data/node-red/node_modules/decompress-tarxz/index.js- /opt/iobroker/iobroker-data/node-red/node_modules/speedtest-net/index.js
        

        Schöne Grüße Frank

        mickymM 1 Antwort Letzte Antwort
        0
        • F frankyboy73

          @mickym Hi, nach dem umsteig von Node.js 14 auf Version 16.16.0 und NPM 8.11.0 bekomme ich jetzt Fehlermeldungen. Ich war vorher von Buster auf Bullseye umgestiegen, da lief es aber noch.

          
          
          node-red.0
          2022-07-13 17:26:39.959	error	13 Jul 17:26:39 - [error] [function:Speedtest] Function node failed to load external modules
          
          node-red.0
          2022-07-13 17:26:39.937	error	13 Jul 17:26:39 - [error] [function:Speedtest] Failed to load module : Error: Cannot find module '/opt/iobroker/iobroker-data/node-red/node_modules/lzma-native/binding-v4.0.6-node-v93-linux-arm/lzma_native.node'Require stack:- /opt/iobroker/iobroker-data/node-red/node_modules/lzma-native/index.js- /opt/iobroker/iobroker-data/node-red/node_modules/decompress-tarxz/index.js- /opt/iobroker/iobroker-data/node-red/node_modules/speedtest-net/index.js
          
          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #4

          @frankyboy73 Ja ich weiss. Ich habe das Modul nochmal gelöscht und dann in der neuen nodejs Umgebung nochmals neu installieren lassen und dann war alles wieder gut.

          Also in das Verzeichnis: /opt/iobroker/iobroker-data/node-red wechseln und

          dann mit

          cd  /opt/iobroker/iobroker-data/node-red  
          npm remove speedtest-net
          

          entfernen.

          Anschließend den NodeRed Adapter neu starten, dann sollte sich das Modul in der neuen NodeJS Umgebung neu installieren und funktioniert wieder. Ca. 5 Minuten Zeit geben, bis der Adapter das Modul wieder neu installiert hat - so wie halt auch bei der Erstinstallation.

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          F 1 Antwort Letzte Antwort
          1
          • mickymM mickym

            @frankyboy73 Ja ich weiss. Ich habe das Modul nochmal gelöscht und dann in der neuen nodejs Umgebung nochmals neu installieren lassen und dann war alles wieder gut.

            Also in das Verzeichnis: /opt/iobroker/iobroker-data/node-red wechseln und

            dann mit

            cd  /opt/iobroker/iobroker-data/node-red  
            npm remove speedtest-net
            

            entfernen.

            Anschließend den NodeRed Adapter neu starten, dann sollte sich das Modul in der neuen NodeJS Umgebung neu installieren und funktioniert wieder. Ca. 5 Minuten Zeit geben, bis der Adapter das Modul wieder neu installiert hat - so wie halt auch bei der Erstinstallation.

            F Offline
            F Offline
            frankyboy73
            schrieb am zuletzt editiert von
            #5

            @mickym Supi, Danke, funktioniert wieder.

            Schöne Grüße Frank

            1 Antwort Letzte Antwort
            0
            • mickymM mickym

              Da ich keinen vernünftigen Adapter im stable gefunden habe und ich ja auch bereits in einem eigenen Thread gezeigt habe, wie einfach es mit NodeRed in der jetzigen Version ist, externe NodeJS Module zu nutzen, habe ich einen super simplen Flow erstellt, der einen Speedtest durchführt und alles in Datenpunkte schreibt. (Also als Adapterersatz quasi quick & dirty)

              Da die Node in NodeRed auch schon in die Jahre gekommen ist, habe ich es über die automatische Installation einfach gehabt.

              Ich habe aber bewußt nichts konfiguriert, man muss also mit dem Ergebnis so leben, wie es ist. ;) Das Tool bzw. die Bibliothek mit der der Speedtest arbeitet ist diese: https://github.com/ddsol/speedtest.net#readme

              Hier mal das Ergebnis - etwaige Umrechnungen müsst ihr selbst vornehmen:

              10740c03-1f22-4516-9384-72a54881e793-image.png

              Der Flow ist super simple und nutzt natürlich meinen Subflow zur automatischen Erstellung von Datenpunkten aus komplexen Datenstrukturen:

              357106df-6aca-46c6-86d3-276d7d00eab6-image.png

              Wenn ihr den Flow importiert müsst ihr ein paar Minuten warten, bis NodeRed im Hintergrund die Bibliothek installiert hat.

              Wer ungeduldig ist bekommt den Fehler: Node ist nicht vorhanden. Also so ca. 5 Minuten warten bevor ihr den Flow triggert.
              66c14325-7d60-4257-9405-08253828f154-image.png

              Und natürlich wieder die Erstellung von Fremdobjekten im NodeRed Adapter zulassen:

              [
                  {
                      "id": "6e802f1553b18149",
                      "type": "subflow",
                      "name": "JSON or Obj to IOBroker",
                      "info": "# Creates an IOBroker tree\n\nThis node creates an IOBroker tree out of an Java-Object or JSON String.\n\nThe object tree will be created under 0_userdata.0\nIn addition to the JSON-String or Java Object as `msg.payload` it is necessary to specify a `msg.top` properity in addition to the msg-Object.\n\nThe object tree will be created under 0_userdata.0\n\nExisting `msg.topic` entries will be deleted.\nAn iobroker-out node has to be appended to this subflow node. It is not part of the subflow itself. No topic should be specified in the iobroker out node.\n\nIs `msg.top` property isn't defined, the top-value of the node (environment variable top) is used. \n\n**Attention:**\nIf msg.top and top is empty, all msg.topics (msg.topic) will be directly prefixed with 0_userdata.0. . \n\n# Erstellt einen Objektbaum im ioBroker\n\nDiese Node erstellt einen Objektbaum im ioBroker aus einem JAVA Objekt bzw. einem JSON String. \n\nDer Baum wird in jedem Fall unter 0_userdata.0 erstellt und zwar unter dem Topic der in` msg.top` mitgegeben wurde. In der `msg.payload` befindet sich dann der JSON String oder das entsprechende Objekt.\n\nExistierende `msg.topic `Einträge werden gelöscht.\nEin entsprechende iobroker-out Node muss an den Flow angehängt werden. Sie ist nicht Bestandteil des Subflows. In dieser iobroker-out Node darf kein Topic angegeben werden. \n\nFalls msg.top nicht definiert wurde, wird der top-Wert (Umgebungsvariable top) der Node verwendet. <br>\n\n**Achtung:**\nWenn top und msg.top leer ist, werden alle msg.topics (msg.topic) direkt unter dem Präfix 0_userdata.0., angelegt bzw. ausgegeben. ",
                      "category": "",
                      "in": [
                          {
                              "x": 60,
                              "y": 160,
                              "wires": [
                                  {
                                      "id": "e023fe88445ce43e"
                                  }
                              ]
                          }
                      ],
                      "out": [
                          {
                              "x": 2120,
                              "y": 280,
                              "wires": [
                                  {
                                      "id": "f5d52c6a57d08904",
                                      "port": 0
                                  },
                                  {
                                      "id": "74c895ce724750de",
                                      "port": 0
                                  }
                              ]
                          }
                      ],
                      "env": [
                          {
                              "name": "top",
                              "type": "str",
                              "value": "objRoot"
                          }
                      ],
                      "meta": {},
                      "color": "#E2D96E",
                      "icon": "node-red/batch.svg"
                  },
                  {
                      "id": "3e11e8338f694832",
                      "type": "split",
                      "z": "6e802f1553b18149",
                      "name": "split object",
                      "splt": "\\n",
                      "spltType": "str",
                      "arraySplt": 1,
                      "arraySpltType": "len",
                      "stream": false,
                      "addname": "key",
                      "x": 1170,
                      "y": 160,
                      "wires": [
                          [
                              "0562a4249c8b856b"
                          ]
                      ]
                  },
                  {
                      "id": "0562a4249c8b856b",
                      "type": "change",
                      "z": "6e802f1553b18149",
                      "name": "add key to topic",
                      "rules": [
                          {
                              "t": "set",
                              "p": "stateName",
                              "pt": "msg",
                              "to": "key",
                              "tot": "msg"
                          },
                          {
                              "t": "set",
                              "p": "topic",
                              "pt": "msg",
                              "to": "topic  & '.' & key",
                              "tot": "jsonata"
                          },
                          {
                              "t": "change",
                              "p": "topic",
                              "pt": "msg",
                              "from": " ",
                              "fromt": "str",
                              "to": "_",
                              "tot": "str"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 1360,
                      "y": 160,
                      "wires": [
                          [
                              "ddc90985bef0fafa"
                          ]
                      ]
                  },
                  {
                      "id": "ddc90985bef0fafa",
                      "type": "switch",
                      "z": "6e802f1553b18149",
                      "name": "is type?",
                      "property": "payload",
                      "propertyType": "msg",
                      "rules": [
                          {
                              "t": "istype",
                              "v": "array",
                              "vt": "array"
                          },
                          {
                              "t": "istype",
                              "v": "object",
                              "vt": "object"
                          },
                          {
                              "t": "else"
                          }
                      ],
                      "checkall": "true",
                      "repair": false,
                      "outputs": 3,
                      "x": 1540,
                      "y": 160,
                      "wires": [
                          [
                              "bfce19b206660fbe"
                          ],
                          [
                              "3e11e8338f694832"
                          ],
                          [
                              "1a8c03d866b85b12"
                          ]
                      ]
                  },
                  {
                      "id": "bfce19b206660fbe",
                      "type": "split",
                      "z": "6e802f1553b18149",
                      "name": "split array",
                      "splt": "\\n",
                      "spltType": "str",
                      "arraySplt": 1,
                      "arraySpltType": "len",
                      "stream": false,
                      "addname": "",
                      "x": 580,
                      "y": 280,
                      "wires": [
                          [
                              "e89927810c6d75ec"
                          ]
                      ]
                  },
                  {
                      "id": "e89927810c6d75ec",
                      "type": "change",
                      "z": "6e802f1553b18149",
                      "name": "add index to topic",
                      "rules": [
                          {
                              "t": "set",
                              "p": "topic",
                              "pt": "msg",
                              "to": "topic  & '.' & parts.index",
                              "tot": "jsonata"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 770,
                      "y": 280,
                      "wires": [
                          [
                              "a4d1a5d04564dc77"
                          ]
                      ]
                  },
                  {
                      "id": "f5d52c6a57d08904",
                      "type": "change",
                      "z": "6e802f1553b18149",
                      "name": "finalize msg.topic",
                      "rules": [
                          {
                              "t": "set",
                              "p": "top",
                              "pt": "msg",
                              "to": "'0_userdata.0.' & top",
                              "tot": "jsonata"
                          },
                          {
                              "t": "set",
                              "p": "topic",
                              "pt": "msg",
                              "to": "top & topic",
                              "tot": "jsonata"
                          },
                          {
                              "t": "change",
                              "p": "topic",
                              "pt": "msg",
                              "from": "..",
                              "fromt": "str",
                              "to": ".",
                              "tot": "str"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 1970,
                      "y": 240,
                      "wires": [
                          []
                      ]
                  },
                  {
                      "id": "c863dd7d651b2272",
                      "type": "switch",
                      "z": "6e802f1553b18149",
                      "name": "is type?",
                      "property": "payload",
                      "propertyType": "msg",
                      "rules": [
                          {
                              "t": "istype",
                              "v": "json",
                              "vt": "json"
                          },
                          {
                              "t": "istype",
                              "v": "object",
                              "vt": "object"
                          },
                          {
                              "t": "istype",
                              "v": "array",
                              "vt": "array"
                          },
                          {
                              "t": "else"
                          }
                      ],
                      "checkall": "true",
                      "repair": false,
                      "outputs": 4,
                      "x": 400,
                      "y": 160,
                      "wires": [
                          [
                              "158930afddd0780b"
                          ],
                          [
                              "3e11e8338f694832"
                          ],
                          [
                              "bfce19b206660fbe"
                          ],
                          [
                              "a4d1a5d04564dc77"
                          ]
                      ]
                  },
                  {
                      "id": "158930afddd0780b",
                      "type": "json",
                      "z": "6e802f1553b18149",
                      "name": "",
                      "property": "payload",
                      "action": "",
                      "pretty": false,
                      "x": 570,
                      "y": 120,
                      "wires": [
                          [
                              "3649300b4c233b10"
                          ]
                      ]
                  },
                  {
                      "id": "1a8c03d866b85b12",
                      "type": "switch",
                      "z": "6e802f1553b18149",
                      "name": "is msg.top != null",
                      "property": "top",
                      "propertyType": "msg",
                      "rules": [
                          {
                              "t": "nnull"
                          },
                          {
                              "t": "null"
                          }
                      ],
                      "checkall": "true",
                      "repair": false,
                      "outputs": 2,
                      "x": 1750,
                      "y": 280,
                      "wires": [
                          [
                              "f5d52c6a57d08904"
                          ],
                          [
                              "74c895ce724750de"
                          ]
                      ]
                  },
                  {
                      "id": "e023fe88445ce43e",
                      "type": "change",
                      "z": "6e802f1553b18149",
                      "name": "",
                      "rules": [
                          {
                              "t": "delete",
                              "p": "topic",
                              "pt": "msg"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 210,
                      "y": 160,
                      "wires": [
                          [
                              "c863dd7d651b2272"
                          ]
                      ]
                  },
                  {
                      "id": "3649300b4c233b10",
                      "type": "switch",
                      "z": "6e802f1553b18149",
                      "name": "is array?",
                      "property": "payload",
                      "propertyType": "msg",
                      "rules": [
                          {
                              "t": "istype",
                              "v": "array",
                              "vt": "array"
                          },
                          {
                              "t": "else"
                          }
                      ],
                      "checkall": "true",
                      "repair": false,
                      "outputs": 2,
                      "x": 700,
                      "y": 120,
                      "wires": [
                          [
                              "bfce19b206660fbe"
                          ],
                          [
                              "3e11e8338f694832"
                          ]
                      ]
                  },
                  {
                      "id": "1b8480cd2df7ba3f",
                      "type": "comment",
                      "z": "6e802f1553b18149",
                      "name": "Array",
                      "info": "",
                      "x": 400,
                      "y": 280,
                      "wires": []
                  },
                  {
                      "id": "b3541807672be040",
                      "type": "comment",
                      "z": "6e802f1553b18149",
                      "name": "object",
                      "info": "",
                      "x": 1140,
                      "y": 100,
                      "wires": []
                  },
                  {
                      "id": "a4d1a5d04564dc77",
                      "type": "switch",
                      "z": "6e802f1553b18149",
                      "name": "is type?",
                      "property": "payload",
                      "propertyType": "msg",
                      "rules": [
                          {
                              "t": "istype",
                              "v": "object",
                              "vt": "object"
                          },
                          {
                              "t": "istype",
                              "v": "array",
                              "vt": "array"
                          },
                          {
                              "t": "else"
                          }
                      ],
                      "checkall": "true",
                      "repair": false,
                      "outputs": 3,
                      "x": 960,
                      "y": 280,
                      "wires": [
                          [
                              "3e11e8338f694832"
                          ],
                          [
                              "bfce19b206660fbe"
                          ],
                          [
                              "1a8c03d866b85b12"
                          ]
                      ]
                  },
                  {
                      "id": "74c895ce724750de",
                      "type": "change",
                      "z": "6e802f1553b18149",
                      "name": "finalize msg.topic",
                      "rules": [
                          {
                              "t": "set",
                              "p": "top",
                              "pt": "msg",
                              "to": "top",
                              "tot": "env"
                          },
                          {
                              "t": "set",
                              "p": "top",
                              "pt": "msg",
                              "to": "'0_userdata.0.' & top",
                              "tot": "jsonata"
                          },
                          {
                              "t": "set",
                              "p": "topic",
                              "pt": "msg",
                              "to": "top & topic",
                              "tot": "jsonata"
                          },
                          {
                              "t": "change",
                              "p": "topic",
                              "pt": "msg",
                              "from": "..",
                              "fromt": "str",
                              "to": ".",
                              "tot": "str"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 1970,
                      "y": 320,
                      "wires": [
                          []
                      ]
                  },
                  {
                      "id": "c9b74b75fb88fae5",
                      "type": "comment",
                      "z": "2140b385.78fb7c",
                      "name": "Speedtest Internet",
                      "info": "",
                      "x": 190,
                      "y": 3600,
                      "wires": []
                  },
                  {
                      "id": "ca0931a9b59c5c60",
                      "type": "function",
                      "z": "2140b385.78fb7c",
                      "name": "Speedtest",
                      "func": "msg = {};\n\n(async () => {\n  try {\n    await speedTest({acceptLicense: true, acceptGdpr: true}).then(output => {\n    msg.payload = output;\n//    clearTimeout(myTimeout);\n    node.send(msg);\n    node.done();\n    }).catch(err => {\n    // An error has been returned by the Promise.\n    // Do something with it...\n    msg.error = {name: err.name, \n            message:err.message};\n    node.error(\"Error in try\",msg);\n    node.done();\n});\n  } catch (err) {\n    node.error(\"Error in async\",{error: {name: err.name,  message:err.message}});\n  } \n})();\n",
                      "outputs": 1,
                      "noerr": 0,
                      "initialize": "",
                      "finalize": "",
                      "libs": [
                          {
                              "var": "speedTest",
                              "module": "speedtest-net"
                          }
                      ],
                      "x": 320,
                      "y": 3720,
                      "wires": [
                          [
                              "c05dc2ab8d6c3bf2"
                          ]
                      ]
                  },
                  {
                      "id": "96b2931dd2362824",
                      "type": "inject",
                      "z": "2140b385.78fb7c",
                      "name": "",
                      "props": [
                          {
                              "p": "payload"
                          }
                      ],
                      "repeat": "",
                      "crontab": "",
                      "once": false,
                      "onceDelay": 0.1,
                      "topic": "",
                      "payload": "true",
                      "payloadType": "bool",
                      "x": 170,
                      "y": 3720,
                      "wires": [
                          [
                              "ca0931a9b59c5c60"
                          ]
                      ]
                  },
                  {
                      "id": "c05dc2ab8d6c3bf2",
                      "type": "change",
                      "z": "2140b385.78fb7c",
                      "name": "",
                      "rules": [
                          {
                              "t": "set",
                              "p": "payload.timestamp",
                              "pt": "msg",
                              "to": "$moment(payload.timestamp).format('DD.MM.YYYY HH:mm:ss')\t",
                              "tot": "jsonata"
                          }
                      ],
                      "action": "",
                      "property": "",
                      "from": "",
                      "to": "",
                      "reg": false,
                      "x": 550,
                      "y": 3720,
                      "wires": [
                          [
                              "fcf68520386d279a"
                          ]
                      ]
                  },
                  {
                      "id": "fcf68520386d279a",
                      "type": "subflow:6e802f1553b18149",
                      "z": "2140b385.78fb7c",
                      "name": "",
                      "env": [
                          {
                              "name": "top",
                              "value": "speedTest",
                              "type": "str"
                          }
                      ],
                      "x": 830,
                      "y": 3720,
                      "wires": [
                          [
                              "5df05b2321564d35"
                          ]
                      ]
                  },
                  {
                      "id": "5df05b2321564d35",
                      "type": "ioBroker out",
                      "z": "2140b385.78fb7c",
                      "name": "",
                      "topic": "",
                      "ack": "true",
                      "autoCreate": "true",
                      "stateName": "",
                      "role": "",
                      "payloadType": "",
                      "readonly": "true",
                      "stateUnit": "",
                      "stateMin": "",
                      "stateMax": "",
                      "x": 1060,
                      "y": 3720,
                      "wires": []
                  },
                  {
                      "id": "194a0d9b8bff3a64",
                      "type": "catch",
                      "z": "2140b385.78fb7c",
                      "name": "",
                      "scope": [
                          "ca0931a9b59c5c60"
                      ],
                      "uncaught": false,
                      "x": 270,
                      "y": 3800,
                      "wires": [
                          [
                              "5f88c6f34f800ee0"
                          ]
                      ]
                  },
                  {
                      "id": "5f88c6f34f800ee0",
                      "type": "debug",
                      "z": "2140b385.78fb7c",
                      "name": "",
                      "active": true,
                      "tosidebar": true,
                      "console": false,
                      "tostatus": false,
                      "complete": "true",
                      "targetType": "full",
                      "statusVal": "",
                      "statusType": "auto",
                      "x": 430,
                      "y": 3800,
                      "wires": []
                  }
              ]
              

              Achso und wer den ganzen Datenschutzeinstellungen nicht zustimmt, der muss bitte in der Funktion Node die Parameter auf false setzen (Zeile 5):

              {acceptLicense: true, acceptGdpr: true}
              

              Fehler - also bei nicht akzeptieren Datenschutz oder Lizenzbestimmungen werden dann über die Catch Node abgefangen und ausgegeben. Wer quasi aber schon mal zugestimmt hat, dann wird das anscheinend gecacht.

              Achso für alle die nicht so bewandert mit den Möglichkeiten sind:

              1. In der Inject Node kann man ein Wiederholungsintervall definieren, um den Speedtest zyklisch auszuführen.
                6f94c784-e24a-41c9-9dff-5f9e3c98fe64-image.png

              oder man

              1. erstellt einen weiteren Datenpunkt und hängt vorne noch eine iobrokerIN Node dran. Dann kann man über seine VIS oder was auch immer für eine Visualisierung den Speedtest bei Bedarf trigggern.

              Viel Spaß damit. :grin:

              Kalle BlomquistK Offline
              Kalle BlomquistK Offline
              Kalle Blomquist
              schrieb am zuletzt editiert von
              #6

              Moin @mickym, habe deinen Flow erfolgreich umgesetzt. Intervall auf 30 Minuten sollte reichen. Läuft super, dafür ein herzliches Danke!
              Frage: Hast du eine Idee, wie man einen Ping Test realisiert. Mir fehlen dazu leider die NodeRed Kenntnisse.
              Gruß Kalle

              mickymM 1 Antwort Letzte Antwort
              0
              • Kalle BlomquistK Kalle Blomquist

                Moin @mickym, habe deinen Flow erfolgreich umgesetzt. Intervall auf 30 Minuten sollte reichen. Läuft super, dafür ein herzliches Danke!
                Frage: Hast du eine Idee, wie man einen Ping Test realisiert. Mir fehlen dazu leider die NodeRed Kenntnisse.
                Gruß Kalle

                mickymM Online
                mickymM Online
                mickym
                Most Active
                schrieb am zuletzt editiert von mickym
                #7

                @kalle-blomquist dafür gibts eine eigene Node ;)

                node-red-node-ping - also einfach im Palettenmanager installieren - die funktioniert besser als der iob Adapter - der hatte bei mir immer Namensauflösungsprobleme.

                4c0e08a0-53e2-4995-9627-cd48d0d73392-image.png

                https://flows.nodered.org/node/node-red-node-ping

                Die Ping Node kann man sowohl triggern, um bevor man ein Kommando absetzt sieht ob die Adresse erreichbar ist oder halt zeitgesteuert laufen lassen.

                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                Kalle BlomquistK 1 Antwort Letzte Antwort
                2
                • mickymM mickym

                  @kalle-blomquist dafür gibts eine eigene Node ;)

                  node-red-node-ping - also einfach im Palettenmanager installieren - die funktioniert besser als der iob Adapter - der hatte bei mir immer Namensauflösungsprobleme.

                  4c0e08a0-53e2-4995-9627-cd48d0d73392-image.png

                  https://flows.nodered.org/node/node-red-node-ping

                  Die Ping Node kann man sowohl triggern, um bevor man ein Kommando absetzt sieht ob die Adresse erreichbar ist oder halt zeitgesteuert laufen lassen.

                  Kalle BlomquistK Offline
                  Kalle BlomquistK Offline
                  Kalle Blomquist
                  schrieb am zuletzt editiert von Kalle Blomquist
                  #8

                  @mickym Danke, das war einfach.
                  Habe mich bei der Bewertung verklickt - hoffe das ist kein Problem, Sorry

                  1 Antwort Letzte Antwort
                  1
                  • mickymM mickym

                    So nachdem mir die Werte der Bandbreite etwas suspekt waren, habe ich festgestellt, dass die in BPS (also Bytes pro Sekunde) ausgewiesen sind und nicht in Mbit/s - deshalb habe ich es mit diesen beiden Nodes hier noch korrigiert und auf 2 Nachkommastellen gerundet, wer das einfügen will:

                    0d630a74-bee3-4010-871b-6ae28e48d1bf-image.png

                    Die Change Node rechnet die BPS nicht nur in MBit/s um, sondern setzt dann auch die Unit im Datenpunkt des iobrokers.

                    d38bfc48-cbd5-4623-b2e1-d7d4d6d4522b-image.png

                    Da das aber nur einmal gemacht wird, muss man ggf. den Datenpunkt nochmal löschen, da er sonst nicht neu definiert wird.

                    [{"id":"7a6713744a29181f","type":"switch","z":"2140b385.78fb7c","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"bandwidth","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1030,"y":3720,"wires":[["145dfd1e0726d8c8"],["5df05b2321564d35"]]},{"id":"145dfd1e0726d8c8","type":"change","z":"2140b385.78fb7c","name":"bandwidth BPS in Mbit/s","rules":[{"t":"set","p":"payload","pt":"msg","to":"$round(payload/125000, 2)\t","tot":"jsonata"},{"t":"set","p":"stateUnit","pt":"msg","to":"Mbit/s","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1230,"y":3700,"wires":[["5df05b2321564d35"]]}]
                    

                    def53275-667b-4153-8b52-7452667df5ce-image.png

                    B Offline
                    B Offline
                    BA2000
                    schrieb am zuletzt editiert von BA2000
                    #9

                    @mickym sorry für wohl blöde Frage. Aber muss ich in deiner Erweiterung "bandwidth BPS in Mbit/s" noch Regeln oder sonstwas eingeben. Habe bisher nichts mit NodeRed gemacht.
                    Gruß BA2000

                    Hat sich erledigt. Habe jetzt verstanden, dass ich den Code im Spoiler in NodeRed importieren muss. Danke.

                    Danke, jetzt klappt es. Werde jetzt gleich mal meine Vis entsprechend umbauen. :-)

                    1 Antwort Letzte Antwort
                    0
                    • mickymM mickym

                      So nachdem mir die Werte der Bandbreite etwas suspekt waren, habe ich festgestellt, dass die in BPS (also Bytes pro Sekunde) ausgewiesen sind und nicht in Mbit/s - deshalb habe ich es mit diesen beiden Nodes hier noch korrigiert und auf 2 Nachkommastellen gerundet, wer das einfügen will:

                      0d630a74-bee3-4010-871b-6ae28e48d1bf-image.png

                      Die Change Node rechnet die BPS nicht nur in MBit/s um, sondern setzt dann auch die Unit im Datenpunkt des iobrokers.

                      d38bfc48-cbd5-4623-b2e1-d7d4d6d4522b-image.png

                      Da das aber nur einmal gemacht wird, muss man ggf. den Datenpunkt nochmal löschen, da er sonst nicht neu definiert wird.

                      [{"id":"7a6713744a29181f","type":"switch","z":"2140b385.78fb7c","name":"","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"bandwidth","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1030,"y":3720,"wires":[["145dfd1e0726d8c8"],["5df05b2321564d35"]]},{"id":"145dfd1e0726d8c8","type":"change","z":"2140b385.78fb7c","name":"bandwidth BPS in Mbit/s","rules":[{"t":"set","p":"payload","pt":"msg","to":"$round(payload/125000, 2)\t","tot":"jsonata"},{"t":"set","p":"stateUnit","pt":"msg","to":"Mbit/s","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1230,"y":3700,"wires":[["5df05b2321564d35"]]}]
                      

                      def53275-667b-4153-8b52-7452667df5ce-image.png

                      L Offline
                      L Offline
                      linux150
                      schrieb am zuletzt editiert von
                      #10

                      @mickym Vielen Dank, genau das was ich gesucht habe!!

                      LG
                      Martin

                      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

                      639

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      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