Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Node-Red
    5. Gelöst: Wert in dynamische Struktur im ioBroker ablegen

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Gelöst: Wert in dynamische Struktur im ioBroker ablegen

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @MartyBr last edited by

      @martybr Im Fall der variablen Adressierung innerhalb eines Arrays bietet sich dann doch eher ein Function Node mit Javascript an.

      M 1 Reply Last reply Reply Quote 0
      • M
        MartyBr @mickym last edited by

        @mickym
        Ich stelle hier mal den gesamten Flow vor. Ziel war, aus einem Temperatursensor den Mittelwert (== mean), den Minimalwert (== min) und den Maximalwert (==max) über einen Tag gemittelt in ein Array zu speichern.
        Dabei soll das erste Element den 1. Tag im Monat entsprechend, das 2. Element entsprechend die zweite Position im Array gespeichert werden.
        Die Datenstruktur ist {min: 2, mean:4,max:12}
        Zur Einhaltung der Reihenfolge dienen die delay Nodes.

        Die Ablage des Arrays liegt unter 0_userdata.0.Hauptpfad.Jahr.Monat.
        Als Beispiel:
        0_userdata.0.Heizung.2025.Februar.meanTmp

        Die Werte werden um Mitternacht geschrieben. Die Struktur der Ablage wird automatisch angelegt, d.h. am 1. März wird der nächste Datenpunkt geschrieben.
        Aus historischen Gründen ersetze ich März durch Maerz (nicht Merz 😇 )

        Hier der Flow:

        Bildschirmfoto 2025-02-10 um 18.22.49.png

        [
            {
                "id": "ae673cf6cd8433a0",
                "type": "subflow",
                "name": "Datum in Topic",
                "info": "",
                "category": "",
                "in": [
                    {
                        "x": 60,
                        "y": 80,
                        "wires": [
                            {
                                "id": "2e1ea06b2e94bf1a"
                            }
                        ]
                    }
                ],
                "out": [
                    {
                        "x": 820,
                        "y": 80,
                        "wires": [
                            {
                                "id": "fc37f5f9d2b0297b",
                                "port": 0
                            }
                        ]
                    }
                ],
                "env": [
                    {
                        "name": "basePath",
                        "type": "str",
                        "value": "Test1.Test2"
                    }
                ],
                "meta": {},
                "color": "#DDAA99"
            },
            {
                "id": "2e1ea06b2e94bf1a",
                "type": "change",
                "z": "ae673cf6cd8433a0",
                "name": "",
                "rules": [
                    {
                        "t": "set",
                        "p": "datum",
                        "pt": "msg",
                        "to": "$moment().locale('de').format('YYYY.MMMM')",
                        "tot": "jsonata"
                    }
                ],
                "action": "",
                "property": "",
                "from": "",
                "to": "",
                "reg": false,
                "x": 230,
                "y": 80,
                "wires": [
                    [
                        "0e8de9437c3c420a"
                    ]
                ]
            },
            {
                "id": "0e8de9437c3c420a",
                "type": "change",
                "z": "ae673cf6cd8433a0",
                "name": "März zu Maerz",
                "rules": [
                    {
                        "t": "change",
                        "p": "datum",
                        "pt": "msg",
                        "from": "März",
                        "fromt": "str",
                        "to": "Maerz",
                        "tot": "str"
                    }
                ],
                "action": "",
                "property": "",
                "from": "",
                "to": "",
                "reg": false,
                "x": 440,
                "y": 80,
                "wires": [
                    [
                        "fc37f5f9d2b0297b"
                    ]
                ]
            },
            {
                "id": "fc37f5f9d2b0297b",
                "type": "change",
                "z": "ae673cf6cd8433a0",
                "name": "",
                "rules": [
                    {
                        "t": "set",
                        "p": "topic",
                        "pt": "msg",
                        "to": "\"0_userdata.0.\"  & $env(\"basePath\") & \".\" & datum & \".\" & topic",
                        "tot": "jsonata"
                    }
                ],
                "action": "",
                "property": "",
                "from": "",
                "to": "",
                "reg": false,
                "x": 660,
                "y": 80,
                "wires": [
                    []
                ]
            },
            {
                "id": "8736b5d7e2d039bf",
                "type": "aggregator",
                "z": "3146dc7f943a9f88",
                "name": "Mean",
                "topic": "mean",
                "intervalCount": "1",
                "intervalUnits": "d",
                "submitIncompleteInterval": true,
                "submitPerTopic": false,
                "aggregationType": "mean",
                "x": 330,
                "y": 180,
                "wires": [
                    [
                        "ae4126ab345fb69f"
                    ]
                ]
            },
            {
                "id": "c628f16d0dd75f88",
                "type": "aggregator",
                "z": "3146dc7f943a9f88",
                "name": "Min",
                "topic": "min",
                "intervalCount": "1",
                "intervalUnits": "d",
                "submitIncompleteInterval": true,
                "submitPerTopic": false,
                "aggregationType": "min",
                "x": 330,
                "y": 120,
                "wires": [
                    [
                        "73aeeccad69fe289"
                    ]
                ]
            },
            {
                "id": "433c29573c06f6d3",
                "type": "aggregator",
                "z": "3146dc7f943a9f88",
                "name": "Max",
                "topic": "max",
                "intervalCount": "1",
                "intervalUnits": "d",
                "submitIncompleteInterval": true,
                "submitPerTopic": false,
                "aggregationType": "max",
                "x": 330,
                "y": 240,
                "wires": [
                    [
                        "b15148679b3cdfe5"
                    ]
                ]
            },
            {
                "id": "73aeeccad69fe289",
                "type": "join",
                "z": "3146dc7f943a9f88",
                "name": "",
                "mode": "custom",
                "build": "object",
                "property": "payload",
                "propertyType": "msg",
                "key": "topic",
                "joiner": "\\n",
                "joinerType": "str",
                "accumulate": true,
                "timeout": "60",
                "count": "3",
                "reduceRight": false,
                "reduceExp": "",
                "reduceInit": "",
                "reduceInitType": "",
                "reduceFixup": "",
                "x": 710,
                "y": 120,
                "wires": [
                    [
                        "7c8ab4f951a11b2c"
                    ]
                ]
            },
            {
                "id": "7c8ab4f951a11b2c",
                "type": "change",
                "z": "3146dc7f943a9f88",
                "name": "",
                "rules": [
                    {
                        "t": "set",
                        "p": "topic",
                        "pt": "msg",
                        "to": "meanTmp",
                        "tot": "str"
                    }
                ],
                "action": "",
                "property": "",
                "from": "",
                "to": "",
                "reg": false,
                "x": 880,
                "y": 120,
                "wires": [
                    [
                        "95c361f9dc2dcb9f"
                    ]
                ]
            },
            {
                "id": "95c361f9dc2dcb9f",
                "type": "subflow:ae673cf6cd8433a0",
                "z": "3146dc7f943a9f88",
                "name": "Datum in Topic",
                "env": [
                    {
                        "name": "basePath",
                        "value": "Heizung2.MonatsTabellen",
                        "type": "str"
                    }
                ],
                "x": 1080,
                "y": 120,
                "wires": [
                    [
                        "3c1d0873dbaa5be4"
                    ]
                ]
            },
            {
                "id": "ae4126ab345fb69f",
                "type": "delay",
                "z": "3146dc7f943a9f88",
                "name": "",
                "pauseType": "delay",
                "timeout": "5",
                "timeoutUnits": "seconds",
                "rate": "1",
                "nbRateUnits": "1",
                "rateUnits": "second",
                "randomFirst": "1",
                "randomLast": "5",
                "randomUnits": "seconds",
                "drop": false,
                "allowrate": false,
                "outputs": 1,
                "x": 500,
                "y": 180,
                "wires": [
                    [
                        "73aeeccad69fe289"
                    ]
                ]
            },
            {
                "id": "b15148679b3cdfe5",
                "type": "delay",
                "z": "3146dc7f943a9f88",
                "name": "",
                "pauseType": "delay",
                "timeout": "10",
                "timeoutUnits": "seconds",
                "rate": "1",
                "nbRateUnits": "1",
                "rateUnits": "second",
                "randomFirst": "1",
                "randomLast": "5",
                "randomUnits": "seconds",
                "drop": false,
                "allowrate": false,
                "outputs": 1,
                "x": 510,
                "y": 240,
                "wires": [
                    [
                        "73aeeccad69fe289"
                    ]
                ]
            },
            {
                "id": "3c1d0873dbaa5be4",
                "type": "change",
                "z": "3146dc7f943a9f88",
                "name": "Save to Array",
                "rules": [
                    {
                        "t": "set",
                        "p": "numDaysOfMonth",
                        "pt": "msg",
                        "to": "$moment().endOf(\"month\").date()",
                        "tot": "jsonata"
                    },
                    {
                        "t": "set",
                        "p": "array",
                        "pt": "msg",
                        "to": "[0..numDaysOfMonth-1].($:=0)",
                        "tot": "jsonata"
                    },
                    {
                        "t": "set",
                        "p": "dayOfMonth",
                        "pt": "msg",
                        "to": "$moment().date()",
                        "tot": "jsonata"
                    },
                    {
                        "t": "set",
                        "p": "payload",
                        "pt": "msg",
                        "to": "array#$i.($i=$$.dayOfMonth -1 ? $$.payload : $)",
                        "tot": "jsonata"
                    }
                ],
                "action": "",
                "property": "",
                "from": "",
                "to": "",
                "reg": false,
                "x": 780,
                "y": 220,
                "wires": [
                    [
                        "642675605be1e9ba"
                    ]
                ]
            },
            {
                "id": "12be244299d16c40",
                "type": "ioBroker out",
                "z": "3146dc7f943a9f88",
                "name": "",
                "topic": "",
                "ack": "true",
                "autoCreate": "true",
                "stateName": "",
                "role": "",
                "payloadType": "",
                "readonly": "false",
                "stateUnit": "°C",
                "stateMin": "",
                "stateMax": "",
                "x": 1140,
                "y": 220,
                "wires": []
            },
            {
                "id": "642675605be1e9ba",
                "type": "json",
                "z": "3146dc7f943a9f88",
                "name": "",
                "property": "payload",
                "action": "",
                "pretty": false,
                "x": 970,
                "y": 220,
                "wires": [
                    [
                        "12be244299d16c40"
                    ]
                ]
            },
            {
                "id": "ced5eb48c2a75d2e",
                "type": "ioBroker in",
                "z": "3146dc7f943a9f88",
                "name": "Aussentemperatur",
                "attrname": "payload",
                "topic": "mqtt.0.vitocal.outside_temperature",
                "payloadType": "value",
                "onlyack": "",
                "func": "all",
                "gap": "",
                "fireOnStart": "false",
                "outFormat": "MQTT",
                "x": 130,
                "y": 180,
                "wires": [
                    [
                        "8736b5d7e2d039bf",
                        "c628f16d0dd75f88",
                        "433c29573c06f6d3"
                    ]
                ]
            }
        ]
        
        mickym 1 Reply Last reply Reply Quote 0
        • mickym
          mickym Most Active @MartyBr last edited by

          @martybr Warum die delay Nodes?
          bei der JOIN Node:

          c1854594-3d88-4356-bae5-fdbef924f7b6-image.png

          Wenn Du den Haken rausmachst, dann wartet diee JOIN Node bis sie von allen aggregator Nodes ihre Nachricht bekommen hat.

          9ae1ee57-7028-4524-a848-e02e215556c8-image.png

          [
             {
                 "id": "ae673cf6cd8433a0",
                 "type": "subflow",
                 "name": "Datum in Topic",
                 "info": "",
                 "category": "",
                 "in": [
                     {
                         "x": 60,
                         "y": 80,
                         "wires": [
                             {
                                 "id": "2e1ea06b2e94bf1a"
                             }
                         ]
                     }
                 ],
                 "out": [
                     {
                         "x": 820,
                         "y": 80,
                         "wires": [
                             {
                                 "id": "fc37f5f9d2b0297b",
                                 "port": 0
                             }
                         ]
                     }
                 ],
                 "env": [
                     {
                         "name": "basePath",
                         "type": "str",
                         "value": "Test1.Test2"
                     }
                 ],
                 "meta": {},
                 "color": "#DDAA99"
             },
             {
                 "id": "2e1ea06b2e94bf1a",
                 "type": "change",
                 "z": "ae673cf6cd8433a0",
                 "name": "",
                 "rules": [
                     {
                         "t": "set",
                         "p": "datum",
                         "pt": "msg",
                         "to": "$moment().locale('de').format('YYYY.MMMM')",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 230,
                 "y": 80,
                 "wires": [
                     [
                         "0e8de9437c3c420a"
                     ]
                 ]
             },
             {
                 "id": "0e8de9437c3c420a",
                 "type": "change",
                 "z": "ae673cf6cd8433a0",
                 "name": "März zu Maerz",
                 "rules": [
                     {
                         "t": "change",
                         "p": "datum",
                         "pt": "msg",
                         "from": "März",
                         "fromt": "str",
                         "to": "Maerz",
                         "tot": "str"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 440,
                 "y": 80,
                 "wires": [
                     [
                         "fc37f5f9d2b0297b"
                     ]
                 ]
             },
             {
                 "id": "fc37f5f9d2b0297b",
                 "type": "change",
                 "z": "ae673cf6cd8433a0",
                 "name": "",
                 "rules": [
                     {
                         "t": "set",
                         "p": "topic",
                         "pt": "msg",
                         "to": "\"0_userdata.0.\"  & $env(\"basePath\") & \".\" & datum & \".\" & topic",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 660,
                 "y": 80,
                 "wires": [
                     []
                 ]
             },
             {
                 "id": "8736b5d7e2d039bf",
                 "type": "aggregator",
                 "z": "7e6af0015415146d",
                 "name": "Mean",
                 "topic": "mean",
                 "intervalCount": "1",
                 "intervalUnits": "d",
                 "submitIncompleteInterval": true,
                 "submitPerTopic": false,
                 "aggregationType": "mean",
                 "x": 350,
                 "y": 7480,
                 "wires": [
                     [
                         "73aeeccad69fe289"
                     ]
                 ]
             },
             {
                 "id": "c628f16d0dd75f88",
                 "type": "aggregator",
                 "z": "7e6af0015415146d",
                 "name": "Min",
                 "topic": "min",
                 "intervalCount": "1",
                 "intervalUnits": "d",
                 "submitIncompleteInterval": true,
                 "submitPerTopic": false,
                 "aggregationType": "min",
                 "x": 350,
                 "y": 7420,
                 "wires": [
                     [
                         "73aeeccad69fe289"
                     ]
                 ]
             },
             {
                 "id": "433c29573c06f6d3",
                 "type": "aggregator",
                 "z": "7e6af0015415146d",
                 "name": "Max",
                 "topic": "max",
                 "intervalCount": "1",
                 "intervalUnits": "d",
                 "submitIncompleteInterval": true,
                 "submitPerTopic": false,
                 "aggregationType": "max",
                 "x": 350,
                 "y": 7540,
                 "wires": [
                     [
                         "73aeeccad69fe289"
                     ]
                 ]
             },
             {
                 "id": "73aeeccad69fe289",
                 "type": "join",
                 "z": "7e6af0015415146d",
                 "name": "",
                 "mode": "custom",
                 "build": "object",
                 "property": "payload",
                 "propertyType": "msg",
                 "key": "topic",
                 "joiner": "\\n",
                 "joinerType": "str",
                 "accumulate": false,
                 "timeout": "",
                 "count": "3",
                 "reduceRight": false,
                 "reduceExp": "",
                 "reduceInit": "",
                 "reduceInitType": "",
                 "reduceFixup": "",
                 "x": 530,
                 "y": 7480,
                 "wires": [
                     [
                         "7c8ab4f951a11b2c"
                     ]
                 ]
             },
             {
                 "id": "7c8ab4f951a11b2c",
                 "type": "change",
                 "z": "7e6af0015415146d",
                 "name": "",
                 "rules": [
                     {
                         "t": "set",
                         "p": "topic",
                         "pt": "msg",
                         "to": "meanTmp",
                         "tot": "str"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 720,
                 "y": 7480,
                 "wires": [
                     [
                         "95c361f9dc2dcb9f"
                     ]
                 ]
             },
             {
                 "id": "95c361f9dc2dcb9f",
                 "type": "subflow:ae673cf6cd8433a0",
                 "z": "7e6af0015415146d",
                 "name": "Datum in Topic",
                 "env": [
                     {
                         "name": "basePath",
                         "value": "Heizung2.MonatsTabellen",
                         "type": "str"
                     }
                 ],
                 "x": 920,
                 "y": 7480,
                 "wires": [
                     [
                         "3c1d0873dbaa5be4"
                     ]
                 ]
             },
             {
                 "id": "3c1d0873dbaa5be4",
                 "type": "change",
                 "z": "7e6af0015415146d",
                 "name": "Save to Array",
                 "rules": [
                     {
                         "t": "set",
                         "p": "numDaysOfMonth",
                         "pt": "msg",
                         "to": "$moment().endOf(\"month\").date()",
                         "tot": "jsonata"
                     },
                     {
                         "t": "set",
                         "p": "array",
                         "pt": "msg",
                         "to": "[0..numDaysOfMonth-1].($:=0)",
                         "tot": "jsonata"
                     },
                     {
                         "t": "set",
                         "p": "dayOfMonth",
                         "pt": "msg",
                         "to": "$moment().date()",
                         "tot": "jsonata"
                     },
                     {
                         "t": "set",
                         "p": "payload",
                         "pt": "msg",
                         "to": "array#$i.($i=$$.dayOfMonth -1 ? $$.payload : $)",
                         "tot": "jsonata"
                     }
                 ],
                 "action": "",
                 "property": "",
                 "from": "",
                 "to": "",
                 "reg": false,
                 "x": 1120,
                 "y": 7480,
                 "wires": [
                     [
                         "642675605be1e9ba"
                     ]
                 ]
             },
             {
                 "id": "642675605be1e9ba",
                 "type": "json",
                 "z": "7e6af0015415146d",
                 "name": "",
                 "property": "payload",
                 "action": "",
                 "pretty": false,
                 "x": 1290,
                 "y": 7480,
                 "wires": [
                     [
                         "12be244299d16c40"
                     ]
                 ]
             },
             {
                 "id": "ced5eb48c2a75d2e",
                 "type": "ioBroker in",
                 "z": "7e6af0015415146d",
                 "name": "Aussentemperatur",
                 "attrname": "payload",
                 "topic": "mqtt.0.vitocal.outside_temperature",
                 "payloadType": "value",
                 "onlyack": "",
                 "func": "all",
                 "gap": "",
                 "fireOnStart": "false",
                 "outFormat": "MQTT",
                 "x": 150,
                 "y": 7480,
                 "wires": [
                     [
                         "8736b5d7e2d039bf",
                         "c628f16d0dd75f88",
                         "433c29573c06f6d3"
                     ]
                 ]
             },
             {
                 "id": "12be244299d16c40",
                 "type": "ioBroker out",
                 "z": "7e6af0015415146d",
                 "name": "",
                 "topic": "",
                 "ack": "true",
                 "autoCreate": "true",
                 "stateName": "",
                 "role": "",
                 "payloadType": "",
                 "readonly": "false",
                 "stateUnit": "°C",
                 "stateMin": "",
                 "stateMax": "",
                 "x": 1420,
                 "y": 7520,
                 "wires": []
             }
          ]
          

          M 1 Reply Last reply Reply Quote 0
          • M
            MartyBr @mickym last edited by

            @mickym
            Mit den Delay Nodes kommen sie in der richtigen Abfolge. Das war der Grund.

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

              @martybr Wieso braucht es eine Abfolge - nur wegen dem Verständnis - es wird doch eh alles in einem Objekt gesammelt. Im Prinzip ist die Reihenfolge der Eigenschaften in einem Objekt doch völlig egal.

              Wenn man unbedingt eine Reihenfolge erzwingen wird, dann strukturiert man das Objekt einfach um

              a6c962b9-b851-4e5c-8f25-a4368c2c043e-image.png

              Hier zum Ausprobieren:

              [
                 {
                     "id": "c0fbc5b325e9ee2b",
                     "type": "join",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "mode": "custom",
                     "build": "object",
                     "property": "payload",
                     "propertyType": "msg",
                     "key": "topic",
                     "joiner": "\\n",
                     "joinerType": "str",
                     "accumulate": false,
                     "timeout": "",
                     "count": "3",
                     "reduceRight": false,
                     "reduceExp": "",
                     "reduceInit": "",
                     "reduceInitType": "",
                     "reduceFixup": "",
                     "x": 690,
                     "y": 6840,
                     "wires": [
                         [
                             "3a61e25c93e112af",
                             "435389345c46e069"
                         ]
                     ]
                 },
                 {
                     "id": "5c037052db7f4603",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         },
                         {
                             "p": "topic",
                             "vt": "str"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "min",
                     "payload": "19",
                     "payloadType": "num",
                     "x": 510,
                     "y": 6800,
                     "wires": [
                         [
                             "86eed7a3587a28dd"
                         ]
                     ]
                 },
                 {
                     "id": "e37f98364b345ba6",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         },
                         {
                             "p": "topic",
                             "vt": "str"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "mean",
                     "payload": "20",
                     "payloadType": "num",
                     "x": 500,
                     "y": 6840,
                     "wires": [
                         [
                             "86eed7a3587a28dd"
                         ]
                     ]
                 },
                 {
                     "id": "7750f86da52a7e7a",
                     "type": "inject",
                     "z": "7e6af0015415146d",
                     "name": "",
                     "props": [
                         {
                             "p": "payload"
                         },
                         {
                             "p": "topic",
                             "vt": "str"
                         }
                     ],
                     "repeat": "",
                     "crontab": "",
                     "once": false,
                     "onceDelay": 0.1,
                     "topic": "max",
                     "payload": "22",
                     "payloadType": "num",
                     "x": 510,
                     "y": 6880,
                     "wires": [
                         [
                             "86eed7a3587a28dd"
                         ]
                     ]
                 },
                 {
                     "id": "91e8242275e261cf",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "Objekt",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 1050,
                     "y": 6840,
                     "wires": []
                 },
                 {
                     "id": "3a61e25c93e112af",
                     "type": "change",
                     "z": "7e6af0015415146d",
                     "name": "Formatiere Objekt",
                     "rules": [
                         {
                             "t": "set",
                             "p": "payload",
                             "pt": "msg",
                             "to": "payload.{\t    \"min\": min, \t    \"mean\": mean, \t    \"max\": max\t}",
                             "tot": "jsonata"
                         }
                     ],
                     "action": "",
                     "property": "",
                     "from": "",
                     "to": "",
                     "reg": false,
                     "x": 870,
                     "y": 6840,
                     "wires": [
                         [
                             "91e8242275e261cf"
                         ]
                     ]
                 },
                 {
                     "id": "435389345c46e069",
                     "type": "debug",
                     "z": "7e6af0015415146d",
                     "name": "unsortiert",
                     "active": true,
                     "tosidebar": true,
                     "console": false,
                     "tostatus": false,
                     "complete": "payload",
                     "targetType": "msg",
                     "statusVal": "",
                     "statusType": "auto",
                     "x": 840,
                     "y": 6780,
                     "wires": []
                 },
                 {
                     "id": "86eed7a3587a28dd",
                     "type": "junction",
                     "z": "7e6af0015415146d",
                     "x": 600,
                     "y": 6840,
                     "wires": [
                         [
                             "c0fbc5b325e9ee2b"
                         ]
                     ]
                 }
              ]
              

              Es ist wichtig, dass Du diese einfachen Umstrukturierungsmöglichkeiten von Objekten verstehst, das ist ein riesiger Vorteil gegenüber den Puzzlefreunden. Du kannst die "Attribute" umbenennen, welche weglassen, welche hinzufügen etc.

              https://docs.jsonata.org/construction#object-constructors

              M 1 Reply Last reply Reply Quote 0
              • M
                MartyBr @mickym last edited by

                @mickym
                Der Flow funktioniert (natürlich 😊 ) und ich habe ihn direkt in meinen Testflow eingebaut.

                JSONata scheint ja mächtige Funktionen zu haben.
                Das habe ich was zu lesen.

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

                  @martybr sagte in Wert in dynamische Struktur im ioBroker ablegen:

                  JSONata scheint ja mächtige Funktionen zu haben.

                  Ja und was ich nicht verstehe, dass auch die Puzzlefreunde viel zu wenige Gebrauch von dieser tollen Bibliothek machen:
                  d313bc8c-55fe-4c80-967e-d03620d4e04c-image.png

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    MartyBr last edited by

                    @mickym
                    Ich habe mal eine Suche über das Forum laufen lassen. Es sind schon einige Threads dazu im Forum. Nach meiner kurzen Recherche mit Durchweg sehr positiver Resonanz.
                    Das motiviert weiter 👍

                    1 Reply Last reply Reply Quote 0
                    • M
                      MartyBr @mickym last edited by

                      @mickym
                      Ich habe ein neues Problem, wo ich nicht weiterkomme.

                      Die Idee ist, einen Datenpunkt (den täglichen Strombezug) um 00:05 Uhr mit einem Zeitstempel vom Vortag (also von dem Tag, an dem der Strombezug angefallen ist) in Influxdb2 zu speichern.

                      In Blockly gibt es dazu entsprechende Funktionsblöcke, die ich aktuell zum speichern nutze.

                      Meine Vorarbeit hier:

                      1. Generiere globale Variable "gestern" mit dem Vortagsdatum
                      2. Setze timestamp auf "gestern"
                      3. Speicher Datenpunkt in Influxdb

                      Der Punkt 3 scheitert.

                      Hier der Flow:
                      Bildschirmfoto 2025-02-11 um 20.36.16.png

                      Hier der Fehler:
                      Bildschirmfoto 2025-02-11 um 20.36.35.png

                      Hier der Code:

                      [
                          {
                              "id": "3af60aa82603a460",
                              "type": "inject",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "",
                              "props": [
                                  {
                                      "p": "payload"
                                  },
                                  {
                                      "p": "topic",
                                      "vt": "str"
                                  }
                              ],
                              "repeat": "",
                              "crontab": "",
                              "once": false,
                              "onceDelay": 0.1,
                              "topic": "",
                              "payload": "",
                              "payloadType": "date",
                              "x": 160,
                              "y": 840,
                              "wires": [
                                  [
                                      "7ccee6b8c9cf5ec1"
                                  ]
                              ]
                          },
                          {
                              "id": "7ccee6b8c9cf5ec1",
                              "type": "change",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "",
                              "rules": [
                                  {
                                      "t": "set",
                                      "p": "payload",
                                      "pt": "msg",
                                      "to": "$moment().locale('de').add(-24,'hours')",
                                      "tot": "jsonata"
                                  }
                              ],
                              "action": "",
                              "property": "",
                              "from": "",
                              "to": "",
                              "reg": false,
                              "x": 370,
                              "y": 840,
                              "wires": [
                                  [
                                      "1ea6bb475e356038"
                                  ]
                              ]
                          },
                          {
                              "id": "1ea6bb475e356038",
                              "type": "change",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "",
                              "rules": [
                                  {
                                      "t": "set",
                                      "p": "payload",
                                      "pt": "msg",
                                      "to": "gestern",
                                      "tot": "global"
                                  }
                              ],
                              "action": "",
                              "property": "",
                              "from": "",
                              "to": "",
                              "reg": false,
                              "x": 610,
                              "y": 840,
                              "wires": [
                                  []
                              ]
                          },
                          {
                              "id": "f26c4899a33b8475",
                              "type": "debug",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "debug 189",
                              "active": true,
                              "tosidebar": true,
                              "console": false,
                              "tostatus": false,
                              "complete": "false",
                              "statusVal": "",
                              "statusType": "auto",
                              "x": 630,
                              "y": 920,
                              "wires": []
                          },
                          {
                              "id": "406857da365d597c",
                              "type": "debug",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "debug 190",
                              "active": true,
                              "tosidebar": true,
                              "console": false,
                              "tostatus": false,
                              "complete": "false",
                              "statusVal": "",
                              "statusType": "auto",
                              "x": 390,
                              "y": 920,
                              "wires": []
                          },
                          {
                              "id": "b8a9409a42dbae35",
                              "type": "debug",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "debug 188",
                              "active": true,
                              "tosidebar": true,
                              "console": false,
                              "tostatus": false,
                              "complete": "false",
                              "statusVal": "",
                              "statusType": "auto",
                              "x": 150,
                              "y": 920,
                              "wires": []
                          },
                          {
                              "id": "12f8e712328509a0",
                              "type": "inject",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "",
                              "props": [
                                  {
                                      "p": "payload"
                                  },
                                  {
                                      "p": "topic",
                                      "vt": "str"
                                  }
                              ],
                              "repeat": "",
                              "crontab": "",
                              "once": false,
                              "onceDelay": 0.1,
                              "topic": "test",
                              "payload": "gestern",
                              "payloadType": "global",
                              "x": 170,
                              "y": 980,
                              "wires": [
                                  [
                                      "b8a9409a42dbae35",
                                      "8529604e9d2970d9"
                                  ]
                              ]
                          },
                          {
                              "id": "8529604e9d2970d9",
                              "type": "change",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "",
                              "rules": [
                                  {
                                      "t": "set",
                                      "p": "payload",
                                      "pt": "msg",
                                      "to": "",
                                      "tot": "date"
                                  }
                              ],
                              "action": "",
                              "property": "",
                              "from": "",
                              "to": "",
                              "reg": false,
                              "x": 390,
                              "y": 980,
                              "wires": [
                                  [
                                      "a7394618f04eb825",
                                      "406857da365d597c"
                                  ]
                              ]
                          },
                          {
                              "id": "a7394618f04eb825",
                              "type": "change",
                              "z": "3ebdbbcf49e0ac40",
                              "name": "",
                              "rules": [
                                  {
                                      "t": "set",
                                      "p": "topic",
                                      "pt": "msg",
                                      "to": "test-topic2",
                                      "tot": "str"
                                  }
                              ],
                              "action": "",
                              "property": "",
                              "from": "",
                              "to": "",
                              "reg": false,
                              "x": 600,
                              "y": 980,
                              "wires": [
                                  [
                                      "f26c4899a33b8475",
                                      "031edbcc8819c8f7"
                                  ]
                              ]
                          },
                          {
                              "id": "031edbcc8819c8f7",
                              "type": "influxdb batch",
                              "z": "3ebdbbcf49e0ac40",
                              "influxdb": "4d3e21e6d3a637e2",
                              "precision": "",
                              "retentionPolicy": "",
                              "name": "",
                              "database": "database",
                              "precisionV18FluxV20": "ms",
                              "retentionPolicyV18Flux": "",
                              "org": "Home",
                              "bucket": "iobroker",
                              "x": 650,
                              "y": 1080,
                              "wires": []
                          },
                          {
                              "id": "4d3e21e6d3a637e2",
                              "type": "influxdb",
                              "hostname": "127.0.0.1",
                              "port": "8086",
                              "protocol": "http",
                              "database": "database",
                              "name": "influx2",
                              "usetls": false,
                              "tls": "",
                              "influxdbVersion": "2.0",
                              "url": "http://192.168.178.111:8086",
                              "timeout": "",
                              "rejectUnauthorized": false
                          }
                      ]
                      

                      Im Forum wird über Probleme beim Ändern vom Timestamp beim speichern in Influx diskutiert. Gibt es einen Tipp, wie ich den Datenpunkt mit dem geänderten Timestamp in Influxdb2 speichern kann?

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

                        Timestamps kannst Du meiner Meinung nicht mit den influx Out Node setzen, sondern Du brauchst die Batch Nodes.

                        In die Batch Nodes kommen Objekte

                        c14197a3-bf34-4e2d-b9bd-70f45fc4d12d-image.png

                        Falls Du noch tags hast, dann ist das genauso ein Objekt wie fields.

                        fcb9a742-eae8-443a-a81e-d41c1966733e-image.png

                        M 1 Reply Last reply Reply Quote 0
                        • M
                          MartyBr @mickym last edited by

                          @mickym
                          Okay, probiere ich aus.

                          1 Reply Last reply Reply Quote 0
                          • M
                            MartyBr last edited by

                            @mickym
                            Ich habe es mit der Change Node nicht hinbekommen. Mit einer Funktion und der normalen influx-out (nicht influx-batch) funktioniert es. In der Function ziehe ich 12 Stunden ab (43200 Sek.) und schreibe es in Time:

                            Bildschirmfoto 2025-02-12 um 09.55.33.png

                            [
                                {
                                    "id": "88f12c4fab5f8e9b",
                                    "type": "mqtt in",
                                    "z": "2987494fe96ff2fb",
                                    "name": "Vitovent ZuluftTemp",
                                    "topic": "vitocal/ZuluftTemp",
                                    "qos": "0",
                                    "datatype": "auto-detect",
                                    "broker": "bcf16446273a18e6",
                                    "nl": false,
                                    "rap": true,
                                    "rh": 0,
                                    "inputs": 0,
                                    "x": 130,
                                    "y": 1040,
                                    "wires": [
                                        [
                                            "0e5f1ebe84c213fc"
                                        ]
                                    ]
                                },
                                {
                                    "id": "0e5f1ebe84c213fc",
                                    "type": "change",
                                    "z": "2987494fe96ff2fb",
                                    "name": "",
                                    "rules": [
                                        {
                                            "t": "set",
                                            "p": "topic",
                                            "pt": "msg",
                                            "to": "zuluft",
                                            "tot": "str"
                                        }
                                    ],
                                    "action": "",
                                    "property": "",
                                    "from": "",
                                    "to": "",
                                    "reg": false,
                                    "x": 340,
                                    "y": 1040,
                                    "wires": [
                                        [
                                            "a8b5d292c778eeb7"
                                        ]
                                    ]
                                },
                                {
                                    "id": "a8b5d292c778eeb7",
                                    "type": "function",
                                    "z": "2987494fe96ff2fb",
                                    "name": "function 22",
                                    "func": "function getHistoryTimestamp(seconds) {\n    var historyDate = new Date(Date.now() - (seconds * 1000));\n    return historyDate.getTime();\n}\n\nvar historyTimestamp = getHistoryTimestamp(43200);\n\nmsg.payload = { value: msg.payload, time: historyTimestamp }\n\nreturn msg;",
                                    "outputs": 1,
                                    "timeout": 0,
                                    "noerr": 0,
                                    "initialize": "",
                                    "finalize": "",
                                    "libs": [],
                                    "x": 550,
                                    "y": 1040,
                                    "wires": [
                                        [
                                            "7f48f630a7765a4a"
                                        ]
                                    ]
                                },
                                {
                                    "id": "7f48f630a7765a4a",
                                    "type": "influxdb out",
                                    "z": "2987494fe96ff2fb",
                                    "influxdb": "5d7e54ca.019d44",
                                    "name": "outside",
                                    "measurement": "test.test3.outside",
                                    "precision": "",
                                    "retentionPolicy": "",
                                    "database": "database",
                                    "precisionV18FluxV20": "ms",
                                    "retentionPolicyV18Flux": "",
                                    "org": "Home",
                                    "bucket": "iobroker",
                                    "x": 740,
                                    "y": 1040,
                                    "wires": []
                                },
                                {
                                    "id": "bcf16446273a18e6",
                                    "type": "mqtt-broker",
                                    "name": "Mosquito",
                                    "broker": "192.168.178.10",
                                    "port": 1883,
                                    "clientid": "",
                                    "autoConnect": true,
                                    "usetls": false,
                                    "protocolVersion": 4,
                                    "keepalive": 60,
                                    "cleansession": true,
                                    "autoUnsubscribe": true,
                                    "birthTopic": "",
                                    "birthQos": "0",
                                    "birthRetain": "false",
                                    "birthPayload": "",
                                    "birthMsg": {},
                                    "closeTopic": "",
                                    "closeQos": "0",
                                    "closeRetain": "false",
                                    "closePayload": "",
                                    "closeMsg": {},
                                    "willTopic": "",
                                    "willQos": "0",
                                    "willRetain": "false",
                                    "willPayload": "",
                                    "willMsg": {},
                                    "userProps": "",
                                    "sessionExpiry": ""
                                },
                                {
                                    "id": "5d7e54ca.019d44",
                                    "type": "influxdb",
                                    "hostname": "127.0.0.1",
                                    "port": "8086",
                                    "protocol": "http",
                                    "database": "database",
                                    "name": "Influxdb2",
                                    "usetls": false,
                                    "tls": "d50d0c9f.31e858",
                                    "influxdbVersion": "2.0",
                                    "url": "http://192.168.178.111:8086",
                                    "timeout": "",
                                    "rejectUnauthorized": false
                                },
                                {
                                    "id": "d50d0c9f.31e858",
                                    "type": "tls-config",
                                    "name": "",
                                    "cert": "",
                                    "key": "",
                                    "ca": "",
                                    "certname": "",
                                    "keyname": "",
                                    "caname": "",
                                    "servername": "",
                                    "verifyservercert": false
                                }
                            ]
                            

                            Eigentlich müsste es mit einer Change und JSONata auch funktionieren.

                            Hier ein Versuch:

                            [
                                {
                                    "id": "26d58a13f8c13bd6",
                                    "type": "change",
                                    "z": "2987494fe96ff2fb",
                                    "name": "",
                                    "rules": [
                                        {
                                            "t": "set",
                                            "p": "payload",
                                            "pt": "msg",
                                            "to": "payload.{    \"measurement\":msg.payload,    \"timestamp\":$millis() }",
                                            "tot": "jsonata"
                                        },
                                        {
                                            "t": "set",
                                            "p": "topic",
                                            "pt": "msg",
                                            "to": "zuluft",
                                            "tot": "str"
                                        }
                                    ],
                                    "action": "",
                                    "property": "",
                                    "from": "",
                                    "to": "",
                                    "reg": false,
                                    "x": 370,
                                    "y": 800,
                                    "wires": [
                                        [
                                            "6a3df3f89e66d61c"
                                        ]
                                    ]
                                }
                            ]
                            

                            Leider funktioniert es nicht. Kannst du mir hier einen Tipp geben?

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

                              @martybr Das ist eigentlich ganz einfach:

                              c705030e-7ff8-4f7f-be1c-c3e494dfaa28-image.png

                              1. Da die payload kein Objekt sondern ein skalarer Wert ist, kann auch kein Objekt neu definiert werden. Also musst Du der payload Eigenschaft einfach ein Objekt zuweisen.
                              2. In einer ChangeNode gibst Du das Wurzelobjekt - also das Nachrichtenobjekt msg - nie an. Das ist in der ChangeNode bereits festgelegt, deswegen kann man auch nicht auf Eigenschaften außerhalb des Nachrichtenobjektes zugreifen.

                              Deine ChangeNode hätte als bereits wie folgt funktioniert:

                              94254ba6-f965-4089-82a4-45397591c8de-image.png

                              Um die gleiche Ausgabe wie mit Deinem Javascriptcode zu erhalten:

                              function getHistoryTimestamp(seconds) {
                                  var historyDate = new Date(Date.now() - (seconds * 1000));
                                  return historyDate.getTime();
                              }
                              
                              var historyTimestamp = getHistoryTimestamp(43200);
                              
                              msg.payload = { value: msg.payload, time: historyTimestamp }
                              
                              return msg;
                              

                              schreibst Du in JSONATA also nur folgendes:

                              {
                                 "value":payload,
                                 "time": $millis() -43200*1000
                              }
                              

                              87a7bba6-3113-46a7-9b98-d953b8690fe2-image.png

                              Hier wieder alles zusammen zum Import:

                              [
                                  {
                                      "id": "88f12c4fab5f8e9b",
                                      "type": "mqtt in",
                                      "z": "3b40b768dd849499",
                                      "d": true,
                                      "name": "Vitovent ZuluftTemp",
                                      "topic": "vitocal/ZuluftTemp",
                                      "qos": "0",
                                      "datatype": "auto-detect",
                                      "broker": "bcf16446273a18e6",
                                      "nl": false,
                                      "rap": true,
                                      "rh": 0,
                                      "inputs": 0,
                                      "x": 310,
                                      "y": 160,
                                      "wires": [
                                          [
                                              "0e5f1ebe84c213fc"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "0e5f1ebe84c213fc",
                                      "type": "change",
                                      "z": "3b40b768dd849499",
                                      "name": "",
                                      "rules": [
                                          {
                                              "t": "set",
                                              "p": "topic",
                                              "pt": "msg",
                                              "to": "zuluft",
                                              "tot": "str"
                                          }
                                      ],
                                      "action": "",
                                      "property": "",
                                      "from": "",
                                      "to": "",
                                      "reg": false,
                                      "x": 540,
                                      "y": 220,
                                      "wires": [
                                          [
                                              "a8b5d292c778eeb7"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "a8b5d292c778eeb7",
                                      "type": "function",
                                      "z": "3b40b768dd849499",
                                      "name": "function 22",
                                      "func": "function getHistoryTimestamp(seconds) {\n    var historyDate = new Date(Date.now() - (seconds * 1000));\n    return historyDate.getTime();\n}\n\nvar historyTimestamp = getHistoryTimestamp(43200);\n\nmsg.payload = { value: msg.payload, time: historyTimestamp }\n\nreturn msg;",
                                      "outputs": 1,
                                      "timeout": 0,
                                      "noerr": 0,
                                      "initialize": "",
                                      "finalize": "",
                                      "libs": [],
                                      "x": 750,
                                      "y": 220,
                                      "wires": [
                                          [
                                              "7f48f630a7765a4a",
                                              "d844ef86e37ba92c"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "7f48f630a7765a4a",
                                      "type": "influxdb out",
                                      "z": "3b40b768dd849499",
                                      "d": true,
                                      "influxdb": "5d7e54ca.019d44",
                                      "name": "outside",
                                      "measurement": "test.test3.outside",
                                      "precision": "",
                                      "retentionPolicy": "",
                                      "database": "database",
                                      "precisionV18FluxV20": "ms",
                                      "retentionPolicyV18Flux": "",
                                      "org": "Home",
                                      "bucket": "iobroker",
                                      "x": 940,
                                      "y": 220,
                                      "wires": []
                                  },
                                  {
                                      "id": "26d58a13f8c13bd6",
                                      "type": "change",
                                      "z": "3b40b768dd849499",
                                      "d": true,
                                      "name": "",
                                      "rules": [
                                          {
                                              "t": "set",
                                              "p": "payload",
                                              "pt": "msg",
                                              "to": "{\t   \"measurement\":payload,\t   \"timestamp\":$millis() \t}",
                                              "tot": "jsonata"
                                          },
                                          {
                                              "t": "set",
                                              "p": "topic",
                                              "pt": "msg",
                                              "to": "zuluft",
                                              "tot": "str"
                                          }
                                      ],
                                      "action": "",
                                      "property": "",
                                      "from": "",
                                      "to": "",
                                      "reg": false,
                                      "x": 570,
                                      "y": 340,
                                      "wires": [
                                          [
                                              "7adb8e9803e35709"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "7b4222c2e177b48f",
                                      "type": "inject",
                                      "z": "3b40b768dd849499",
                                      "name": "",
                                      "props": [
                                          {
                                              "p": "payload"
                                          },
                                          {
                                              "p": "topic",
                                              "vt": "str"
                                          }
                                      ],
                                      "repeat": "",
                                      "crontab": "",
                                      "once": false,
                                      "onceDelay": 0.1,
                                      "topic": "",
                                      "payload": "21",
                                      "payloadType": "num",
                                      "x": 310,
                                      "y": 220,
                                      "wires": [
                                          [
                                              "0e5f1ebe84c213fc",
                                              "26d58a13f8c13bd6",
                                              "18c22fa209a126c5"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "d844ef86e37ba92c",
                                      "type": "debug",
                                      "z": "3b40b768dd849499",
                                      "name": "Ausgabe",
                                      "active": true,
                                      "tosidebar": true,
                                      "console": false,
                                      "tostatus": false,
                                      "complete": "payload",
                                      "targetType": "msg",
                                      "statusVal": "",
                                      "statusType": "auto",
                                      "x": 940,
                                      "y": 160,
                                      "wires": []
                                  },
                                  {
                                      "id": "7adb8e9803e35709",
                                      "type": "debug",
                                      "z": "3b40b768dd849499",
                                      "name": "Ausgabe JSONATA",
                                      "active": true,
                                      "tosidebar": true,
                                      "console": false,
                                      "tostatus": false,
                                      "complete": "payload",
                                      "targetType": "msg",
                                      "statusVal": "",
                                      "statusType": "auto",
                                      "x": 830,
                                      "y": 340,
                                      "wires": []
                                  },
                                  {
                                      "id": "18c22fa209a126c5",
                                      "type": "change",
                                      "z": "3b40b768dd849499",
                                      "name": "",
                                      "rules": [
                                          {
                                              "t": "set",
                                              "p": "payload",
                                              "pt": "msg",
                                              "to": "{\"value\":payload,\"time\": $millis() -43200*1000}",
                                              "tot": "jsonata"
                                          }
                                      ],
                                      "action": "",
                                      "property": "",
                                      "from": "",
                                      "to": "",
                                      "reg": false,
                                      "x": 570,
                                      "y": 280,
                                      "wires": [
                                          [
                                              "a547d2d79fafb77f"
                                          ]
                                      ]
                                  },
                                  {
                                      "id": "a547d2d79fafb77f",
                                      "type": "debug",
                                      "z": "3b40b768dd849499",
                                      "name": "Ausgabe JSONATA mit identischer Ausgabe",
                                      "active": true,
                                      "tosidebar": true,
                                      "console": false,
                                      "tostatus": false,
                                      "complete": "payload",
                                      "targetType": "msg",
                                      "statusVal": "",
                                      "statusType": "auto",
                                      "x": 890,
                                      "y": 280,
                                      "wires": []
                                  },
                                  {
                                      "id": "14c452221e5c975e",
                                      "type": "change",
                                      "z": "3b40b768dd849499",
                                      "name": "",
                                      "rules": [
                                          {
                                              "t": "set",
                                              "p": "payload",
                                              "pt": "msg",
                                              "to": "payload.{    \"measurement\":msg.payload,    \"timestamp\":$millis() }",
                                              "tot": "jsonata"
                                          },
                                          {
                                              "t": "set",
                                              "p": "topic",
                                              "pt": "msg",
                                              "to": "zuluft",
                                              "tot": "str"
                                          }
                                      ],
                                      "action": "",
                                      "property": "",
                                      "from": "",
                                      "to": "",
                                      "reg": false,
                                      "x": 670,
                                      "y": 420,
                                      "wires": [
                                          []
                                      ]
                                  },
                                  {
                                      "id": "bcf16446273a18e6",
                                      "type": "mqtt-broker",
                                      "name": "Mosquito",
                                      "broker": "192.168.178.10",
                                      "port": 1883,
                                      "clientid": "",
                                      "autoConnect": true,
                                      "usetls": false,
                                      "protocolVersion": 4,
                                      "keepalive": 60,
                                      "cleansession": true,
                                      "autoUnsubscribe": true,
                                      "birthTopic": "",
                                      "birthQos": "0",
                                      "birthRetain": "false",
                                      "birthPayload": "",
                                      "birthMsg": {},
                                      "closeTopic": "",
                                      "closeQos": "0",
                                      "closeRetain": "false",
                                      "closePayload": "",
                                      "closeMsg": {},
                                      "willTopic": "",
                                      "willQos": "0",
                                      "willRetain": "false",
                                      "willPayload": "",
                                      "willMsg": {},
                                      "userProps": "",
                                      "sessionExpiry": ""
                                  },
                                  {
                                      "id": "5d7e54ca.019d44",
                                      "type": "influxdb",
                                      "hostname": "127.0.0.1",
                                      "port": "8086",
                                      "protocol": "http",
                                      "database": "database",
                                      "name": "Influxdb2",
                                      "usetls": false,
                                      "tls": "d50d0c9f.31e858",
                                      "influxdbVersion": "2.0",
                                      "url": "http://192.168.178.111:8086",
                                      "timeout": "",
                                      "rejectUnauthorized": false
                                  },
                                  {
                                      "id": "d50d0c9f.31e858",
                                      "type": "tls-config",
                                      "name": "",
                                      "cert": "",
                                      "key": "",
                                      "ca": "",
                                      "certname": "",
                                      "keyname": "",
                                      "caname": "",
                                      "servername": "",
                                      "verifyservercert": false
                                  }
                              ]
                              

                              3-5 ms Laufzeitunterschied ist rasend schnell - diesen Unterschied musst du verkraften. 😉 (wobei die ChangeNode in dem Fall schneller ist, als die function Node).

                              M 1 Reply Last reply Reply Quote 0
                              • M
                                MartyBr @mickym last edited by

                                @mickym
                                Wenn ich vom mqtt triggere, dann ist der Laufzeitunterschied nur 1 ms, aber weiterhin zugunsten der JSONata-Version.
                                Das klappt perfekt.

                                Eine Frage dazu:
                                Ich möchte das täglich um Mitternacht + 1 Minute triggern. Dazu habe ich den cron-plus genommen. Dieser verändert aber den msg.payload. Wo setze ich den Node am besten hin?

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

                                  @martybr Die cronplus verändert nicht die payload - weil die ja triggert - sie erzeugt eine payload. Woher willst Du denn die payload nehmen?
                                  Als trigger steht die cronplus deshalb immer am Anfang.

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    MartyBr @mickym last edited by

                                    @mickym
                                    Ich habe das mal so gemacht:
                                    (der mqtt hat ja keinen Eingang)

                                    Bildschirmfoto 2025-02-12 um 13.57.31.png

                                    Fehler:
                                    Bildschirmfoto 2025-02-12 um 13.57.14.png

                                    Code:

                                    [
                                        {
                                            "id": "9e09070debba5a70",
                                            "type": "mqtt in",
                                            "z": "2987494fe96ff2fb",
                                            "name": "Vitovent ZuluftTemp",
                                            "topic": "vitocal/ZuluftTemp",
                                            "qos": "0",
                                            "datatype": "auto-detect",
                                            "broker": "bcf16446273a18e6",
                                            "nl": false,
                                            "rap": true,
                                            "rh": 0,
                                            "inputs": 0,
                                            "x": 150,
                                            "y": 1700,
                                            "wires": [
                                                [
                                                    "458daafa3e776526"
                                                ]
                                            ]
                                        },
                                        {
                                            "id": "458daafa3e776526",
                                            "type": "cronplus",
                                            "z": "2987494fe96ff2fb",
                                            "name": "",
                                            "outputField": "payload",
                                            "timeZone": "",
                                            "storeName": "",
                                            "commandResponseMsgOutput": "output1",
                                            "defaultLocation": "",
                                            "defaultLocationType": "default",
                                            "outputs": 1,
                                            "options": [
                                                {
                                                    "name": "schedule2",
                                                    "topic": "topic2",
                                                    "payloadType": "default",
                                                    "payload": "",
                                                    "expressionType": "cron",
                                                    "expression": "0 * * * * *",
                                                    "location": "",
                                                    "offset": "0",
                                                    "solarType": "all",
                                                    "solarEvents": "sunrise,sunset"
                                                }
                                            ],
                                            "x": 360,
                                            "y": 1700,
                                            "wires": [
                                                [
                                                    "18e23ebeebdc502e"
                                                ]
                                            ]
                                        },
                                        {
                                            "id": "18e23ebeebdc502e",
                                            "type": "change",
                                            "z": "2987494fe96ff2fb",
                                            "name": "",
                                            "rules": [
                                                {
                                                    "t": "set",
                                                    "p": "payload",
                                                    "pt": "msg",
                                                    "to": "{\"value\":payload,\"time\": $millis() -43200*1000}",
                                                    "tot": "jsonata"
                                                }
                                            ],
                                            "action": "",
                                            "property": "",
                                            "from": "",
                                            "to": "",
                                            "reg": false,
                                            "x": 550,
                                            "y": 1700,
                                            "wires": [
                                                [
                                                    "379bfe9421c88668"
                                                ]
                                            ]
                                        },
                                        {
                                            "id": "379bfe9421c88668",
                                            "type": "debug",
                                            "z": "2987494fe96ff2fb",
                                            "name": "Ausgabe JSONATA mit identischer Ausgabe",
                                            "active": true,
                                            "tosidebar": true,
                                            "console": false,
                                            "tostatus": false,
                                            "complete": "payload",
                                            "targetType": "msg",
                                            "statusVal": "",
                                            "statusType": "auto",
                                            "x": 870,
                                            "y": 1700,
                                            "wires": []
                                        },
                                        {
                                            "id": "bcf16446273a18e6",
                                            "type": "mqtt-broker",
                                            "name": "Mosquito",
                                            "broker": "192.168.178.10",
                                            "port": 1883,
                                            "clientid": "",
                                            "autoConnect": true,
                                            "usetls": false,
                                            "protocolVersion": 4,
                                            "keepalive": 60,
                                            "cleansession": true,
                                            "autoUnsubscribe": true,
                                            "birthTopic": "",
                                            "birthQos": "0",
                                            "birthRetain": "false",
                                            "birthPayload": "",
                                            "birthMsg": {},
                                            "closeTopic": "",
                                            "closeQos": "0",
                                            "closeRetain": "false",
                                            "closePayload": "",
                                            "closeMsg": {},
                                            "willTopic": "",
                                            "willQos": "0",
                                            "willRetain": "false",
                                            "willPayload": "",
                                            "willMsg": {},
                                            "userProps": "",
                                            "sessionExpiry": ""
                                        }
                                    ]
                                    
                                    M mickym 2 Replies Last reply Reply Quote 0
                                    • M
                                      MartyBr @MartyBr last edited by

                                      @martybr
                                      P.S. brauche einen switch node? Nur wenn beide "wahr" sind?

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

                                        @martybr Nein das ist verkehrt. Wie gesagt die cronplus triggert - und der Eingang in die cronplus-Node dient alleine zum Steuern der cronplus Node.

                                        In dem Fall musst Du den Wert aus dem mqtt Node in einer Flowvariablen zwischenspeichern und diese kann dann die cronplus bei triggern als payload verschicken.

                                        846452e1-4bb3-4844-aa10-d18decc12190-image.png

                                        Da die mqtt Node die Flowvariable ja kontinuierlich aktualisiert, hast Du somit zum Triggerzeitpunkt immer den letzten, aktuellsten Wert in der Flowvariable, der dann von der cron-plus auf die Reise geschickt wird.

                                        M 1 Reply Last reply Reply Quote 0
                                        • M
                                          MartyBr @mickym last edited by

                                          @mickym
                                          Das sieht nicht gut aus:

                                          Bildschirmfoto 2025-02-12 um 14.11.54.png

                                          Bildschirmfoto 2025-02-12 um 14.12.13.png

                                          [
                                              {
                                                  "id": "379bfe9421c88668",
                                                  "type": "debug",
                                                  "z": "2987494fe96ff2fb",
                                                  "name": "Ausgabe JSONATA mit identischer Ausgabe",
                                                  "active": true,
                                                  "tosidebar": true,
                                                  "console": false,
                                                  "tostatus": false,
                                                  "complete": "payload",
                                                  "targetType": "msg",
                                                  "statusVal": "",
                                                  "statusType": "auto",
                                                  "x": 850,
                                                  "y": 1700,
                                                  "wires": []
                                              },
                                              {
                                                  "id": "18e23ebeebdc502e",
                                                  "type": "change",
                                                  "z": "2987494fe96ff2fb",
                                                  "name": "",
                                                  "rules": [
                                                      {
                                                          "t": "set",
                                                          "p": "payload",
                                                          "pt": "msg",
                                                          "to": "{\"value\":payload,\"time\": $millis() -43200*1000}",
                                                          "tot": "jsonata"
                                                      }
                                                  ],
                                                  "action": "",
                                                  "property": "",
                                                  "from": "",
                                                  "to": "",
                                                  "reg": false,
                                                  "x": 530,
                                                  "y": 1700,
                                                  "wires": [
                                                      [
                                                          "379bfe9421c88668"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "9e09070debba5a70",
                                                  "type": "mqtt in",
                                                  "z": "2987494fe96ff2fb",
                                                  "name": "Vitovent ZuluftTemp",
                                                  "topic": "vitocal/ZuluftTemp",
                                                  "qos": "0",
                                                  "datatype": "auto-detect",
                                                  "broker": "bcf16446273a18e6",
                                                  "nl": false,
                                                  "rap": true,
                                                  "rh": 0,
                                                  "inputs": 0,
                                                  "x": 270,
                                                  "y": 1740,
                                                  "wires": [
                                                      [
                                                          "18e23ebeebdc502e"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "458daafa3e776526",
                                                  "type": "cronplus",
                                                  "z": "2987494fe96ff2fb",
                                                  "name": "",
                                                  "outputField": "payload",
                                                  "timeZone": "",
                                                  "storeName": "",
                                                  "commandResponseMsgOutput": "output1",
                                                  "defaultLocation": "",
                                                  "defaultLocationType": "default",
                                                  "outputs": 1,
                                                  "options": [
                                                      {
                                                          "name": "schedule2",
                                                          "topic": "topic",
                                                          "payloadType": "flow",
                                                          "payload": "payload",
                                                          "expressionType": "cron",
                                                          "expression": "0 */5 * * * *",
                                                          "location": "",
                                                          "offset": "0",
                                                          "solarType": "all",
                                                          "solarEvents": "sunrise,sunset"
                                                      }
                                                  ],
                                                  "x": 280,
                                                  "y": 1640,
                                                  "wires": [
                                                      [
                                                          "18e23ebeebdc502e"
                                                      ]
                                                  ]
                                              },
                                              {
                                                  "id": "bcf16446273a18e6",
                                                  "type": "mqtt-broker",
                                                  "name": "Mosquito",
                                                  "broker": "192.168.178.10",
                                                  "port": 1883,
                                                  "clientid": "",
                                                  "autoConnect": true,
                                                  "usetls": false,
                                                  "protocolVersion": 4,
                                                  "keepalive": 60,
                                                  "cleansession": true,
                                                  "autoUnsubscribe": true,
                                                  "birthTopic": "",
                                                  "birthQos": "0",
                                                  "birthRetain": "false",
                                                  "birthPayload": "",
                                                  "birthMsg": {},
                                                  "closeTopic": "",
                                                  "closeQos": "0",
                                                  "closeRetain": "false",
                                                  "closePayload": "",
                                                  "closeMsg": {},
                                                  "willTopic": "",
                                                  "willQos": "0",
                                                  "willRetain": "false",
                                                  "willPayload": "",
                                                  "willMsg": {},
                                                  "userProps": "",
                                                  "sessionExpiry": ""
                                              }
                                          ]
                                          

                                          Der mqtt triggert alle 30 Sekunden. Mit dem cron-plus zusammen wird der payload wieder gelöscht.
                                          Irgendetwas (oder alles 😧 ) mache ich hier falsch.

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

                                            Ich hatte doch gesagt, dass Du die Ausgabe aus dem Mqtt in einer Flowvariable speichern sollst. Ich habe nun ein Objekt genommen - du kannst natürlich auch eine skalare Variable nehmen.

                                            Merke wenn 2 Trigger zu unterschiedlichen Zeitpunkten triggern (in diesem Fall cronplus und mqtt) bringst Du die Nachrichtenobjekte nie zusammen (JOIN Node macht hier keinen Sinn), sondern dann speicherst Du den Wert im Kontext und nutzt ihn dann im anderen Trigger.

                                            Hier siehst Du wie ich die mqtt In Ausgabe im Flow-Kontext speichere:

                                            e6d83b18-31cb-49fe-9262-326c5ee55771-image.png

                                            Wenn die cronplus Node dann triggert, dann schnappt sie sich den Wert aus der Flowvariable

                                            7799ebf3-a19a-402b-ac71-a4b6561d0d1b-image.png

                                            und sendet ihn als payload in Deine ChangeNode.

                                            039b29f5-c799-4fed-b0e2-c361f1e2ec69-image.png

                                            Hier wieder der Import:

                                            [
                                               {
                                                   "id": "379bfe9421c88668",
                                                   "type": "debug",
                                                   "z": "c52a337a80f950fc",
                                                   "name": "Ausgabe JSONATA mit identischer Ausgabe",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 810,
                                                   "y": 200,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "18e23ebeebdc502e",
                                                   "type": "change",
                                                   "z": "c52a337a80f950fc",
                                                   "name": "",
                                                   "rules": [
                                                       {
                                                           "t": "set",
                                                           "p": "payload",
                                                           "pt": "msg",
                                                           "to": "{\"value\":payload,\"time\": $millis() -43200*1000}",
                                                           "tot": "jsonata"
                                                       }
                                                   ],
                                                   "action": "",
                                                   "property": "",
                                                   "from": "",
                                                   "to": "",
                                                   "reg": false,
                                                   "x": 490,
                                                   "y": 200,
                                                   "wires": [
                                                       [
                                                           "379bfe9421c88668"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "9e09070debba5a70",
                                                   "type": "mqtt in",
                                                   "z": "c52a337a80f950fc",
                                                   "d": true,
                                                   "name": "Vitovent ZuluftTemp",
                                                   "topic": "vitocal/ZuluftTemp",
                                                   "qos": "0",
                                                   "datatype": "auto-detect",
                                                   "broker": "bcf16446273a18e6",
                                                   "nl": false,
                                                   "rap": true,
                                                   "rh": 0,
                                                   "inputs": 0,
                                                   "x": 210,
                                                   "y": 340,
                                                   "wires": [
                                                       [
                                                           "155c85431cc02d77"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "458daafa3e776526",
                                                   "type": "cronplus",
                                                   "z": "c52a337a80f950fc",
                                                   "name": "",
                                                   "outputField": "payload",
                                                   "timeZone": "",
                                                   "storeName": "",
                                                   "commandResponseMsgOutput": "output1",
                                                   "defaultLocation": "",
                                                   "defaultLocationType": "default",
                                                   "outputs": 1,
                                                   "options": [
                                                       {
                                                           "name": "schedule2",
                                                           "topic": "topic",
                                                           "payloadType": "flow",
                                                           "payload": "vitocal.ZuluftTemp",
                                                           "expressionType": "cron",
                                                           "expression": "0 */5 * * * *",
                                                           "location": "",
                                                           "offset": "0",
                                                           "solarType": "all",
                                                           "solarEvents": "sunrise,sunset"
                                                       }
                                                   ],
                                                   "x": 260,
                                                   "y": 200,
                                                   "wires": [
                                                       [
                                                           "18e23ebeebdc502e"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "155c85431cc02d77",
                                                   "type": "change",
                                                   "z": "c52a337a80f950fc",
                                                   "name": "",
                                                   "rules": [
                                                       {
                                                           "t": "set",
                                                           "p": "vitocal.ZuluftTemp",
                                                           "pt": "flow",
                                                           "to": "payload",
                                                           "tot": "msg"
                                                       }
                                                   ],
                                                   "action": "",
                                                   "property": "",
                                                   "from": "",
                                                   "to": "",
                                                   "reg": false,
                                                   "x": 460,
                                                   "y": 340,
                                                   "wires": [
                                                       []
                                                   ]
                                               },
                                               {
                                                   "id": "665b4c711f50a646",
                                                   "type": "inject",
                                                   "z": "c52a337a80f950fc",
                                                   "name": "",
                                                   "props": [
                                                       {
                                                           "p": "payload"
                                                       }
                                                   ],
                                                   "repeat": "",
                                                   "crontab": "",
                                                   "once": false,
                                                   "onceDelay": 0.1,
                                                   "topic": "",
                                                   "payload": "21",
                                                   "payloadType": "num",
                                                   "x": 230,
                                                   "y": 300,
                                                   "wires": [
                                                       [
                                                           "155c85431cc02d77"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "bcf16446273a18e6",
                                                   "type": "mqtt-broker",
                                                   "name": "Mosquito",
                                                   "broker": "192.168.178.10",
                                                   "port": 1883,
                                                   "clientid": "",
                                                   "autoConnect": true,
                                                   "usetls": false,
                                                   "protocolVersion": 4,
                                                   "keepalive": 60,
                                                   "cleansession": true,
                                                   "autoUnsubscribe": true,
                                                   "birthTopic": "",
                                                   "birthQos": "0",
                                                   "birthRetain": "false",
                                                   "birthPayload": "",
                                                   "birthMsg": {},
                                                   "closeTopic": "",
                                                   "closeQos": "0",
                                                   "closeRetain": "false",
                                                   "closePayload": "",
                                                   "closeMsg": {},
                                                   "willTopic": "",
                                                   "willQos": "0",
                                                   "willRetain": "false",
                                                   "willPayload": "",
                                                   "willMsg": {},
                                                   "userProps": "",
                                                   "sessionExpiry": ""
                                               }
                                            ]
                                            

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.2k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            2
                                            91
                                            4041
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo