Skip to content
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
Logo
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Visualisierung mit Node Red erstellen

NEWS

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

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

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

Visualisierung mit Node Red erstellen

Visualisierung mit Node Red erstellen

Scheduled Pinned Locked Moved Visualisierung
4.8k Posts 4 Posters 2.5m Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mickymM mickym

    @damrak2022 Nein Du sollst den Wert aus dem Debug-Fenster kopieren, der aus der Debug Node rauskommt - aber ganz oben, wie man das sauber macht mit "Wert kopieren".

    copy path.gif

    Ich hab das Gefühl - wir fangen wieder bei NULL an.

    Damrak2022D Offline
    Damrak2022D Offline
    Damrak2022
    wrote on last edited by
    #3137

    @mickym

    {"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:50:55.302Z","_value":84,"_field":"value","_measurement":"Diastole"}
    

    Sorry, stehe gerade völlig auf dem Schlauch.

    Mit besten Grüßen
    Andy

    mickymM 1 Reply Last reply
    0
    • Damrak2022D Damrak2022

      @mickym

      {"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:50:55.302Z","_value":84,"_field":"value","_measurement":"Diastole"}
      

      Sorry, stehe gerade völlig auf dem Schlauch.

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      wrote on last edited by
      #3138

      @damrak2022 Das ist doch nur ein Objekt - aber schon besser.

      72cbbd8d-748b-419f-b41f-7b9020fccaff-image.png

      Du kannst doch mit der Maus ganz oben den Wert kopieren, sodass das ganze Array enthalten ist.

      aec60912-f6e8-4344-8602-6f8d85945df6-image.png

      Also direkt mit der Maus in die Zeile wo array[12] stehen und den Wert kopieren. Ich dachte eigentlich, dass Du das weißt, wie man in dem Debug Fenster Pfade und Werte kopierst.

      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.

      Damrak2022D 1 Reply Last reply
      0
      • mickymM mickym

        @damrak2022 Das ist doch nur ein Objekt - aber schon besser.

        72cbbd8d-748b-419f-b41f-7b9020fccaff-image.png

        Du kannst doch mit der Maus ganz oben den Wert kopieren, sodass das ganze Array enthalten ist.

        aec60912-f6e8-4344-8602-6f8d85945df6-image.png

        Also direkt mit der Maus in die Zeile wo array[12] stehen und den Wert kopieren. Ich dachte eigentlich, dass Du das weißt, wie man in dem Debug Fenster Pfade und Werte kopierst.

        Damrak2022D Offline
        Damrak2022D Offline
        Damrak2022
        wrote on last edited by
        #3139

        @mickym

        [{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:50:55.302Z","_value":84,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.39Z","_value":78,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.438Z","_value":78,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.52Z","_value":71,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:51:28.093Z","_value":114,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.392Z","_value":106,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.442Z","_value":106,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.521Z","_value":85,"_field":"value","_measurement":"Puls"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:50:25.342Z","_value":127,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.39Z","_value":114,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.439Z","_value":114,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.521Z","_value":107,"_field":"value","_measurement":"Systole"}]
        

        Mit besten Grüßen
        Andy

        mickymM 2 Replies Last reply
        0
        • Damrak2022D Damrak2022

          @mickym

          [{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:50:55.302Z","_value":84,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.39Z","_value":78,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.438Z","_value":78,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.52Z","_value":71,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:51:28.093Z","_value":114,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.392Z","_value":106,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.442Z","_value":106,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.521Z","_value":85,"_field":"value","_measurement":"Puls"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:50:25.342Z","_value":127,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.39Z","_value":114,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.439Z","_value":114,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.521Z","_value":107,"_field":"value","_measurement":"Systole"}]
          
          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          wrote on last edited by
          #3140

          @damrak2022 Sehr gut! 👍 👍

          Nun kann ich mit den gleichen Daten selbst rumprobieren:

          4e0b827f-f3a0-4e91-8f75-be9b447260d1-image.png

          So was sollte aber inzwischen selbstverständlich sein. 😉 - Also Danke!

          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.

          1 Reply Last reply
          0
          • Damrak2022D Damrak2022

            @mickym

            [{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:50:55.302Z","_value":84,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.39Z","_value":78,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.438Z","_value":78,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":0,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.52Z","_value":71,"_field":"value","_measurement":"Diastole"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:51:28.093Z","_value":114,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.392Z","_value":106,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.442Z","_value":106,"_field":"value","_measurement":"Puls"},{"result":"_result","table":1,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.521Z","_value":85,"_field":"value","_measurement":"Puls"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T05:50:25.342Z","_value":127,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-23T06:07:26.39Z","_value":114,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:07:26.439Z","_value":114,"_field":"value","_measurement":"Systole"},{"result":"_result","table":2,"_start":"2023-01-19T00:35:58.94679632Z","_stop":"2023-01-26T00:35:58.94679632Z","_time":"2023-01-24T07:22:26.521Z","_value":107,"_field":"value","_measurement":"Systole"}]
            
            mickymM Offline
            mickymM Offline
            mickym
            Most Active
            wrote on last edited by mickym
            #3141

            @damrak2022 So ich habs fertig - grundsätzlich gilt, dass das Auslesen der Daten aus der Influx DB nur zum Initialisieren des Charts dient - weitere Werte lässt Du direkt in die Chart Node wandern.

            Also die DB Abfrage nur einmal machen - wenn der Flow neu gestartet wird.

            9f8e5220-80ea-4cf5-9180-55c0e2e74cf8-image.png

            Löschen kann man die Chart Node in dem man ihr wie in der ersten Node ein leeres Array übergibt.

            Sprich die Inject Nodes mit Diastole etc. da müssen dann direkt die Datenpunkte über die iobroker IN Node davor und Du musst das topic setzen wie in den Inject-Nodes vorgegeben.

            Die Influx-DB Abfrage machst Du nur einmal beim Neustart des NodeRed Adapters - also einfach einmalig mit einer Inject Node die Query machen und dann in die von mir erstelle Change Node verbinden.

            Und wenn Du das JSONATA so gut verstehst, was ich da drin gemacht habe - dann können wir solche Aufgaben machen. Aber da muss ich selbst rumprobieren und ich glaube, dass Du da noch so weit entfernt bist (Lichtjahre 😁 ), dass wir uns da entsprechend austauschen könnten.

            [
               {
                   "id": "e79f1c62ef97b36a",
                   "type": "inject",
                   "z": "1983aa28392732ca",
                   "name": "Influx DB Abfrage zur Initialisierung",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "[{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:50:55.302Z\",\"_value\":84,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.39Z\",\"_value\":78,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.438Z\",\"_value\":78,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.52Z\",\"_value\":71,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:51:28.093Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.392Z\",\"_value\":106,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.442Z\",\"_value\":106,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.521Z\",\"_value\":85,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:50:25.342Z\",\"_value\":127,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.39Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.439Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.521Z\",\"_value\":107,\"_field\":\"value\",\"_measurement\":\"Systole\"}]",
                   "payloadType": "json",
                   "x": 220,
                   "y": 280,
                   "wires": [
                       [
                           "efd1ab4c73f3d571",
                           "a9c39616decfa97c"
                       ]
                   ]
               },
               {
                   "id": "4d853addf9c082fb",
                   "type": "inject",
                   "z": "1983aa28392732ca",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       },
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "Diastole",
                   "payload": "88",
                   "payloadType": "num",
                   "x": 500,
                   "y": 120,
                   "wires": [
                       [
                           "2d8acec0ec2da68e"
                       ]
                   ]
               },
               {
                   "id": "2d8acec0ec2da68e",
                   "type": "ui_chart",
                   "z": "1983aa28392732ca",
                   "name": "",
                   "group": "57f13d6f733e5c9d",
                   "order": 2,
                   "width": 0,
                   "height": 0,
                   "label": "Blutdruck und Puls",
                   "chartType": "line",
                   "legend": "true",
                   "xformat": "dd HH:mm",
                   "interpolate": "linear",
                   "nodata": "",
                   "dot": false,
                   "ymin": "",
                   "ymax": "",
                   "removeOlder": 1,
                   "removeOlderPoints": "50",
                   "removeOlderUnit": "604800",
                   "cutout": 0,
                   "useOneColor": false,
                   "useUTC": false,
                   "colors": [
                       "#1f77b4",
                       "#aec7e8",
                       "#ff7f0e",
                       "#2ca02c",
                       "#98df8a",
                       "#d62728",
                       "#ff9896",
                       "#9467bd",
                       "#c5b0d5"
                   ],
                   "outputs": 1,
                   "useDifferentColor": false,
                   "className": "",
                   "x": 770,
                   "y": 180,
                   "wires": [
                       []
                   ]
               },
               {
                   "id": "0ca3dc50cb11869a",
                   "type": "inject",
                   "z": "1983aa28392732ca",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       },
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "Systole",
                   "payload": "170",
                   "payloadType": "num",
                   "x": 490,
                   "y": 160,
                   "wires": [
                       [
                           "2d8acec0ec2da68e"
                       ]
                   ]
               },
               {
                   "id": "efd1ab4c73f3d571",
                   "type": "change",
                   "z": "1983aa28392732ca",
                   "name": "Create Object Arrays",
                   "rules": [
                       {
                           "t": "set",
                           "p": "payload",
                           "pt": "msg",
                           "to": "[\t   {\t       \"series\" : [\"Systole\",\"Diastole\",\"Puls\"],\t       \"data\": [\t           [\t               payload[_measurement=\"Systole\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ],\t           [\t               payload[_measurement=\"Diastole\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ],\t           [\t               payload[_measurement=\"Puls\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ]\t       ],\t       \"labels\" : [\"Systole\",\"Diastole\",\"Puls\"]\t    }\t]",
                           "tot": "jsonata"
                       }
                   ],
                   "action": "",
                   "property": "",
                   "from": "",
                   "to": "",
                   "reg": false,
                   "x": 500,
                   "y": 280,
                   "wires": [
                       [
                           "2d8acec0ec2da68e",
                           "cb3a1a566bc5679f"
                       ]
                   ]
               },
               {
                   "id": "097b4e4032b4bcff",
                   "type": "inject",
                   "z": "1983aa28392732ca",
                   "name": "",
                   "props": [
                       {
                           "p": "payload"
                       },
                       {
                           "p": "topic",
                           "vt": "str"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "Puls",
                   "payload": "75",
                   "payloadType": "num",
                   "x": 510,
                   "y": 200,
                   "wires": [
                       [
                           "2d8acec0ec2da68e"
                       ]
                   ]
               },
               {
                   "id": "5b8909ad22babab7",
                   "type": "inject",
                   "z": "1983aa28392732ca",
                   "name": "löschen",
                   "props": [
                       {
                           "p": "payload"
                       }
                   ],
                   "repeat": "",
                   "crontab": "",
                   "once": false,
                   "onceDelay": 0.1,
                   "topic": "",
                   "payload": "[]",
                   "payloadType": "json",
                   "x": 510,
                   "y": 60,
                   "wires": [
                       [
                           "2d8acec0ec2da68e"
                       ]
                   ]
               },
               {
                   "id": "a9c39616decfa97c",
                   "type": "debug",
                   "z": "1983aa28392732ca",
                   "name": "Array aus InfluxDB Abfrage",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 520,
                   "y": 320,
                   "wires": []
               },
               {
                   "id": "cb3a1a566bc5679f",
                   "type": "debug",
                   "z": "1983aa28392732ca",
                   "name": "Array zur Initialisierung der Chart Node",
                   "active": true,
                   "tosidebar": true,
                   "console": false,
                   "tostatus": false,
                   "complete": "payload",
                   "targetType": "msg",
                   "statusVal": "",
                   "statusType": "auto",
                   "x": 830,
                   "y": 280,
                   "wires": []
               },
               {
                   "id": "57f13d6f733e5c9d",
                   "type": "ui_group",
                   "name": "Test",
                   "tab": "20b3095113f94d70",
                   "order": 2,
                   "disp": true,
                   "width": "6",
                   "collapse": false,
                   "className": ""
               },
               {
                   "id": "20b3095113f94d70",
                   "type": "ui_tab",
                   "name": "Home",
                   "icon": "dashboard",
                   "order": 1,
                   "disabled": false,
                   "hidden": false
               }
            ]
            

            Du siehst wie man mit einer Change Node durch Filtern von Objekten und gleichzeitiger Neuerstellung - da ist JSONATA wirklich genial, völlig neue Objekte in der gewünschten Form erzeugen kann.

            Oben siehst Du ja das Array mit den Datensätzen aus der InfluxDB - das völlig neu erstellt wird, wie die Chart Node es braucht und wie es in der Beschreibung von Steve stand.

            Aus diesen Objekten:

            27143a53-7527-4859-a933-5d11e0b3beb8-image.png

            wurde diese alle je nach _measurement in verschiedene data Objekte gespeichert und gleichzeitig die Werte für die x und y-Achse generiert.

            6dab5899-8cea-41d3-acec-83c65df5fc89-image.png

            Im ersten Array = grün findest Du alle systolischen Werte mit dem timestamp als x und der entsprechenden Wert als y.

            Im zweiten Array = gelb findest Du alle diastolischen Werte mit dem timestamp als x und der entsprechenden Wert als y.

            Im dritten Array = hellblau findest Du alle Puls-Werte mit dem timestamp als x und der entsprechenden Wert als y.

            5bf271a7-ca66-41fc-befd-39ccd2d5519a-image.png

            Hier der Inhalt des Change / JSONATA Erstellung des Objektes:

            [
               {
                   "series" : ["Systole","Diastole","Puls"],
                   "data": [
                       [
                           payload[_measurement="Systole"].{
                               "x" : $toMillis(_time),
                               "y" : _value
                
                           }
                       ],
                       [
                           payload[_measurement="Diastole"].{
                               "x" : $toMillis(_time),
                               "y" : _value
                
                           }
                       ],
                       [
                           payload[_measurement="Puls"].{
                               "x" : $toMillis(_time),
                               "y" : _value
                
                           }
                       ]
                   ],
                   "labels" : ["Systole","Diastole","Puls"]
                }
            ]
            

            Also wie gesagt beschäftige Dich mit Arrays, Objekten, Filterung und Objekterstellung mit JSONATA.

            Wenn Du das mit Javascript programmieren wolltest, bräuchtest Du das Mehrfache an Code.

            Wie gesagt der Schlüssel ist der Screenshot, wie die Arrays und Objekte aufgebaut sein müssen, den ich aus dem Artikel von Steve kopiert hatte (https://forum.iobroker.net/post/934428).

            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.

            Damrak2022D 2 Replies Last reply
            0
            • mickymM mickym

              @damrak2022 So ich habs fertig - grundsätzlich gilt, dass das Auslesen der Daten aus der Influx DB nur zum Initialisieren des Charts dient - weitere Werte lässt Du direkt in die Chart Node wandern.

              Also die DB Abfrage nur einmal machen - wenn der Flow neu gestartet wird.

              9f8e5220-80ea-4cf5-9180-55c0e2e74cf8-image.png

              Löschen kann man die Chart Node in dem man ihr wie in der ersten Node ein leeres Array übergibt.

              Sprich die Inject Nodes mit Diastole etc. da müssen dann direkt die Datenpunkte über die iobroker IN Node davor und Du musst das topic setzen wie in den Inject-Nodes vorgegeben.

              Die Influx-DB Abfrage machst Du nur einmal beim Neustart des NodeRed Adapters - also einfach einmalig mit einer Inject Node die Query machen und dann in die von mir erstelle Change Node verbinden.

              Und wenn Du das JSONATA so gut verstehst, was ich da drin gemacht habe - dann können wir solche Aufgaben machen. Aber da muss ich selbst rumprobieren und ich glaube, dass Du da noch so weit entfernt bist (Lichtjahre 😁 ), dass wir uns da entsprechend austauschen könnten.

              [
                 {
                     "id": "e79f1c62ef97b36a",
                     "type": "inject",
                     "z": "1983aa28392732ca",
                     "name": "Influx DB Abfrage zur Initialisierung",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:50:55.302Z\",\"_value\":84,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.39Z\",\"_value\":78,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.438Z\",\"_value\":78,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.52Z\",\"_value\":71,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:51:28.093Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.392Z\",\"_value\":106,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.442Z\",\"_value\":106,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.521Z\",\"_value\":85,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:50:25.342Z\",\"_value\":127,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.39Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.439Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.521Z\",\"_value\":107,\"_field\":\"value\",\"_measurement\":\"Systole\"}]",
                     "payloadType": "json",
                     "x": 220,
                     "y": 280,
                     "wires": [
                         [
                             "efd1ab4c73f3d571",
                             "a9c39616decfa97c"
                         ]
                     ]
                 },
                 {
                     "id": "4d853addf9c082fb",
                     "type": "inject",
                     "z": "1983aa28392732ca",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         },
                         {
                             "p": "topic",
                             "vt": "str"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "Diastole",
                     "payload": "88",
                     "payloadType": "num",
                     "x": 500,
                     "y": 120,
                     "wires": [
                         [
                             "2d8acec0ec2da68e"
                         ]
                     ]
                 },
                 {
                     "id": "2d8acec0ec2da68e",
                     "type": "ui_chart",
                     "z": "1983aa28392732ca",
                     "name": "",
                     "group": "57f13d6f733e5c9d",
                     "order": 2,
                     "width": 0,
                     "height": 0,
                     "label": "Blutdruck und Puls",
                     "chartType": "line",
                     "legend": "true",
                     "xformat": "dd HH:mm",
                     "interpolate": "linear",
                     "nodata": "",
                     "dot": false,
                     "ymin": "",
                     "ymax": "",
                     "removeOlder": 1,
                     "removeOlderPoints": "50",
                     "removeOlderUnit": "604800",
                     "cutout": 0,
                     "useOneColor": false,
                     "useUTC": false,
                     "colors": [
                         "#1f77b4",
                         "#aec7e8",
                         "#ff7f0e",
                         "#2ca02c",
                         "#98df8a",
                         "#d62728",
                         "#ff9896",
                         "#9467bd",
                         "#c5b0d5"
                     ],
                     "outputs": 1,
                     "useDifferentColor": false,
                     "className": "",
                     "x": 770,
                     "y": 180,
                     "wires": [
                         []
                     ]
                 },
                 {
                     "id": "0ca3dc50cb11869a",
                     "type": "inject",
                     "z": "1983aa28392732ca",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         },
                         {
                             "p": "topic",
                             "vt": "str"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "Systole",
                     "payload": "170",
                     "payloadType": "num",
                     "x": 490,
                     "y": 160,
                     "wires": [
                         [
                             "2d8acec0ec2da68e"
                         ]
                     ]
                 },
                 {
                     "id": "efd1ab4c73f3d571",
                     "type": "change",
                     "z": "1983aa28392732ca",
                     "name": "Create Object Arrays",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "[\t   {\t       \"series\" : [\"Systole\",\"Diastole\",\"Puls\"],\t       \"data\": [\t           [\t               payload[_measurement=\"Systole\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ],\t           [\t               payload[_measurement=\"Diastole\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ],\t           [\t               payload[_measurement=\"Puls\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ]\t       ],\t       \"labels\" : [\"Systole\",\"Diastole\",\"Puls\"]\t    }\t]",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 500,
                     "y": 280,
                     "wires": [
                         [
                             "2d8acec0ec2da68e",
                             "cb3a1a566bc5679f"
                         ]
                     ]
                 },
                 {
                     "id": "097b4e4032b4bcff",
                     "type": "inject",
                     "z": "1983aa28392732ca",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         },
                         {
                             "p": "topic",
                             "vt": "str"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "Puls",
                     "payload": "75",
                     "payloadType": "num",
                     "x": 510,
                     "y": 200,
                     "wires": [
                         [
                             "2d8acec0ec2da68e"
                         ]
                     ]
                 },
                 {
                     "id": "5b8909ad22babab7",
                     "type": "inject",
                     "z": "1983aa28392732ca",
                     "name": "löschen",
                     "props": [
                         {
                             "p": "payload"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "",
                     "payload": "[]",
                     "payloadType": "json",
                     "x": 510,
                     "y": 60,
                     "wires": [
                         [
                             "2d8acec0ec2da68e"
                         ]
                     ]
                 },
                 {
                     "id": "a9c39616decfa97c",
                     "type": "debug",
                     "z": "1983aa28392732ca",
                     "name": "Array aus InfluxDB Abfrage",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 520,
                     "y": 320,
                     "wires": []
                 },
                 {
                     "id": "cb3a1a566bc5679f",
                     "type": "debug",
                     "z": "1983aa28392732ca",
                     "name": "Array zur Initialisierung der Chart Node",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 830,
                     "y": 280,
                     "wires": []
                 },
                 {
                     "id": "57f13d6f733e5c9d",
                     "type": "ui_group",
                     "name": "Test",
                     "tab": "20b3095113f94d70",
                     "order": 2,
                     "disp": true,
                     "width": "6",
                     "collapse": false,
                     "className": ""
                 },
                 {
                     "id": "20b3095113f94d70",
                     "type": "ui_tab",
                     "name": "Home",
                     "icon": "dashboard",
                     "order": 1,
                     "disabled": false,
                     "hidden": false
                 }
              ]
              

              Du siehst wie man mit einer Change Node durch Filtern von Objekten und gleichzeitiger Neuerstellung - da ist JSONATA wirklich genial, völlig neue Objekte in der gewünschten Form erzeugen kann.

              Oben siehst Du ja das Array mit den Datensätzen aus der InfluxDB - das völlig neu erstellt wird, wie die Chart Node es braucht und wie es in der Beschreibung von Steve stand.

              Aus diesen Objekten:

              27143a53-7527-4859-a933-5d11e0b3beb8-image.png

              wurde diese alle je nach _measurement in verschiedene data Objekte gespeichert und gleichzeitig die Werte für die x und y-Achse generiert.

              6dab5899-8cea-41d3-acec-83c65df5fc89-image.png

              Im ersten Array = grün findest Du alle systolischen Werte mit dem timestamp als x und der entsprechenden Wert als y.

              Im zweiten Array = gelb findest Du alle diastolischen Werte mit dem timestamp als x und der entsprechenden Wert als y.

              Im dritten Array = hellblau findest Du alle Puls-Werte mit dem timestamp als x und der entsprechenden Wert als y.

              5bf271a7-ca66-41fc-befd-39ccd2d5519a-image.png

              Hier der Inhalt des Change / JSONATA Erstellung des Objektes:

              [
                 {
                     "series" : ["Systole","Diastole","Puls"],
                     "data": [
                         [
                             payload[_measurement="Systole"].{
                                 "x" : $toMillis(_time),
                                 "y" : _value
                  
                             }
                         ],
                         [
                             payload[_measurement="Diastole"].{
                                 "x" : $toMillis(_time),
                                 "y" : _value
                  
                             }
                         ],
                         [
                             payload[_measurement="Puls"].{
                                 "x" : $toMillis(_time),
                                 "y" : _value
                  
                             }
                         ]
                     ],
                     "labels" : ["Systole","Diastole","Puls"]
                  }
              ]
              

              Also wie gesagt beschäftige Dich mit Arrays, Objekten, Filterung und Objekterstellung mit JSONATA.

              Wenn Du das mit Javascript programmieren wolltest, bräuchtest Du das Mehrfache an Code.

              Wie gesagt der Schlüssel ist der Screenshot, wie die Arrays und Objekte aufgebaut sein müssen, den ich aus dem Artikel von Steve kopiert hatte (https://forum.iobroker.net/post/934428).

              Damrak2022D Offline
              Damrak2022D Offline
              Damrak2022
              wrote on last edited by Damrak2022
              #3142

              @mickym Hallo Micky,
              erstmal vielen Dank.

              Mit besten Grüßen
              Andy

              1 Reply Last reply
              0
              • mickymM mickym

                @damrak2022 So ich habs fertig - grundsätzlich gilt, dass das Auslesen der Daten aus der Influx DB nur zum Initialisieren des Charts dient - weitere Werte lässt Du direkt in die Chart Node wandern.

                Also die DB Abfrage nur einmal machen - wenn der Flow neu gestartet wird.

                9f8e5220-80ea-4cf5-9180-55c0e2e74cf8-image.png

                Löschen kann man die Chart Node in dem man ihr wie in der ersten Node ein leeres Array übergibt.

                Sprich die Inject Nodes mit Diastole etc. da müssen dann direkt die Datenpunkte über die iobroker IN Node davor und Du musst das topic setzen wie in den Inject-Nodes vorgegeben.

                Die Influx-DB Abfrage machst Du nur einmal beim Neustart des NodeRed Adapters - also einfach einmalig mit einer Inject Node die Query machen und dann in die von mir erstelle Change Node verbinden.

                Und wenn Du das JSONATA so gut verstehst, was ich da drin gemacht habe - dann können wir solche Aufgaben machen. Aber da muss ich selbst rumprobieren und ich glaube, dass Du da noch so weit entfernt bist (Lichtjahre 😁 ), dass wir uns da entsprechend austauschen könnten.

                [
                   {
                       "id": "e79f1c62ef97b36a",
                       "type": "inject",
                       "z": "1983aa28392732ca",
                       "name": "Influx DB Abfrage zur Initialisierung",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "[{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:50:55.302Z\",\"_value\":84,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.39Z\",\"_value\":78,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.438Z\",\"_value\":78,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":0,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.52Z\",\"_value\":71,\"_field\":\"value\",\"_measurement\":\"Diastole\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:51:28.093Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.392Z\",\"_value\":106,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.442Z\",\"_value\":106,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":1,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.521Z\",\"_value\":85,\"_field\":\"value\",\"_measurement\":\"Puls\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T05:50:25.342Z\",\"_value\":127,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-23T06:07:26.39Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:07:26.439Z\",\"_value\":114,\"_field\":\"value\",\"_measurement\":\"Systole\"},{\"result\":\"_result\",\"table\":2,\"_start\":\"2023-01-19T00:35:58.94679632Z\",\"_stop\":\"2023-01-26T00:35:58.94679632Z\",\"_time\":\"2023-01-24T07:22:26.521Z\",\"_value\":107,\"_field\":\"value\",\"_measurement\":\"Systole\"}]",
                       "payloadType": "json",
                       "x": 220,
                       "y": 280,
                       "wires": [
                           [
                               "efd1ab4c73f3d571",
                               "a9c39616decfa97c"
                           ]
                       ]
                   },
                   {
                       "id": "4d853addf9c082fb",
                       "type": "inject",
                       "z": "1983aa28392732ca",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Diastole",
                       "payload": "88",
                       "payloadType": "num",
                       "x": 500,
                       "y": 120,
                       "wires": [
                           [
                               "2d8acec0ec2da68e"
                           ]
                       ]
                   },
                   {
                       "id": "2d8acec0ec2da68e",
                       "type": "ui_chart",
                       "z": "1983aa28392732ca",
                       "name": "",
                       "group": "57f13d6f733e5c9d",
                       "order": 2,
                       "width": 0,
                       "height": 0,
                       "label": "Blutdruck und Puls",
                       "chartType": "line",
                       "legend": "true",
                       "xformat": "dd HH:mm",
                       "interpolate": "linear",
                       "nodata": "",
                       "dot": false,
                       "ymin": "",
                       "ymax": "",
                       "removeOlder": 1,
                       "removeOlderPoints": "50",
                       "removeOlderUnit": "604800",
                       "cutout": 0,
                       "useOneColor": false,
                       "useUTC": false,
                       "colors": [
                           "#1f77b4",
                           "#aec7e8",
                           "#ff7f0e",
                           "#2ca02c",
                           "#98df8a",
                           "#d62728",
                           "#ff9896",
                           "#9467bd",
                           "#c5b0d5"
                       ],
                       "outputs": 1,
                       "useDifferentColor": false,
                       "className": "",
                       "x": 770,
                       "y": 180,
                       "wires": [
                           []
                       ]
                   },
                   {
                       "id": "0ca3dc50cb11869a",
                       "type": "inject",
                       "z": "1983aa28392732ca",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Systole",
                       "payload": "170",
                       "payloadType": "num",
                       "x": 490,
                       "y": 160,
                       "wires": [
                           [
                               "2d8acec0ec2da68e"
                           ]
                       ]
                   },
                   {
                       "id": "efd1ab4c73f3d571",
                       "type": "change",
                       "z": "1983aa28392732ca",
                       "name": "Create Object Arrays",
                       "rules": [
                           {
                               "t": "set",
                               "p": "payload",
                               "pt": "msg",
                               "to": "[\t   {\t       \"series\" : [\"Systole\",\"Diastole\",\"Puls\"],\t       \"data\": [\t           [\t               payload[_measurement=\"Systole\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ],\t           [\t               payload[_measurement=\"Diastole\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ],\t           [\t               payload[_measurement=\"Puls\"].{\t                   \"x\" : $toMillis(_time),\t                   \"y\" : _value\t    \t               }\t           ]\t       ],\t       \"labels\" : [\"Systole\",\"Diastole\",\"Puls\"]\t    }\t]",
                               "tot": "jsonata"
                           }
                       ],
                       "action": "",
                       "property": "",
                       "from": "",
                       "to": "",
                       "reg": false,
                       "x": 500,
                       "y": 280,
                       "wires": [
                           [
                               "2d8acec0ec2da68e",
                               "cb3a1a566bc5679f"
                           ]
                       ]
                   },
                   {
                       "id": "097b4e4032b4bcff",
                       "type": "inject",
                       "z": "1983aa28392732ca",
                       "name": "",
                       "props": [
                           {
                               "p": "payload"
                           },
                           {
                               "p": "topic",
                               "vt": "str"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "Puls",
                       "payload": "75",
                       "payloadType": "num",
                       "x": 510,
                       "y": 200,
                       "wires": [
                           [
                               "2d8acec0ec2da68e"
                           ]
                       ]
                   },
                   {
                       "id": "5b8909ad22babab7",
                       "type": "inject",
                       "z": "1983aa28392732ca",
                       "name": "löschen",
                       "props": [
                           {
                               "p": "payload"
                           }
                       ],
                       "repeat": "",
                       "crontab": "",
                       "once": false,
                       "onceDelay": 0.1,
                       "topic": "",
                       "payload": "[]",
                       "payloadType": "json",
                       "x": 510,
                       "y": 60,
                       "wires": [
                           [
                               "2d8acec0ec2da68e"
                           ]
                       ]
                   },
                   {
                       "id": "a9c39616decfa97c",
                       "type": "debug",
                       "z": "1983aa28392732ca",
                       "name": "Array aus InfluxDB Abfrage",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 520,
                       "y": 320,
                       "wires": []
                   },
                   {
                       "id": "cb3a1a566bc5679f",
                       "type": "debug",
                       "z": "1983aa28392732ca",
                       "name": "Array zur Initialisierung der Chart Node",
                       "active": true,
                       "tosidebar": true,
                       "console": false,
                       "tostatus": false,
                       "complete": "payload",
                       "targetType": "msg",
                       "statusVal": "",
                       "statusType": "auto",
                       "x": 830,
                       "y": 280,
                       "wires": []
                   },
                   {
                       "id": "57f13d6f733e5c9d",
                       "type": "ui_group",
                       "name": "Test",
                       "tab": "20b3095113f94d70",
                       "order": 2,
                       "disp": true,
                       "width": "6",
                       "collapse": false,
                       "className": ""
                   },
                   {
                       "id": "20b3095113f94d70",
                       "type": "ui_tab",
                       "name": "Home",
                       "icon": "dashboard",
                       "order": 1,
                       "disabled": false,
                       "hidden": false
                   }
                ]
                

                Du siehst wie man mit einer Change Node durch Filtern von Objekten und gleichzeitiger Neuerstellung - da ist JSONATA wirklich genial, völlig neue Objekte in der gewünschten Form erzeugen kann.

                Oben siehst Du ja das Array mit den Datensätzen aus der InfluxDB - das völlig neu erstellt wird, wie die Chart Node es braucht und wie es in der Beschreibung von Steve stand.

                Aus diesen Objekten:

                27143a53-7527-4859-a933-5d11e0b3beb8-image.png

                wurde diese alle je nach _measurement in verschiedene data Objekte gespeichert und gleichzeitig die Werte für die x und y-Achse generiert.

                6dab5899-8cea-41d3-acec-83c65df5fc89-image.png

                Im ersten Array = grün findest Du alle systolischen Werte mit dem timestamp als x und der entsprechenden Wert als y.

                Im zweiten Array = gelb findest Du alle diastolischen Werte mit dem timestamp als x und der entsprechenden Wert als y.

                Im dritten Array = hellblau findest Du alle Puls-Werte mit dem timestamp als x und der entsprechenden Wert als y.

                5bf271a7-ca66-41fc-befd-39ccd2d5519a-image.png

                Hier der Inhalt des Change / JSONATA Erstellung des Objektes:

                [
                   {
                       "series" : ["Systole","Diastole","Puls"],
                       "data": [
                           [
                               payload[_measurement="Systole"].{
                                   "x" : $toMillis(_time),
                                   "y" : _value
                    
                               }
                           ],
                           [
                               payload[_measurement="Diastole"].{
                                   "x" : $toMillis(_time),
                                   "y" : _value
                    
                               }
                           ],
                           [
                               payload[_measurement="Puls"].{
                                   "x" : $toMillis(_time),
                                   "y" : _value
                    
                               }
                           ]
                       ],
                       "labels" : ["Systole","Diastole","Puls"]
                    }
                ]
                

                Also wie gesagt beschäftige Dich mit Arrays, Objekten, Filterung und Objekterstellung mit JSONATA.

                Wenn Du das mit Javascript programmieren wolltest, bräuchtest Du das Mehrfache an Code.

                Wie gesagt der Schlüssel ist der Screenshot, wie die Arrays und Objekte aufgebaut sein müssen, den ich aus dem Artikel von Steve kopiert hatte (https://forum.iobroker.net/post/934428).

                Damrak2022D Offline
                Damrak2022D Offline
                Damrak2022
                wrote on last edited by
                #3143

                @mickym Also, wenn ich das alles halbwegs richtig verstehe, hast Du hier die Werte von der Systole und Diastole eingearbeitet. Das zeigt sich ja auch im Debug:
                Bildschirm­foto 2023-01-26 um 05.38.32.png
                Bildschirm­foto 2023-01-26 um 05.40.10.png

                Die Nodes für den Puls muss ich noch dementsprechend hinzufügen, richtig?

                Ich habe jetzt mal die Chart Node hinten drangehängt, sehe hier aber nur eine Linie, obwohl es laut Debug ja zwei Werte sein müssten, das verwundert mich etwas.

                Mit besten Grüßen
                Andy

                mickymM 2 Replies Last reply
                0
                • Damrak2022D Damrak2022

                  @mickym Also, wenn ich das alles halbwegs richtig verstehe, hast Du hier die Werte von der Systole und Diastole eingearbeitet. Das zeigt sich ja auch im Debug:
                  Bildschirm­foto 2023-01-26 um 05.38.32.png
                  Bildschirm­foto 2023-01-26 um 05.40.10.png

                  Die Nodes für den Puls muss ich noch dementsprechend hinzufügen, richtig?

                  Ich habe jetzt mal die Chart Node hinten drangehängt, sehe hier aber nur eine Linie, obwohl es laut Debug ja zwei Werte sein müssten, das verwundert mich etwas.

                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  wrote on last edited by mickym
                  #3144

                  @damrak2022 mach doch bitte das was ich geschrieben habe. Schmeiß alles weg, was du hast. Du brauchst doch nur die Change Node zwischen der chartnode und influx-dB platzieren. Zusätzlich kommen dann noch die aktuellen Werte rein. Ich hab alles beschrieben- ich will’s eigentlich nicht nochmal schreiben.

                  Siehst du in meinem Flow irgendwelche Switch nodes?? - ich hab doch alles quasi fix und fertig für dich aufbereitet

                  War wohl mein Fehler - habe einen Mist exportiert! Sorry und Entschuldigung!

                  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.

                  Damrak2022D 1 Reply Last reply
                  0
                  • mickymM mickym

                    @damrak2022 mach doch bitte das was ich geschrieben habe. Schmeiß alles weg, was du hast. Du brauchst doch nur die Change Node zwischen der chartnode und influx-dB platzieren. Zusätzlich kommen dann noch die aktuellen Werte rein. Ich hab alles beschrieben- ich will’s eigentlich nicht nochmal schreiben.

                    Siehst du in meinem Flow irgendwelche Switch nodes?? - ich hab doch alles quasi fix und fertig für dich aufbereitet

                    War wohl mein Fehler - habe einen Mist exportiert! Sorry und Entschuldigung!

                    Damrak2022D Offline
                    Damrak2022D Offline
                    Damrak2022
                    wrote on last edited by
                    #3145

                    @mickym Okay, mache ich. Nur das mit der Change Node war mir nicht klar.

                    Mit besten Grüßen
                    Andy

                    mickymM 1 Reply Last reply
                    0
                    • Damrak2022D Damrak2022

                      @mickym Okay, mache ich. Nur das mit der Change Node war mir nicht klar.

                      mickymM Offline
                      mickymM Offline
                      mickym
                      Most Active
                      wrote on last edited by mickym
                      #3146

                      @damrak2022 Ich wundere mich, wie Du überhaupt zu diesen Nodes kommst - das waren meine Fehlversuche - ich schau mal ob ich Dir über haupt das richtige exportiert habe.

                      Importiere den Flow nochmal neu - ich glaube ich habe beim Export einen Fehler gemacht.

                      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.

                      1 Reply Last reply
                      0
                      • Damrak2022D Damrak2022

                        @mickym Also, wenn ich das alles halbwegs richtig verstehe, hast Du hier die Werte von der Systole und Diastole eingearbeitet. Das zeigt sich ja auch im Debug:
                        Bildschirm­foto 2023-01-26 um 05.38.32.png
                        Bildschirm­foto 2023-01-26 um 05.40.10.png

                        Die Nodes für den Puls muss ich noch dementsprechend hinzufügen, richtig?

                        Ich habe jetzt mal die Chart Node hinten drangehängt, sehe hier aber nur eine Linie, obwohl es laut Debug ja zwei Werte sein müssten, das verwundert mich etwas.

                        mickymM Offline
                        mickymM Offline
                        mickym
                        Most Active
                        wrote on last edited by mickym
                        #3147

                        @damrak2022 sagte in Visualisierung mit Node Red erstellen:

                        @mickym Also, wenn ich das alles halbwegs richtig verstehe, hast Du hier die Werte von der Systole und Diastole eingearbeitet. Das zeigt sich ja auch im Debug:
                        Bildschirm­foto 2023-01-26 um 05.38.32.png
                        Bildschirm­foto 2023-01-26 um 05.40.10.png

                        Die Nodes für den Puls muss ich noch dementsprechend hinzufügen, richtig?

                        Ich habe jetzt mal die Chart Node hinten drangehängt, sehe hier aber nur eine Linie, obwohl es laut Debug ja zwei Werte sein müssten, das verwundert mich etwas.

                        Also das war ein Versehen - Du hast meine Tests und Fehlversuche importiert. 😉 Der Flow muss so aussehen, wie auf dem Screenshot:

                        ed481534-cea8-4be8-af72-beabb175862d-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.

                        Damrak2022D 1 Reply Last reply
                        0
                        • mickymM mickym

                          @damrak2022 sagte in Visualisierung mit Node Red erstellen:

                          @mickym Also, wenn ich das alles halbwegs richtig verstehe, hast Du hier die Werte von der Systole und Diastole eingearbeitet. Das zeigt sich ja auch im Debug:
                          Bildschirm­foto 2023-01-26 um 05.38.32.png
                          Bildschirm­foto 2023-01-26 um 05.40.10.png

                          Die Nodes für den Puls muss ich noch dementsprechend hinzufügen, richtig?

                          Ich habe jetzt mal die Chart Node hinten drangehängt, sehe hier aber nur eine Linie, obwohl es laut Debug ja zwei Werte sein müssten, das verwundert mich etwas.

                          Also das war ein Versehen - Du hast meine Tests und Fehlversuche importiert. 😉 Der Flow muss so aussehen, wie auf dem Screenshot:

                          ed481534-cea8-4be8-af72-beabb175862d-image.png

                          Damrak2022D Offline
                          Damrak2022D Offline
                          Damrak2022
                          wrote on last edited by
                          #3148

                          @mickym Jetzt fehlt nur der korrekte Export von Dir😄

                          Mit besten Grüßen
                          Andy

                          mickymM 1 Reply Last reply
                          0
                          • Damrak2022D Damrak2022

                            @mickym Jetzt fehlt nur der korrekte Export von Dir😄

                            mickymM Offline
                            mickymM Offline
                            mickym
                            Most Active
                            wrote on last edited by
                            #3149

                            @damrak2022 ich hab das in dem Beitrag unten ausgetauscht- also einfach nochmal neu importieren

                            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.

                            Damrak2022D 2 Replies Last reply
                            0
                            • mickymM mickym

                              @damrak2022 ich hab das in dem Beitrag unten ausgetauscht- also einfach nochmal neu importieren

                              Damrak2022D Offline
                              Damrak2022D Offline
                              Damrak2022
                              wrote on last edited by
                              #3150

                              @mickym Okay, danke.

                              Mit besten Grüßen
                              Andy

                              1 Reply Last reply
                              0
                              • mickymM mickym

                                @damrak2022 ich hab das in dem Beitrag unten ausgetauscht- also einfach nochmal neu importieren

                                Damrak2022D Offline
                                Damrak2022D Offline
                                Damrak2022
                                wrote on last edited by
                                #3151

                                @mickym Hallo Micky,

                                ich brauche mal Deinen Ratschlag: Ich wollte jetzt die Daten von der Influx auslesen um auch mein Gewicht im Liniendiagramm darzustellen. Ich hätte das dann so nachgebaut, wie Du es mit dem Blutdruck/Puls gemacht hast.
                                Allerdings bekomme ich jetzt folgende Debug Meldung wenn ich das Gewicht so versuche auszulesen:

                                Bildschirm­foto 2023-01-27 um 02.07.14.png Bildschirm­foto 2023-01-27 um 02.04.27.png Bildschirm­foto 2023-01-27 um 02.04.16.png

                                Nur kann ich mit der Fehlermeldung nicht wirklich was anfangen. Hast Du eine Idee, was hier falsch ist?

                                Mit besten Grüßen
                                Andy

                                1 Reply Last reply
                                0
                                • mickymM Offline
                                  mickymM Offline
                                  mickym
                                  Most Active
                                  wrote on last edited by mickym
                                  #3152

                                  @damrak2022 Nun in Deinem aggregateWindow referenzierst Du ein Objekt mit dem Namen v und das gibt es nicht. Anstelle von v.WindowPeriod - solltest Du direkt die Periode eingeben, die aggregieren willst.

                                  Du scheinst ja nicht die einzelnen Werte abfragen zu wollen, sondern den Mittelwert über bestimmte Zeitspannen zu bilden. Warum?

                                  Hier hast die Syntax - aber wie gesagt, warum?
                                  https://docs.influxdata.com/flux/v0.x/stdlib/universe/aggregatewindow/

                                  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.

                                  Damrak2022D 1 Reply Last reply
                                  0
                                  • mickymM mickym

                                    @damrak2022 Nun in Deinem aggregateWindow referenzierst Du ein Objekt mit dem Namen v und das gibt es nicht. Anstelle von v.WindowPeriod - solltest Du direkt die Periode eingeben, die aggregieren willst.

                                    Du scheinst ja nicht die einzelnen Werte abfragen zu wollen, sondern den Mittelwert über bestimmte Zeitspannen zu bilden. Warum?

                                    Hier hast die Syntax - aber wie gesagt, warum?
                                    https://docs.influxdata.com/flux/v0.x/stdlib/universe/aggregatewindow/

                                    Damrak2022D Offline
                                    Damrak2022D Offline
                                    Damrak2022
                                    wrote on last edited by
                                    #3153

                                    @mickym Damit ich dann das Array, so wie gestern kopieren kann, um es dann mit der Inject Node anzufragen und nachzubauen.

                                    Mit besten Grüßen
                                    Andy

                                    mickymM 1 Reply Last reply
                                    0
                                    • Damrak2022D Damrak2022

                                      @mickym Damit ich dann das Array, so wie gestern kopieren kann, um es dann mit der Inject Node anzufragen und nachzubauen.

                                      mickymM Offline
                                      mickymM Offline
                                      mickym
                                      Most Active
                                      wrote on last edited by mickym
                                      #3154

                                      @damrak2022 Dazu musst Du doch nichts aggregieren. Ich würde mal die Zeile 5 weglassen.

                                      So oft steigst Du ja nicht auf die Waage, dass Du das aggregieren musst. Ein Beispiel siehst Du ja in dem verlinkten Code:

                                      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.

                                      Damrak2022D 1 Reply Last reply
                                      0
                                      • mickymM mickym

                                        @damrak2022 Dazu musst Du doch nichts aggregieren. Ich würde mal die Zeile 5 weglassen.

                                        So oft steigst Du ja nicht auf die Waage, dass Du das aggregieren musst. Ein Beispiel siehst Du ja in dem verlinkten Code:

                                        Damrak2022D Offline
                                        Damrak2022D Offline
                                        Damrak2022
                                        wrote on last edited by
                                        #3155

                                        @mickym Stimmt Zeile 5 war der Fehler.

                                        Mit besten Grüßen
                                        Andy

                                        mickymM 1 Reply Last reply
                                        0
                                        • Damrak2022D Damrak2022

                                          @mickym Stimmt Zeile 5 war der Fehler.

                                          mickymM Offline
                                          mickymM Offline
                                          mickym
                                          Most Active
                                          wrote on last edited by
                                          #3156

                                          @damrak2022 sagte in Visualisierung mit Node Red erstellen:

                                          @mickym Stimmt Zeile 5 war der Fehler.

                                          Ja Du musst lesen - v war kein definiertes Objekt.

                                          aggregateWindow(every: 1m, fn: mean)
                                          

                                          Hier in dem Beispiel werden mittelwerte über alle Werte, die innerhalb von einer Minute auftauchen - aggregiert.

                                          Die Fehlermeldung war doch klar: "undefined identifier v" und diesen hast Du referenziert über das Objekt v mit der Eigenschaft WindowsPeriod - die wird aber nur in der GUI der InfluxDB gesetzt und hat nichts mit der Datenbank zu tun.

                                          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.

                                          Damrak2022D 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          527

                                          Online

                                          32.4k

                                          Users

                                          81.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe