How to show your Node-RED flows in Victron Community

There is a new feature on Community that allows you to share your Node-RED flows and show them graphically, as well as giving easy access to copy JSON code that allows other people to import them.

Simply paste the exported JSON code from inside Node-RED; it should look like this example starting with ```flows

```flows
[{"id":"45b09c2541029b05","type":"inject","z":"9f9e32404549681c","name":"test","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":80,"wires":[["c983a304e0ac7655"]]},{"id":"c983a304e0ac7655","type":"debug","z":"9f9e32404549681c","name":"debug 7","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":370,"y":80,"wires":[]}]

And this will be shown in your post;

[{"id":"45b09c2541029b05","type":"inject","z":"9f9e32404549681c","name":"test","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":80,"wires":[["c983a304e0ac7655"]]},{"id":"c983a304e0ac7655","type":"debug","z":"9f9e32404549681c","name":"debug 7","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":370,"y":80,"wires":[]}]

Here is another real world example - with a more detailed flow - Node red show parallel system stats

12 Likes

Interesting, lets stress test this feature.

Here is my ‘work in progress’ hybrid dess flow:

FAIL: “An error occurred: Body is limited to 150000 characters; you entered 419084.”

Lets try again with smaller flow, see below.

Conclusions:

  1. Yes it works
  2. Standard message size is too limited for complex flows (works fine in the editor but fails when trying to ‘save’.
  3. Standard ‘nodes’ are ‘recognized’ showing correct ‘graphics’ (color, icons) but nodes from imported libraries are all shown plain white, no icons
[
    {
        "id": "39aff6142244bf9b",
        "type": "tab",
        "label": "UpCycle Hybrid DESS Trade : Price & Forecast Charge Trigger Flow",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "34b73fba4df2b7ba",
        "type": "group",
        "z": "39aff6142244bf9b",
        "name": "UpCycle Hybrid DESS Trade : Timing Triggers and Schedule Stats ",
        "style": {
            "label": true
        },
        "nodes": [
            "a9340f62cd8d4177",
            "6e20a65590cc8a40",
            "411756b661548bf9",
            "d3da4a5c8306b088",
            "3db67e14521de383",
            "1cc25eb445fcf8cc",
            "db194818094b4925",
            "bc089157fce2bf11",
            "c40dbe8aa1e9b3ab",
            "c7211cfdcf4cb15c",
            "60c55dc2b82ec14b",
            "54d84885e231f53a",
            "7a640a73e09cb300",
            "9aab3e2d1768eb31",
            "5315927a0aaabd3e",
            "7457fd5b4ca9bec6",
            "428d71112d385807",
            "24252155f172d682",
            "48e5a38f95f3f435",
            "0f6a22182792864e",
            "1b49437f8343be41",
            "beac66ce2b26e039",
            "536b30d1848df7e8",
            "cc5dd99e74177e63",
            "3645d84eebe3c088",
            "5d505c55fa072459",
            "68f3cb8cbbc1d6bb"
        ],
        "x": 74,
        "y": 199,
        "w": 1082,
        "h": 337
    },
    {
        "id": "bf18e86e4d04ccde",
        "type": "group",
        "z": "39aff6142244bf9b",
        "name": "UpCycle Hybrid DESS Trade : Node-RED DESS Price Schedules",
        "style": {
            "label": true
        },
        "nodes": [
            "e7e3a970f8a273f6",
            "1cfc811b4dfbf231",
            "514ab233feb8c6fe",
            "ceeb5021cc6fab96",
            "901ae3d8f3d44af8",
            "77191f449ba6dda2",
            "78f9ed33b2332ae4",
            "e54a3b013ee93f2e",
            "37975819dc439ca6",
            "9b248c90038d6405",
            "c5442330dd904551",
            "63a684dbcc751e55",
            "b8b3eec45376cda5",
            "e742f5d6c009770c",
            "532a486f9af8e0af",
            "d672430a7fc1299b",
            "aa72794658804631",
            "549036c0ec518277",
            "1af236892cf8d3be",
            "6c3f3ea707d4176d",
            "56fde0836c2d8f1d",
            "6066d27c980740a8",
            "1b8dc2059bae1dbe",
            "901960a59fc25171",
            "f195a41e88a3a6be",
            "e4190fcaafaabbe6",
            "46bc470d9a6d3390",
            "cadb2f6a85c397ee",
            "dd0c8e91f3fe5037",
            "7ab35540e117665a",
            "7f92ad276f401a33"
        ],
        "x": 74,
        "y": 559,
        "w": 1082,
        "h": 362
    },
    {
        "id": "19e122760e98d65a",
        "type": "group",
        "z": "39aff6142244bf9b",
        "name": "UpCycle Hybrid DESS Trade :VRM DESS Price Schedules",
        "style": {
            "label": true
        },
        "nodes": [
            "a616c6585bebaa2d",
            "18dcfc44fac28aef",
            "9d711c42519e72e1",
            "946c0d8e1ca122ec",
            "c717b544e028f640",
            "b412e55f68f19085",
            "1fe50b930330db7c",
            "3430bc7a59a00d69",
            "dfdc83f34a2e6c2c",
            "1e49c7b7e67f5f5a",
            "1106452e37f469ab",
            "6a83040718bd6a92",
            "640f267c2da4ab3d",
            "ed33c948f55b270a",
            "9c2074b8a2a8899a",
            "da226947de9aba2f",
            "4004cd7008d4180a",
            "d69a8a374fd95981",
            "6de9191c10fc4db1",
            "b9626c0e2928092a",
            "d5afd2047d9f0e81",
            "cc47706e6a573be8",
            "30947317ba565089",
            "70957d7169c3350f",
            "dffb2c5f19be2daa",
            "ad9ec2995dc85fe3",
            "2f29ad86d68c9df6",
            "dd958f208a7e877f",
            "8eabce534faff0ef",
            "c1a0a5f1cab9dfd3",
            "02bf8520492ac5fe"
        ],
        "x": 74,
        "y": 939,
        "w": 1082,
        "h": 362
    },
    {
        "id": "a9c10fb87af2e1b7",
        "type": "group",
        "z": "39aff6142244bf9b",
        "name": "UpCycle Hybrid DESS Trade : Node-RED Grid to Battery Forecast - Charge Override",
        "style": {
            "label": true
        },
        "nodes": [
            "4b05af0a35daa436",
            "e8a806ee6679078e",
            "41e5417e9f9424f5",
            "6117e56c471d76c3",
            "a902179e23f578c7",
            "ec77f0abe7da50fb",
            "ea268b31b0a04f39",
            "b8ab6f6e58d27355",
            "b5621b08c088c279",
            "20c79aa6fc5cf853",
            "8f1d92806f1af11f",
            "964b56b00a9c50b7",
            "985148527157a4ee",
            "5ad834e2a880a7ce",
            "f00274ee3aead9f9",
            "e9aae8a399b0fa19",
            "3cb6186863b5e1c5",
            "48840887dbe8e1ab",
            "8d149755ca148829",
            "a24b581452b1d4c6",
            "ca77e3cf803398fb",
            "f5ed7156153e4dbe",
            "2279f310ec4e2f42",
            "8316001bac9be6b5",
            "3295daa35b749302",
            "cd49f0f75f3d949f",
            "4da2e4fb8ef9c092",
            "b465d74a23bf4971",
            "feaaa5737bd8aa91",
            "1a6fbfe92bad130e",
            "a173767a076a3c72",
            "4ff1f65593fa72da",
            "3b646167607365a4",
            "664a9401106afe9d",
            "0f8e506b40d6ab4c",
            "e495aa3dae6b229b",
            "ec4520a1351024f8",
            "bbf8849cdd3ab166",
            "327a8e1e51cccf49",
            "f15c0ec84fefe063",
            "64e08cc19828e8b5"
        ],
        "x": 74,
        "y": 1319,
        "w": 1082,
        "h": 542
    },
    {
        "id": "a9340f62cd8d4177",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "hour",
        "func": "let date = new Date()\nlet hour = Number( date.getHours() )\nlet fill = ( 'green' )\nlet shape = 'dot'\nlet text = ( 'hour : ' + hour )\nnode.status({fill, shape, text})\nmsg.payload = hour\nmsg.topic = 'hour'\nreturn msg;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 730,
        "y": 240,
        "wires": [
            [
                "1cc25eb445fcf8cc",
                "60c55dc2b82ec14b",
                "54d84885e231f53a"
            ]
        ]
    },
    {
        "id": "6e20a65590cc8a40",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "quarter",
        "func": "let date = new Date()\nlet minutes =  date.getMinutes()\nlet quarterf = ( minutes / 15 ) \nlet quarter = quarterf - ( quarterf % 1 )\nlet fill = ( 'green' )\nlet shape = 'dot'\nlet text = ( 'quarter : ' + quarter )\nnode.status({fill, shape, text})\nmsg.payload = quarter\nmsg.topic = 'quarter'\nreturn msg;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 740,
        "y": 300,
        "wires": [
            [
                "db194818094b4925",
                "9aab3e2d1768eb31",
                "7a640a73e09cb300"
            ]
        ]
    },
    {
        "id": "411756b661548bf9",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "minute",
        "func": "let date = new Date()\nlet minute =  date.getMinutes()\nlet fill = ( 'green' )\nlet shape = 'dot'\nlet text = ( 'minute : ' + minute )\nnode.status({fill, shape, text})\nmsg.payload = minute\nmsg.topic = 'minute'\nreturn msg;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 730,
        "y": 360,
        "wires": [
            [
                "c40dbe8aa1e9b3ab",
                "7457fd5b4ca9bec6",
                "5315927a0aaabd3e"
            ]
        ]
    },
    {
        "id": "d3da4a5c8306b088",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "second",
        "func": "let date = new Date()\nlet second =  date.getSeconds()\nlet fill = ( 'green' )\nlet shape = 'dot'\nlet text = ( 'second : ' + second )\nnode.status({fill, shape, text})\nmsg.payload = second\nmsg.topic = 'second'\nreturn msg;",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 740,
        "y": 420,
        "wires": [
            [
                "bc089157fce2bf11",
                "428d71112d385807",
                "24252155f172d682"
            ]
        ]
    },
    {
        "id": "3db67e14521de383",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "mux",
        "func": "return msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 530,
        "y": 300,
        "wires": [
            [
                "a9340f62cd8d4177",
                "6e20a65590cc8a40",
                "411756b661548bf9",
                "d3da4a5c8306b088",
                "1b49437f8343be41",
                "0f6a22182792864e"
            ]
        ]
    },
    {
        "id": "1cc25eb445fcf8cc",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "link out 22",
        "mode": "link",
        "links": [
            "dd0c8e91f3fe5037",
            "02bf8520492ac5fe",
            "3b646167607365a4"
        ],
        "x": 1115,
        "y": 240,
        "wires": []
    },
    {
        "id": "db194818094b4925",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "link out 23",
        "mode": "link",
        "links": [],
        "x": 1115,
        "y": 300,
        "wires": []
    },
    {
        "id": "bc089157fce2bf11",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "link out 24",
        "mode": "link",
        "links": [],
        "x": 1115,
        "y": 420,
        "wires": []
    },
    {
        "id": "c40dbe8aa1e9b3ab",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "link out 25",
        "mode": "link",
        "links": [],
        "x": 1115,
        "y": 360,
        "wires": []
    },
    {
        "id": "c7211cfdcf4cb15c",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "link in 10",
        "links": [
            "2b8364435ba7b68c"
        ],
        "x": 115,
        "y": 300,
        "wires": [
            [
                "3db67e14521de383"
            ]
        ]
    },
    {
        "id": "60c55dc2b82ec14b",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1000,
        "y": 240,
        "wires": []
    },
    {
        "id": "54d84885e231f53a",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 870,
        "y": 240,
        "wires": []
    },
    {
        "id": "7a640a73e09cb300",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 870,
        "y": 300,
        "wires": []
    },
    {
        "id": "9aab3e2d1768eb31",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1000,
        "y": 300,
        "wires": []
    },
    {
        "id": "5315927a0aaabd3e",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 870,
        "y": 360,
        "wires": []
    },
    {
        "id": "7457fd5b4ca9bec6",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1000,
        "y": 360,
        "wires": []
    },
    {
        "id": "428d71112d385807",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 870,
        "y": 420,
        "wires": []
    },
    {
        "id": "24252155f172d682",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1000,
        "y": 420,
        "wires": []
    },
    {
        "id": "536b30d1848df7e8",
        "type": "inject",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "VRM Site ID",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "siteId",
        "payload": "888888",
        "payloadType": "num",
        "x": 510,
        "y": 480,
        "wires": [
            [
                "cc5dd99e74177e63"
            ]
        ]
    },
    {
        "id": "cc5dd99e74177e63",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "flow set siteId",
        "func": "flow.set('siteId', msg.payload)\nreturn msg\n// use : {{flow.siteId}} ",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 760,
        "y": 480,
        "wires": [
            [
                "5d505c55fa072459"
            ]
        ]
    },
    {
        "id": "48e5a38f95f3f435",
        "type": "inject",
        "z": "39aff6142244bf9b",
        "d": true,
        "g": "34b73fba4df2b7ba",
        "name": "hourly-ts",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "0 0-23 * * *",
        "once": true,
        "onceDelay": 0.1,
        "topic": "hourly-ts",
        "payload": "",
        "payloadType": "date",
        "x": 200,
        "y": 420,
        "wires": [
            [
                "beac66ce2b26e039",
                "68f3cb8cbbc1d6bb"
            ]
        ]
    },
    {
        "id": "0f6a22182792864e",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 370,
        "y": 240,
        "wires": []
    },
    {
        "id": "1b49437f8343be41",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 520,
        "y": 240,
        "wires": []
    },
    {
        "id": "2b8364435ba7b68c",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "name": "link out 26",
        "mode": "link",
        "links": [
            "c7211cfdcf4cb15c"
        ],
        "x": 35,
        "y": 300,
        "wires": []
    },
    {
        "id": "e7e3a970f8a273f6",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "nodered_p_b",
        "func": "//\nlet hour = msg.payload\nlet output_object = 'p_b'\nlet topic = 'nodered_' + output_object\nlet get_flow_item = 'dess'\nlet flow_item = flow.get( get_flow_item )\nlet flow_object = flow_item.output[output_object]\nlet object_keys = Object.keys(flow_object).length\nlet is_object = ( object_keys > 0 )\nlet get_value = ( is_object ? flow_object[hour] : false )\n\nlet rounded = get_value\nif ( is_object)\n{\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier\n}\n\nlet fill = ( is_object  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( output_object + ' at ' + hour + 'h : ' + rounded + 'ct')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 230,
        "y": 820,
        "wires": [
            [
                "e742f5d6c009770c"
            ]
        ]
    },
    {
        "id": "1cfc811b4dfbf231",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 820,
        "wires": []
    },
    {
        "id": "514ab233feb8c6fe",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 820,
        "wires": []
    },
    {
        "id": "ceeb5021cc6fab96",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "nodered_p_s",
        "func": "//\nlet hour = msg.payload\nlet output_object = 'p_s'\nlet topic = 'nodered_' + output_object\nlet get_flow_item = 'dess'\nlet flow_item = flow.get( get_flow_item )\nlet flow_object = flow_item.output[output_object]\nlet object_keys = Object.keys(flow_object).length\nlet is_object = ( object_keys > 0 )\nlet get_value = ( is_object ? flow_object[hour] : false )\n\nlet rounded = get_value\nif ( is_object)\n{\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier\n}\n\nlet fill = ( is_object  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( output_object + ' at ' + hour + 'h : ' + rounded + 'ct')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 230,
        "y": 700,
        "wires": [
            [
                "901960a59fc25171"
            ]
        ]
    },
    {
        "id": "901ae3d8f3d44af8",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 700,
        "wires": []
    },
    {
        "id": "77191f449ba6dda2",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 700,
        "wires": []
    },
    {
        "id": "78f9ed33b2332ae4",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 600,
        "wires": []
    },
    {
        "id": "e54a3b013ee93f2e",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 600,
        "wires": []
    },
    {
        "id": "37975819dc439ca6",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "link out 28",
        "mode": "link",
        "links": [
            "d672430a7fc1299b"
        ],
        "x": 1115,
        "y": 600,
        "wires": []
    },
    {
        "id": "9b248c90038d6405",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "Status",
        "property": "payload",
        "x": 750,
        "y": 600,
        "wires": [
            [
                "78f9ed33b2332ae4",
                "e54a3b013ee93f2e",
                "37975819dc439ca6"
            ]
        ]
    },
    {
        "id": "c5442330dd904551",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "Status",
        "property": "payload",
        "x": 750,
        "y": 820,
        "wires": [
            [
                "1cfc811b4dfbf231",
                "514ab233feb8c6fe",
                "7f92ad276f401a33"
            ]
        ]
    },
    {
        "id": "63a684dbcc751e55",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "Status",
        "property": "payload",
        "x": 750,
        "y": 700,
        "wires": [
            [
                "901ae3d8f3d44af8",
                "77191f449ba6dda2",
                "7ab35540e117665a"
            ]
        ]
    },
    {
        "id": "b8b3eec45376cda5",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "nodered_avg",
        "func": "//\nlet hour = msg.payload\nlet output_object = 'p_b'\nlet topic = 'nodered_avg'\nlet get_flow_item = 'dess'\nlet flow_item = flow.get( get_flow_item )\nlet flow_object = flow_item.output[output_object]\nlet object_keys = Object.keys(flow_object).length\nlet is_object = ( object_keys > 0 )\nlet get_value = ( is_object ? flow_object[hour] : false )\n\nlet rounded = get_value\n\nlet prices_sum = 0\nlet first_hour = 0\nlet last_hour = 24\nif ( is_object )\n{\n    if ( object_keys == 48 ) // rolling 24 hour averaging block\n    {\n        first_hour = hour\n        last_hour = first_hour + 24 \n    } \n    for (let i = first_hour ; i < last_hour ; i++) \n    {\n        prices_sum += flow_object[i]\n    }\n    rounded = prices_sum / ( last_hour - first_hour )\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier\n}\n\nlet fill = ( is_object  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( first_hour + 'h to ' + last_hour + 'h avg: ' + rounded + 'ct')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 230,
        "y": 760,
        "wires": [
            [
                "549036c0ec518277",
                "56fde0836c2d8f1d",
                "46bc470d9a6d3390"
            ]
        ]
    },
    {
        "id": "e742f5d6c009770c",
        "type": "Comparator",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "buy",
        "property": "payload",
        "math": "<=",
        "topic1": "nodered_p_b",
        "topic2": "lowprice",
        "x": 430,
        "y": 820,
        "wires": [
            [
                "aa72794658804631"
            ]
        ]
    },
    {
        "id": "532a486f9af8e0af",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "sellprice",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "sellprice",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 700,
        "wires": [
            [
                "63a684dbcc751e55"
            ]
        ]
    },
    {
        "id": "d672430a7fc1299b",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "link in 12",
        "links": [
            "37975819dc439ca6"
        ],
        "x": 115,
        "y": 760,
        "wires": [
            [
                "b8b3eec45376cda5",
                "ceeb5021cc6fab96",
                "e7e3a970f8a273f6"
            ]
        ]
    },
    {
        "id": "aa72794658804631",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "buyprice",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "buyprice",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 820,
        "wires": [
            [
                "c5442330dd904551"
            ]
        ]
    },
    {
        "id": "549036c0ec518277",
        "type": "SumUltimate",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "Math",
        "property": "payload",
        "math": "sum",
        "subtractstartfrom": "",
        "x": 430,
        "y": 880,
        "wires": [
            [
                "6c3f3ea707d4176d"
            ]
        ]
    },
    {
        "id": "1af236892cf8d3be",
        "type": "inject",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "lowprice",
        "payload": "-5",
        "payloadType": "num",
        "x": 230,
        "y": 880,
        "wires": [
            [
                "549036c0ec518277"
            ]
        ]
    },
    {
        "id": "6c3f3ea707d4176d",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "lowprice",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "lowprice",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 880,
        "wires": [
            [
                "e742f5d6c009770c"
            ]
        ]
    },
    {
        "id": "56fde0836c2d8f1d",
        "type": "SumUltimate",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "Math",
        "property": "payload",
        "math": "sum",
        "subtractstartfrom": "",
        "x": 430,
        "y": 640,
        "wires": [
            [
                "1b8dc2059bae1dbe"
            ]
        ]
    },
    {
        "id": "6066d27c980740a8",
        "type": "inject",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "highprice",
        "payload": "+0",
        "payloadType": "num",
        "x": 230,
        "y": 640,
        "wires": [
            [
                "56fde0836c2d8f1d"
            ]
        ]
    },
    {
        "id": "1b8dc2059bae1dbe",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "highprice",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "highprice",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 640,
        "wires": [
            [
                "901960a59fc25171"
            ]
        ]
    },
    {
        "id": "901960a59fc25171",
        "type": "Comparator",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "sell",
        "property": "payload",
        "math": ">",
        "topic1": "nodered_p_s",
        "topic2": "highprice",
        "x": 430,
        "y": 700,
        "wires": [
            [
                "532a486f9af8e0af"
            ]
        ]
    },
    {
        "id": "f195a41e88a3a6be",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "Node-RED DESS 24h PRICE Average",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "text",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 910,
        "y": 760,
        "wires": []
    },
    {
        "id": "e4190fcaafaabbe6",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "link out 30",
        "mode": "link",
        "links": [],
        "x": 1115,
        "y": 760,
        "wires": []
    },
    {
        "id": "46bc470d9a6d3390",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "Status",
        "property": "payload",
        "x": 430,
        "y": 760,
        "wires": [
            [
                "cadb2f6a85c397ee"
            ]
        ]
    },
    {
        "id": "cadb2f6a85c397ee",
        "type": "rbe",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "dedup",
        "func": "rbe",
        "gap": "",
        "start": "",
        "inout": "out",
        "septopics": false,
        "property": "payload",
        "topi": "topic",
        "x": 590,
        "y": 760,
        "wires": [
            [
                "e4190fcaafaabbe6",
                "f195a41e88a3a6be"
            ]
        ]
    },
    {
        "id": "a616c6585bebaa2d",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "vrmdess_deGb",
        "func": "//\nlet hour = msg.payload\nlet stats_key = 'deGb'\nlet topic = 'vrmdess_' + stats_key\n\nlet vrmsiteid = flow.get('siteId')\nlet get_global = 'installations.stats.' + vrmsiteid.toFixed(0)\nlet get_stats = global.get( get_global )\nlet is_stats = !( get_stats == undefined || get_stats == null )\n\nlet get_records = null\n//let get_totals = 0\nlet get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_stats )\n{\n    get_records = get_stats.records[stats_key]\n//    get_totals = get_stats.totals[stats_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[hour][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n/*\nlet prices_sum = 0\nlet first_hour = 0\nlet last_hour = 24\n\nif ( is_records )\n{\n    if ( records_length == 48 ) // rolling 24 hour averaging block\n    {\n        first_hour = hour\n        last_hour = first_hour + 24 \n    } \n    for (let i = first_hour ; i < last_hour ; i++) \n    {\n        prices_sum += get_records[i][1]\n    }\n    rounded = prices_sum / ( last_hour - first_hour )\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier\n}\n*/\n\nlet fill = ( (rounded != false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( stats_key + ' at ' + hour + 'h : ' + rounded + 'ct')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 240,
        "y": 1200,
        "wires": [
            [
                "ed33c948f55b270a"
            ]
        ]
    },
    {
        "id": "18dcfc44fac28aef",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1200,
        "wires": []
    },
    {
        "id": "9d711c42519e72e1",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1200,
        "wires": []
    },
    {
        "id": "946c0d8e1ca122ec",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "vrmdess_deGs",
        "func": "//\nlet hour = msg.payload\nlet stats_key = 'deGs'\nlet topic = 'vrmdess_' + stats_key\n\nlet vrmsiteid = flow.get('siteId')\nlet get_global = 'installations.stats.' + vrmsiteid.toFixed(0)\nlet get_stats = global.get( get_global )\nlet is_stats = !( get_stats == undefined || get_stats == null )\n\nlet get_records = null\n//let get_totals = 0\nlet get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_stats )\n{\n    get_records = get_stats.records[stats_key]\n//    get_totals = get_stats.totals[stats_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[hour][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n/*\nlet prices_sum = 0\nlet first_hour = 0\nlet last_hour = 24\n\nif ( is_records )\n{\n    if ( records_length == 48 ) // rolling 24 hour averaging block\n    {\n        first_hour = hour\n        last_hour = first_hour + 24 \n    } \n    for (let i = first_hour ; i < last_hour ; i++) \n    {\n        prices_sum += get_records[i][1]\n    }\n    rounded = prices_sum / ( last_hour - first_hour )\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier\n}\n*/\n\nlet fill = ( (rounded != false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( stats_key + ' at ' + hour + 'h : ' + rounded + 'ct')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 240,
        "y": 1080,
        "wires": [
            [
                "70957d7169c3350f"
            ]
        ]
    },
    {
        "id": "c717b544e028f640",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1080,
        "wires": []
    },
    {
        "id": "b412e55f68f19085",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1080,
        "wires": []
    },
    {
        "id": "1fe50b930330db7c",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 980,
        "wires": []
    },
    {
        "id": "3430bc7a59a00d69",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 980,
        "wires": []
    },
    {
        "id": "dfdc83f34a2e6c2c",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "link out 31",
        "mode": "link",
        "links": [
            "da226947de9aba2f"
        ],
        "x": 1115,
        "y": 980,
        "wires": []
    },
    {
        "id": "1e49c7b7e67f5f5a",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "Status",
        "property": "payload",
        "x": 750,
        "y": 980,
        "wires": [
            [
                "1fe50b930330db7c",
                "3430bc7a59a00d69",
                "dfdc83f34a2e6c2c"
            ]
        ]
    },
    {
        "id": "1106452e37f469ab",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "Status",
        "property": "payload",
        "x": 750,
        "y": 1200,
        "wires": [
            [
                "c1a0a5f1cab9dfd3",
                "18dcfc44fac28aef",
                "9d711c42519e72e1"
            ]
        ]
    },
    {
        "id": "6a83040718bd6a92",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "Status",
        "property": "payload",
        "x": 750,
        "y": 1080,
        "wires": [
            [
                "8eabce534faff0ef",
                "c717b544e028f640",
                "b412e55f68f19085"
            ]
        ]
    },
    {
        "id": "640f267c2da4ab3d",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "vrmdess_avg",
        "func": "//\nlet hour = msg.payload\nlet topic = 'vrmdess_avg'\n\nlet stats_key = 'deGb'\nlet vrmsiteid = flow.get('siteId')\nlet get_global = 'installations.stats.' + vrmsiteid.toFixed(0)\nlet get_stats = global.get( get_global )\nlet is_stats = !( get_stats == undefined || get_stats == null )\n\nlet get_records = null\nlet get_totals = 0\nlet get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_stats )\n{\n    get_records = get_stats.records[stats_key]\n    get_totals = get_stats.totals[stats_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[hour][1] : false )\n}\n\n/*\nlet get_flow_item = 'dess'\nlet flow_item = flow.get( get_flow_item )\nlet flow_object = flow_item.output[output_object]\nlet object_keys = Object.keys(flow_object).length\nlet is_object = ( object_keys > 0 )\nlet get_value = ( is_object ? flow_object[hour] : false )\n*/\n\nlet rounded = get_value\n\nlet prices_sum = 0\nlet first_hour = 0\nlet last_hour = 24\n\nif ( is_records )\n{\n    if ( records_length == 48 ) // rolling 24 hour averaging block\n    {\n        first_hour = hour\n        last_hour = first_hour + 24 \n    } \n    for (let i = first_hour ; i < last_hour ; i++) \n    {\n        prices_sum += get_records[i][1]\n    }\n    rounded = prices_sum / ( last_hour - first_hour )\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier\n}\n\nlet fill = ( is_records  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( first_hour + 'h to ' + last_hour + 'h avg: ' + rounded + 'ct')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg\n\n/*\nlet topic = 'vrm_price_avg'\nlet key = 'deGb'\n\nlet vrmsiteid = flow.get('siteId')\nlet global_get = 'installations.stats.' + vrmsiteid.toFixed(0)\nlet installations = global.get( global_get )\nlet get_vrm_array = installations.records[key]\nlet get_vrm_total = installations.totals[key]\nlet array_length = get_vrm_array.length\nlet is_vrm_array = ( array_length > 0 )\nlet vrm_value = ( is_vrm_array ? get_vrm_array[hour][1] : false )\n*/",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 230,
        "y": 1140,
        "wires": [
            [
                "d69a8a374fd95981",
                "d5afd2047d9f0e81",
                "2f29ad86d68c9df6"
            ]
        ]
    },
    {
        "id": "ed33c948f55b270a",
        "type": "Comparator",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "buy",
        "property": "payload",
        "math": "<=",
        "topic1": "vrmdess_deGb",
        "topic2": "lowprice",
        "x": 430,
        "y": 1200,
        "wires": [
            [
                "4004cd7008d4180a"
            ]
        ]
    },
    {
        "id": "9c2074b8a2a8899a",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "sellprice",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "sellprice",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 1080,
        "wires": [
            [
                "6a83040718bd6a92"
            ]
        ]
    },
    {
        "id": "da226947de9aba2f",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "link in 14",
        "links": [
            "dfdc83f34a2e6c2c"
        ],
        "x": 115,
        "y": 1140,
        "wires": [
            [
                "640f267c2da4ab3d",
                "946c0d8e1ca122ec",
                "a616c6585bebaa2d"
            ]
        ]
    },
    {
        "id": "4004cd7008d4180a",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "buyprice",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "buyprice",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 1200,
        "wires": [
            [
                "1106452e37f469ab"
            ]
        ]
    },
    {
        "id": "d69a8a374fd95981",
        "type": "SumUltimate",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "Math",
        "property": "payload",
        "math": "sum",
        "subtractstartfrom": "",
        "x": 430,
        "y": 1260,
        "wires": [
            [
                "b9626c0e2928092a"
            ]
        ]
    },
    {
        "id": "6de9191c10fc4db1",
        "type": "inject",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "lowprice",
        "payload": "-5",
        "payloadType": "num",
        "x": 230,
        "y": 1260,
        "wires": [
            [
                "d69a8a374fd95981"
            ]
        ]
    },
    {
        "id": "b9626c0e2928092a",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "lowprice",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "lowprice",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 1260,
        "wires": [
            [
                "ed33c948f55b270a"
            ]
        ]
    },
    {
        "id": "d5afd2047d9f0e81",
        "type": "SumUltimate",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "Math",
        "property": "payload",
        "math": "sum",
        "subtractstartfrom": "",
        "x": 430,
        "y": 1020,
        "wires": [
            [
                "30947317ba565089"
            ]
        ]
    },
    {
        "id": "cc47706e6a573be8",
        "type": "inject",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "highprice",
        "payload": "+0",
        "payloadType": "num",
        "x": 230,
        "y": 1020,
        "wires": [
            [
                "d5afd2047d9f0e81"
            ]
        ]
    },
    {
        "id": "30947317ba565089",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "highprice",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "highprice",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 1020,
        "wires": [
            [
                "70957d7169c3350f"
            ]
        ]
    },
    {
        "id": "70957d7169c3350f",
        "type": "Comparator",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "sell",
        "property": "payload",
        "math": ">",
        "topic1": "vrmdess_deGs",
        "topic2": "highprice",
        "x": 430,
        "y": 1080,
        "wires": [
            [
                "9c2074b8a2a8899a"
            ]
        ]
    },
    {
        "id": "dffb2c5f19be2daa",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "VRM DESS 24h PRICE Average",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "text",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 930,
        "y": 1140,
        "wires": []
    },
    {
        "id": "ad9ec2995dc85fe3",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "link out 32",
        "mode": "link",
        "links": [],
        "x": 1115,
        "y": 1140,
        "wires": []
    },
    {
        "id": "2f29ad86d68c9df6",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "Status",
        "property": "payload",
        "x": 430,
        "y": 1140,
        "wires": [
            [
                "dd958f208a7e877f"
            ]
        ]
    },
    {
        "id": "dd958f208a7e877f",
        "type": "rbe",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "dedup",
        "func": "rbe",
        "gap": "",
        "start": "",
        "inout": "out",
        "septopics": false,
        "property": "payload",
        "topi": "topic",
        "x": 590,
        "y": 1140,
        "wires": [
            [
                "ad9ec2995dc85fe3",
                "dffb2c5f19be2daa"
            ]
        ]
    },
    {
        "id": "8eabce534faff0ef",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "link out 33",
        "mode": "link",
        "links": [
            "d2ce4a6ecc4ca7fe"
        ],
        "x": 1115,
        "y": 1080,
        "wires": []
    },
    {
        "id": "c1a0a5f1cab9dfd3",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "link out 34",
        "mode": "link",
        "links": [
            "7fa5e37f12fec967"
        ],
        "x": 1115,
        "y": 1200,
        "wires": []
    },
    {
        "id": "02bf8520492ac5fe",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "19e122760e98d65a",
        "name": "link in 18",
        "links": [
            "1cc25eb445fcf8cc"
        ],
        "x": 115,
        "y": 980,
        "wires": [
            [
                "1e49c7b7e67f5f5a"
            ]
        ]
    },
    {
        "id": "dd0c8e91f3fe5037",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "link in 24",
        "links": [
            "1cc25eb445fcf8cc"
        ],
        "x": 115,
        "y": 600,
        "wires": [
            [
                "9b248c90038d6405"
            ]
        ]
    },
    {
        "id": "7ab35540e117665a",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "link out 42",
        "mode": "link",
        "links": [
            "0c999681d4662b67"
        ],
        "x": 1115,
        "y": 700,
        "wires": []
    },
    {
        "id": "7f92ad276f401a33",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "bf18e86e4d04ccde",
        "name": "link out 46",
        "mode": "link",
        "links": [
            "7fb61ba4bcbfc238",
            "4da2e4fb8ef9c092"
        ],
        "x": 1115,
        "y": 820,
        "wires": []
    },
    {
        "id": "7fa5e37f12fec967",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "name": "link in 32",
        "links": [
            "c1a0a5f1cab9dfd3"
        ],
        "x": 1195,
        "y": 1200,
        "wires": [
            []
        ]
    },
    {
        "id": "7fb61ba4bcbfc238",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "name": "link in 34",
        "links": [
            "7f92ad276f401a33"
        ],
        "x": 1195,
        "y": 820,
        "wires": [
            []
        ]
    },
    {
        "id": "0c999681d4662b67",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "name": "link in 35",
        "links": [
            "7ab35540e117665a"
        ],
        "x": 1195,
        "y": 700,
        "wires": [
            []
        ]
    },
    {
        "id": "d2ce4a6ecc4ca7fe",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "name": "link in 41",
        "links": [
            "8eabce534faff0ef"
        ],
        "x": 1195,
        "y": 1080,
        "wires": [
            []
        ]
    },
    {
        "id": "beac66ce2b26e039",
        "type": "vrm-api",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "vrm": "cb2c784a33130f48",
        "name": "",
        "api_type": "installations",
        "idUser": "",
        "users": "",
        "idSite": "{{flow.siteId}}",
        "installations": "stats",
        "attribute": "dynamic_ess",
        "stats_interval": "hours",
        "show_instance": false,
        "stats_start": "bod",
        "stats_end": "172800",
        "use_utc": false,
        "gps_start": "",
        "gps_end": "",
        "widgets": "PVInverterStatus",
        "instance": "",
        "vrm_id": "888888888888",
        "country": "nl",
        "b_max": "90.24",
        "tb_max": "8.5",
        "fb_max": "4.8",
        "tg_max": "5",
        "fg_max": "15",
        "b_cycle_cost": "0.1",
        "buy_price_formula": "(p+0.0205+0.10154)*1.21",
        "sell_price_formula": "(p+0.0205+0.10154)*1.21",
        "green_mode_on": "",
        "feed_in_possible": true,
        "feed_in_control_on": "",
        "b_goal_hour": "18",
        "b_goal_SOC": "100",
        "store_in_global_context": true,
        "verbose": true,
        "x": 260,
        "y": 360,
        "wires": [
            [
                "3645d84eebe3c088"
            ]
        ]
    },
    {
        "id": "3645d84eebe3c088",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "stats-ts",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "stats-ts",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "",
                "tot": "date"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 520,
        "y": 360,
        "wires": [
            [
                "3db67e14521de383"
            ]
        ]
    },
    {
        "id": "5d505c55fa072459",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1000,
        "y": 480,
        "wires": []
    },
    {
        "id": "d61c38f2082425b7",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "name": "link in 6",
        "links": [
            "ec4520a1351024f8"
        ],
        "x": 1195,
        "y": 1780,
        "wires": [
            []
        ]
    },
    {
        "id": "4b05af0a35daa436",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1420,
        "wires": []
    },
    {
        "id": "e8a806ee6679078e",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1420,
        "wires": []
    },
    {
        "id": "41e5417e9f9424f5",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1500,
        "wires": []
    },
    {
        "id": "6117e56c471d76c3",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1500,
        "wires": []
    },
    {
        "id": "a902179e23f578c7",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link in 11",
        "links": [
            "664a9401106afe9d"
        ],
        "x": 115,
        "y": 1500,
        "wires": [
            [
                "ca77e3cf803398fb"
            ]
        ]
    },
    {
        "id": "ec77f0abe7da50fb",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link in 13",
        "links": [
            "e495aa3dae6b229b"
        ],
        "x": 115,
        "y": 1420,
        "wires": [
            [
                "5ad834e2a880a7ce"
            ]
        ]
    },
    {
        "id": "ea268b31b0a04f39",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "Status",
        "property": "payload",
        "x": 390,
        "y": 1420,
        "wires": [
            [
                "f00274ee3aead9f9"
            ]
        ]
    },
    {
        "id": "b8ab6f6e58d27355",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "CHARGE",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1820,
        "wires": []
    },
    {
        "id": "b5621b08c088c279",
        "type": "InjectUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "AUTO",
        "topic": "master",
        "curVal": true,
        "outputJSON": "{ \n\t\"payload\":\"mypayload\",\n\t\"topic\":\"mytopic\"\n}",
        "x": 310,
        "y": 1780,
        "wires": [
            [],
            [],
            [
                "a24b581452b1d4c6"
            ],
            []
        ]
    },
    {
        "id": "20c79aa6fc5cf853",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link in 16",
        "links": [
            "0f8e506b40d6ab4c"
        ],
        "x": 115,
        "y": 1600,
        "wires": [
            [
                "8f1d92806f1af11f",
                "f15c0ec84fefe063"
            ]
        ]
    },
    {
        "id": "8f1d92806f1af11f",
        "type": "BooleanLogicUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "",
        "payloadPropName": "payload",
        "filtertrue": "both",
        "persist": true,
        "sInitializeWith": "WaitForPayload",
        "triggertopic": "trigger",
        "outputtriggeredby": "all",
        "inputCount": "2",
        "topic": "price-fc",
        "restrictinputevaluation": false,
        "delayEvaluation": "0",
        "translatorConfig": "",
        "x": 300,
        "y": 1660,
        "wires": [
            [
                "cd49f0f75f3d949f"
            ],
            [],
            []
        ]
    },
    {
        "id": "964b56b00a9c50b7",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "charge",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "charge",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 750,
        "y": 1780,
        "wires": [
            [
                "8d149755ca148829",
                "e9aae8a399b0fa19"
            ]
        ]
    },
    {
        "id": "985148527157a4ee",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1820,
        "wires": []
    },
    {
        "id": "5ad834e2a880a7ce",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "nodered_b",
        "func": "//\n/*\nlet hour = msg.payload\nlet topic = 'nr_dess_b'\n\nlet flow_get = 'dess'\nlet dess = flow.get( flow_get )\nlet get_dess_array = dess.output.b\n\nlet is_dess_array = get_dess_array[hour] !== undefined\nlet dess_array = ( is_dess_array ? get_dess_array[hour] : false )\n\nif ( is_dess_array )\n{\n    let kWfactor = 1000\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = kWfactor * dess_array * multiplier \n    dess_array = ( multiplied - multiplied % 1 ) / multiplier\n}\n\nlet fill = ( is_dess_array  ? 'grey' : 'red')\nlet shape = 'dot'\nlet text = ( topic + ' : ' + dess_array )\nnode.status({fill, shape, text})\n\nmsg.payload = dess_array\nmsg.topic = topic\nreturn msg\n*/\n\n//\nlet hour = msg.payload\nlet output_object = 'b'\nlet topic = 'nodered_' + output_object\nlet get_flow_item = 'dess'\nlet flow_item = flow.get( get_flow_item )\nlet flow_object = flow_item.output[output_object]\nlet object_keys = Object.keys(flow_object).length\nlet is_object = ( object_keys > 0 )\nlet get_value = ( is_object ? flow_object[hour] : false )\n\nlet rounded = get_value\nif ( is_object)\n{\n    let factor = 1000   //kW to W\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier\n}\n\nlet fill = ( is_object  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( output_object + ' at ' + hour + 'h : ' + rounded + 'W')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 230,
        "y": 1420,
        "wires": [
            [
                "ea268b31b0a04f39"
            ]
        ]
    },
    {
        "id": "f00274ee3aead9f9",
        "type": "function",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "nodered_fc (-)",
        "func": "msg.payload = - msg.payload\nlet fill = 'grey'\nlet shape = 'dot'\nlet text = ( msg.payload )\nnode.status({fill, shape, text})\nmsg.topic = 'nodered_fc'\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 620,
        "y": 1420,
        "wires": [
            [
                "e8a806ee6679078e",
                "48840887dbe8e1ab",
                "664a9401106afe9d"
            ]
        ]
    },
    {
        "id": "e9aae8a399b0fa19",
        "type": "rbe",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "dedup",
        "func": "rbe",
        "gap": "",
        "start": "",
        "inout": "out",
        "septopics": false,
        "property": "payload",
        "topi": "topic",
        "x": 750,
        "y": 1820,
        "wires": [
            [
                "b8ab6f6e58d27355",
                "985148527157a4ee"
            ]
        ]
    },
    {
        "id": "3cb6186863b5e1c5",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "Status",
        "property": "payload",
        "x": 770,
        "y": 1500,
        "wires": [
            [
                "41e5417e9f9424f5",
                "6117e56c471d76c3",
                "0f8e506b40d6ab4c"
            ]
        ]
    },
    {
        "id": "48840887dbe8e1ab",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "Status",
        "property": "payload",
        "x": 770,
        "y": 1420,
        "wires": [
            [
                "4b05af0a35daa436"
            ]
        ]
    },
    {
        "id": "8d149755ca148829",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "Status",
        "property": "payload",
        "x": 890,
        "y": 1780,
        "wires": [
            [
                "ec4520a1351024f8"
            ]
        ]
    },
    {
        "id": "a24b581452b1d4c6",
        "type": "InterruptFlowUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "AUTO",
        "triggertopic": "master",
        "initializewith": "1",
        "autoToggle": "0",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 540,
        "y": 1780,
        "wires": [
            [
                "964b56b00a9c50b7"
            ]
        ]
    },
    {
        "id": "ca77e3cf803398fb",
        "type": "Comparator",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "forecast >= setpoint",
        "property": "payload",
        "math": ">=",
        "topic1": "nodered_fc",
        "topic2": "setpoint",
        "x": 430,
        "y": 1500,
        "wires": [
            [
                "f5ed7156153e4dbe"
            ]
        ]
    },
    {
        "id": "f5ed7156153e4dbe",
        "type": "change",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "nodered_charge",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "nodered_charge",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 620,
        "y": 1500,
        "wires": [
            [
                "3cb6186863b5e1c5"
            ]
        ]
    },
    {
        "id": "2279f310ec4e2f42",
        "type": "inject",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "setpoint",
        "payload": "3000",
        "payloadType": "num",
        "x": 240,
        "y": 1540,
        "wires": [
            [
                "ca77e3cf803398fb"
            ]
        ]
    },
    {
        "id": "8316001bac9be6b5",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1660,
        "wires": []
    },
    {
        "id": "3295daa35b749302",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1660,
        "wires": []
    },
    {
        "id": "cd49f0f75f3d949f",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "Status",
        "property": "payload",
        "x": 510,
        "y": 1660,
        "wires": [
            [
                "a24b581452b1d4c6",
                "8316001bac9be6b5",
                "3295daa35b749302"
            ]
        ]
    },
    {
        "id": "4da2e4fb8ef9c092",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link in 18",
        "links": [
            "7f92ad276f401a33"
        ],
        "x": 115,
        "y": 1720,
        "wires": [
            [
                "8f1d92806f1af11f",
                "64e08cc19828e8b5"
            ]
        ]
    },
    {
        "id": "b465d74a23bf4971",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1720,
        "wires": []
    },
    {
        "id": "feaaa5737bd8aa91",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1600,
        "wires": []
    },
    {
        "id": "1a6fbfe92bad130e",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "topic",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "topic",
        "statusType": "msg",
        "x": 890,
        "y": 1360,
        "wires": []
    },
    {
        "id": "a173767a076a3c72",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1360,
        "wires": []
    },
    {
        "id": "4ff1f65593fa72da",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "Status",
        "property": "payload",
        "x": 770,
        "y": 1360,
        "wires": [
            [
                "1a6fbfe92bad130e",
                "a173767a076a3c72",
                "e495aa3dae6b229b"
            ]
        ]
    },
    {
        "id": "3b646167607365a4",
        "type": "link in",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link in 43",
        "links": [
            "1cc25eb445fcf8cc"
        ],
        "x": 115,
        "y": 1360,
        "wires": [
            [
                "4ff1f65593fa72da"
            ]
        ]
    },
    {
        "id": "664a9401106afe9d",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link out 6",
        "mode": "link",
        "links": [
            "a902179e23f578c7"
        ],
        "x": 1115,
        "y": 1420,
        "wires": []
    },
    {
        "id": "0f8e506b40d6ab4c",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link out 8",
        "mode": "link",
        "links": [
            "20c79aa6fc5cf853"
        ],
        "x": 1115,
        "y": 1500,
        "wires": []
    },
    {
        "id": "e495aa3dae6b229b",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link out 20",
        "mode": "link",
        "links": [
            "ec77f0abe7da50fb"
        ],
        "x": 1115,
        "y": 1360,
        "wires": []
    },
    {
        "id": "ec4520a1351024f8",
        "type": "link out",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "link out 47",
        "mode": "link",
        "links": [
            "d61c38f2082425b7"
        ],
        "x": 1115,
        "y": 1780,
        "wires": []
    },
    {
        "id": "bbf8849cdd3ab166",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1600,
        "wires": []
    },
    {
        "id": "327a8e1e51cccf49",
        "type": "debug",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "payload",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 1020,
        "y": 1720,
        "wires": []
    },
    {
        "id": "f15c0ec84fefe063",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "Status",
        "property": "payload",
        "x": 770,
        "y": 1600,
        "wires": [
            [
                "feaaa5737bd8aa91",
                "bbf8849cdd3ab166"
            ]
        ]
    },
    {
        "id": "64e08cc19828e8b5",
        "type": "StatusUltimate",
        "z": "39aff6142244bf9b",
        "g": "a9c10fb87af2e1b7",
        "name": "Status",
        "property": "payload",
        "x": 750,
        "y": 1720,
        "wires": [
            [
                "b465d74a23bf4971",
                "327a8e1e51cccf49"
            ]
        ]
    },
    {
        "id": "68f3cb8cbbc1d6bb",
        "type": "victron-dynamic-ess",
        "z": "39aff6142244bf9b",
        "g": "34b73fba4df2b7ba",
        "name": "",
        "vrm_id": "888888888888",
        "vrmtoken": "8888888888888888888888888888888888888888888888888888888888888888",
        "country": "nl",
        "contract_buy": "AGILE-24-04-03",
        "contract_sell": "AGILE-24-04-03",
        "b_max": "90",
        "fb_max": "5",
        "tb_max": "8.5",
        "fg_max": "9",
        "tg_max": "4.5",
        "b_cycle_cost": "0.1",
        "buy_price_formula": "p*1.21",
        "sell_price_formula": "p*1.21",
        "green_mode_on": false,
        "b_goal_hour": "18",
        "b_goal_SOC": "95",
        "feed_in_possible": true,
        "feed_in_control_on": false,
        "verbose": false,
        "x": 200,
        "y": 480,
        "wires": [
            [],
            [],
            [],
            []
        ]
    },
    {
        "id": "cb2c784a33130f48",
        "type": "config-vrm-api",
        "name": "VRM"
    }
]

Hi @UpCycleElectric,

The post size limitation is for the entire community, and I can’t increase it any further.

The ‘workaround’ would be to use an alternative implementation with iframes, and an off site storage solution located https://flows.nodered.org

<iframe width="100%" height="250px"
    src="https://flows.nodered.org/flow/7c2dd3ccde70746a40ef8f5aa58c591c/share?height=100"
    allow="clipboard-read; clipboard-write" style="border: none;"></iframe>

from

Cool :smiling_face_with_sunglasses:.

Any idea how to get the Victron specific (and other) nodes ‘recognized’ as well?

Or should I just RTFM :nerd_face:

We are aware of the missing icons, but don’t have a solution yet.

The source code for the integration is here if you want to try?

I don’t have a GitHub account and it will probably be more ‘motivating’ to the author as well when somebody from the Victron dev team enters a ‘code issue / feature request’ there. Could you do that?

Not me personally, but someone from Victron is in touch with the developer already, and they have already flagged it.

I just don’t think it is the priority for anyone yet. I agree it would be much nicer to have it though.

A post was split to a new topic: Can we make DESS dedicated top level category?

A post was split to a new topic: Request for DESS hybrid flow

thx looks nice.

Hi this does not work for me?
I paste it into the „formatted text“ </>.
I get the code, but not the visualization.


[{"id":"b9ce6c015a68d455","type":"change","z":"526dabca3fe6e9b3","name":"Parameter festlegen","rules":[{"t":"set","p":"MaxLadestromMPII","pt":"flow","to":"35","tot":"num"},{"t":"set","p":"MinSOCRegelung","pt":"flow","to":"25","tot":"num"},{"t":"set","p":"MaxSOCRegelung","pt":"flow","to":"70","tot":"num"},{"t":"set","p":"minPVErtragWh","pt":"flow","to":"28000","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":435,"y":140,"wires":[["9b7119f6e93720ed","faed17682107e6b7","c3d59f371657b72d","535783083c1bfb5e","d4a1506aa46abdd2","044a9885051f94aa"]],"icon":"node-red/alert.svg"},{"id":"2558d9b6197c76d0","type":"inject","z":"526dabca3fe6e9b3","name":"Refresh täglich 4:00","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 04 * * *","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":175,"y":140,"wires":[["b9ce6c015a68d455"]]},{"id":"9b7119f6e93720ed","type":"function","z":"526dabca3fe6e9b3","name":"Steigung","func":"var MaxLadestromMPII = flow.get (\"MaxLadestromMPII\");\nvar MinSOCRegelung = flow.get (\"MinSOCRegelung\");\nvar MaxSOCRegelung = flow.get (\"MaxSOCRegelung\")\nvar Steigung = Number(MaxLadestromMPII) / ( Number(MaxSOCRegelung) - Number(MinSOCRegelung));\nflow.set('Steigung',Steigung);\nmsg.payload = Steigung;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} A/dSOC` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":320,"wires":[[]]},{"id":"faed17682107e6b7","type":"function","z":"526dabca3fe6e9b3","name":"Achsenabschnitt","func":"var MaxLadestromMPII = flow.get (\"MaxLadestromMPII\");\nvar MinSOCRegelung = flow.get (\"MinSOCRegelung\");\nvar Steigung = flow.get (\"Steigung\")\nvar Achse = Number(MaxLadestromMPII) + Number(MinSOCRegelung) * Number(Steigung);\nflow.set('Achse',Achse);\nmsg.payload = Achse;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} %SOC` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":850,"y":380,"wires":[[]]},{"id":"c3d59f371657b72d","type":"function","z":"526dabca3fe6e9b3","name":"max. Ladestrom Multi Plus","func":"var MaxLadestromMPII = flow.get (\"MaxLadestromMPII\");\n\nmsg.payload = MaxLadestromMPII;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} A` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":895,"y":140,"wires":[[]]},{"id":"535783083c1bfb5e","type":"function","z":"526dabca3fe6e9b3","name":"min. SOC für Regelung","func":"var MinSOCRegelung = flow.get (\"MinSOCRegelung\");\n\nmsg.payload = MinSOCRegelung;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} %` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":875,"y":200,"wires":[[]]},{"id":"d4a1506aa46abdd2","type":"function","z":"526dabca3fe6e9b3","name":"max. SOC für Regelung","func":"var MaxSOCRegelung = flow.get (\"MaxSOCRegelung\");\n\nmsg.payload = MaxSOCRegelung;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} %` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":875,"y":260,"wires":[[]]},{"id":"044a9885051f94aa","type":"function","z":"526dabca3fe6e9b3","name":"min. PV Ertrag für Morgeneinspeisung (in Wh)","func":"var minPVErtragWh = flow.get (\"minPVErtragWh\");\n\nmsg.payload = minPVErtragWh;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} Wh` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":440,"wires":[[]]}]

Hi, we are aware. A recent site update appears to have broken the plugin that renders the flows. Hopefully sorted soon.

1 Like

@Ruediger it seems a recent update set the default text editor to Rich text.
In the top left of the text entry box, click on the button and change it to simple text mode, then the flow markup will work again.

And start with a line stating ```flows with the correct ` not a ’

[{"id":"b9ce6c015a68d455","type":"change","z":"526dabca3fe6e9b3","name":"Parameter festlegen","rules":[{"t":"set","p":"MaxLadestromMPII","pt":"flow","to":"35","tot":"num"},{"t":"set","p":"MinSOCRegelung","pt":"flow","to":"25","tot":"num"},{"t":"set","p":"MaxSOCRegelung","pt":"flow","to":"70","tot":"num"},{"t":"set","p":"minPVErtragWh","pt":"flow","to":"28000","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":435,"y":140,"wires":[["9b7119f6e93720ed","faed17682107e6b7","c3d59f371657b72d","535783083c1bfb5e","d4a1506aa46abdd2","044a9885051f94aa"]],"icon":"node-red/alert.svg"},{"id":"2558d9b6197c76d0","type":"inject","z":"526dabca3fe6e9b3","name":"Refresh täglich 4:00","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 04 * * *","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":175,"y":140,"wires":[["b9ce6c015a68d455"]]},{"id":"9b7119f6e93720ed","type":"function","z":"526dabca3fe6e9b3","name":"Steigung","func":"var MaxLadestromMPII = flow.get (\"MaxLadestromMPII\");\nvar MinSOCRegelung = flow.get (\"MinSOCRegelung\");\nvar MaxSOCRegelung = flow.get (\"MaxSOCRegelung\")\nvar Steigung = Number(MaxLadestromMPII) / ( Number(MaxSOCRegelung) - Number(MinSOCRegelung));\nflow.set('Steigung',Steigung);\nmsg.payload = Steigung;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} A/dSOC` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":320,"wires":[[]]},{"id":"faed17682107e6b7","type":"function","z":"526dabca3fe6e9b3","name":"Achsenabschnitt","func":"var MaxLadestromMPII = flow.get (\"MaxLadestromMPII\");\nvar MinSOCRegelung = flow.get (\"MinSOCRegelung\");\nvar Steigung = flow.get (\"Steigung\")\nvar Achse = Number(MaxLadestromMPII) + Number(MinSOCRegelung) * Number(Steigung);\nflow.set('Achse',Achse);\nmsg.payload = Achse;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} %SOC` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":850,"y":380,"wires":[[]]},{"id":"c3d59f371657b72d","type":"function","z":"526dabca3fe6e9b3","name":"max. Ladestrom Multi Plus","func":"var MaxLadestromMPII = flow.get (\"MaxLadestromMPII\");\n\nmsg.payload = MaxLadestromMPII;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} A` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":895,"y":140,"wires":[[]]},{"id":"535783083c1bfb5e","type":"function","z":"526dabca3fe6e9b3","name":"min. SOC für Regelung","func":"var MinSOCRegelung = flow.get (\"MinSOCRegelung\");\n\nmsg.payload = MinSOCRegelung;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} %` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":875,"y":200,"wires":[[]]},{"id":"d4a1506aa46abdd2","type":"function","z":"526dabca3fe6e9b3","name":"max. SOC für Regelung","func":"var MaxSOCRegelung = flow.get (\"MaxSOCRegelung\");\n\nmsg.payload = MaxSOCRegelung;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} %` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":875,"y":260,"wires":[[]]},{"id":"044a9885051f94aa","type":"function","z":"526dabca3fe6e9b3","name":"min. PV Ertrag für Morgeneinspeisung (in Wh)","func":"var minPVErtragWh = flow.get (\"minPVErtragWh\");\n\nmsg.payload = minPVErtragWh;\nnode.status({ fill: 'green', shape: 'dot', text: `${msg.payload} Wh` });\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":940,"y":440,"wires":[[]]}]

Extremely useful, I’d like to thank all the people involved in all innovations and updates of our magical system :folded_hands:

[
    {
        "id": "1b64fbea54c27703",
        "type": "group",
        "z": "4dc207279e9d07bd",
        "name": "UpCyCle Hybrid DESS Trade : D-Bus Schedule Changes",
        "style": {
            "label": true
        },
        "nodes": [
            "821d48b3bb4fa9a2",
            "230b27171c97b3bb",
            "26ce65288323da7a",
            "6a9658c7046b6e26",
            "7b2a8877f1db8ebe",
            "a531f0bd34af28df",
            "649018a61f280b89",
            "199edbba9e565906",
            "7c5fb9883d573d56",
            "2350315cfa74e095",
            "1ad751b5f2c6977d",
            "10162a201d0fbdbb",
            "5ce196f62f41381f",
            "e6db09f73e113c1f",
            "2afc09dc12acb495",
            "74610d435e16b689",
            "73690788fb5e7419",
            "84b35721a3f908d4",
            "0de47374d029bb3d",
            "47f94683a63e7eb3",
            "0da8289ecbde53c1",
            "64de99a6e23c0634",
            "666eaaaae3191b14",
            "e56bfcd0459e336d",
            "45ea17a66565442c",
            "79b7c94c4f2e846d",
            "9e35f44e4f702dfe",
            "eaaa08f3a6ce251d",
            "124ded6d3fbaae55",
            "95f1de566ec1d601",
            "fd0798269fb1e766",
            "e183280373e2b618",
            "1b0fb06bc5128652",
            "6f9f9622db553fb9",
            "d7d6cf53c791757f",
            "1f027874f955c875",
            "fdb4ea23aaac5bdb",
            "bf37d9f1c7d37e10",
            "dab69e85945b0792",
            "a2429d968ee935a4",
            "8b0515db01f6c93c",
            "b04b0758ac840dd0",
            "a16c4406ece8f86f",
            "a820fcef3dafa876",
            "871ab152ae6b2460"
        ],
        "x": 3514,
        "y": 1519,
        "w": 1172,
        "h": 442
    },
    {
        "id": "821d48b3bb4fa9a2",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/0/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/0/Soc",
            "name": "/Settings/DynamicEss/Schedule/0/Soc",
            "type": "number",
            "value": 64
        },
        "name": "dbsSoC0",
        "onlyChanges": true,
        "x": 3600,
        "y": 1560,
        "wires": [
            [
                "0de47374d029bb3d"
            ]
        ]
    },
    {
        "id": "230b27171c97b3bb",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/1/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/1/Soc",
            "name": "/Settings/DynamicEss/Schedule/1/Soc",
            "type": "number",
            "value": 62
        },
        "name": "dbsSoC1",
        "onlyChanges": true,
        "x": 3640,
        "y": 1600,
        "wires": [
            [
                "0de47374d029bb3d"
            ]
        ]
    },
    {
        "id": "26ce65288323da7a",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/2/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/2/Soc",
            "name": "/Settings/DynamicEss/Schedule/2/Soc",
            "type": "number",
            "value": 62
        },
        "name": "dbsSoC2",
        "onlyChanges": true,
        "x": 3680,
        "y": 1640,
        "wires": [
            [
                "0de47374d029bb3d"
            ]
        ]
    },
    {
        "id": "6a9658c7046b6e26",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/3/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/3/Soc",
            "name": "/Settings/DynamicEss/Schedule/3/Soc",
            "type": "number",
            "value": 62
        },
        "name": "dbsSoC3",
        "onlyChanges": true,
        "x": 3720,
        "y": 1680,
        "wires": [
            [
                "0de47374d029bb3d"
            ]
        ]
    },
    {
        "id": "7b2a8877f1db8ebe",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/4/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/4/Restrictions",
            "name": "/Settings/DynamicEss/Schedule/4/Restrictions",
            "type": "number",
            "value": 0
        },
        "name": "dbsRes4",
        "onlyChanges": true,
        "x": 4360,
        "y": 1800,
        "wires": [
            [
                "47f94683a63e7eb3"
            ]
        ]
    },
    {
        "id": "a531f0bd34af28df",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/5/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/5/Restrictions",
            "name": "/Settings/DynamicEss/Schedule/5/Restrictions",
            "type": "number",
            "value": 0
        },
        "name": "dbsRes5",
        "onlyChanges": true,
        "x": 4400,
        "y": 1840,
        "wires": [
            [
                "47f94683a63e7eb3"
            ]
        ]
    },
    {
        "id": "649018a61f280b89",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/6/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/6/Restrictions",
            "name": "/Settings/DynamicEss/Schedule/6/Restrictions",
            "type": "number",
            "value": 0
        },
        "name": "dbsRes6",
        "onlyChanges": true,
        "x": 4440,
        "y": 1880,
        "wires": [
            [
                "47f94683a63e7eb3"
            ]
        ]
    },
    {
        "id": "199edbba9e565906",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/7/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/7/Restrictions",
            "name": "/Settings/DynamicEss/Schedule/7/Restrictions",
            "type": "number",
            "value": 0
        },
        "name": "dbsRes7",
        "onlyChanges": true,
        "x": 4480,
        "y": 1920,
        "wires": [
            [
                "47f94683a63e7eb3"
            ]
        ]
    },
    {
        "id": "7c5fb9883d573d56",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/4/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/4/Soc",
            "name": "/Settings/DynamicEss/Schedule/4/Soc",
            "type": "number",
            "value": 61
        },
        "name": "dbsSoC4",
        "onlyChanges": true,
        "x": 3600,
        "y": 1800,
        "wires": [
            [
                "0de47374d029bb3d"
            ]
        ]
    },
    {
        "id": "2350315cfa74e095",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/5/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/5/Soc",
            "name": "/Settings/DynamicEss/Schedule/5/Soc",
            "type": "number",
            "value": 61
        },
        "name": "dbsSoC5",
        "onlyChanges": true,
        "x": 3640,
        "y": 1840,
        "wires": [
            [
                "0de47374d029bb3d"
            ]
        ]
    },
    {
        "id": "1ad751b5f2c6977d",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/6/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/6/Soc",
            "name": "/Settings/DynamicEss/Schedule/6/Soc",
            "type": "number",
            "value": 61
        },
        "name": "dbsSoC6",
        "onlyChanges": true,
        "x": 3680,
        "y": 1880,
        "wires": [
            [
                "0de47374d029bb3d"
            ]
        ]
    },
    {
        "id": "10162a201d0fbdbb",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/7/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/7/Soc",
            "name": "/Settings/DynamicEss/Schedule/7/Soc",
            "type": "number",
            "value": 61
        },
        "name": "dbsSoC7",
        "onlyChanges": true,
        "x": 3720,
        "y": 1920,
        "wires": [
            [
                "0de47374d029bb3d"
            ]
        ]
    },
    {
        "id": "5ce196f62f41381f",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/0/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/0/Restrictions",
            "name": "/Settings/DynamicEss/Schedule/0/Restrictions",
            "type": "number",
            "value": 0
        },
        "name": "dbsRes0",
        "onlyChanges": true,
        "x": 4360,
        "y": 1560,
        "wires": [
            [
                "47f94683a63e7eb3"
            ]
        ]
    },
    {
        "id": "e6db09f73e113c1f",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/1/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/1/Restrictions",
            "name": "/Settings/DynamicEss/Schedule/1/Restrictions",
            "type": "number",
            "value": 0
        },
        "name": "dbsRes1",
        "onlyChanges": true,
        "x": 4400,
        "y": 1600,
        "wires": [
            [
                "47f94683a63e7eb3"
            ]
        ]
    },
    {
        "id": "2afc09dc12acb495",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/2/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/2/Restrictions",
            "name": "/Settings/DynamicEss/Schedule/2/Restrictions",
            "type": "number",
            "value": 0
        },
        "name": "dbsRes2",
        "onlyChanges": true,
        "x": 4440,
        "y": 1640,
        "wires": [
            [
                "47f94683a63e7eb3"
            ]
        ]
    },
    {
        "id": "74610d435e16b689",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/3/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/3/Restrictions",
            "name": "/Settings/DynamicEss/Schedule/3/Restrictions",
            "type": "number",
            "value": 0
        },
        "name": "dbsRes3",
        "onlyChanges": true,
        "x": 4480,
        "y": 1680,
        "wires": [
            [
                "47f94683a63e7eb3"
            ]
        ]
    },
    {
        "id": "73690788fb5e7419",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "link out 89",
        "mode": "link",
        "links": [
            "93342a5994b7ccdc"
        ],
        "x": 3865,
        "y": 1740,
        "wires": []
    },
    {
        "id": "84b35721a3f908d4",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "dbsSoCX",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 3820,
        "y": 1780,
        "wires": []
    },
    {
        "id": "0de47374d029bb3d",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "Status",
        "property": "payload",
        "x": 3630,
        "y": 1740,
        "wires": [
            [
                "eaaa08f3a6ce251d",
                "84b35721a3f908d4"
            ]
        ]
    },
    {
        "id": "47f94683a63e7eb3",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "Status",
        "property": "payload",
        "x": 4390,
        "y": 1740,
        "wires": [
            [
                "9e35f44e4f702dfe",
                "0da8289ecbde53c1"
            ]
        ]
    },
    {
        "id": "0da8289ecbde53c1",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "dbsResX",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 4580,
        "y": 1780,
        "wires": []
    },
    {
        "id": "64de99a6e23c0634",
        "type": "victron-input-dess",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.system/0",
        "path": "/DynamicEss/TargetSoc",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/DynamicEss/TargetSoc",
            "type": "float",
            "name": "The set target SOC for this time slot (%)"
        },
        "name": "dbsSoCT",
        "onlyChanges": true,
        "x": 3820,
        "y": 1860,
        "wires": [
            [
                "79b7c94c4f2e846d",
                "871ab152ae6b2460"
            ]
        ]
    },
    {
        "id": "666eaaaae3191b14",
        "type": "victron-input-dess",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.system/0",
        "path": "/DynamicEss/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/DynamicEss/Restrictions",
            "type": "enum",
            "name": "Active restrictions",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            }
        },
        "name": "dbsResT",
        "onlyChanges": true,
        "x": 4580,
        "y": 1860,
        "wires": [
            [
                "45ea17a66565442c",
                "a16c4406ece8f86f"
            ]
        ]
    },
    {
        "id": "e56bfcd0459e336d",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "link out 88",
        "mode": "link",
        "links": [
            "93342a5994b7ccdc"
        ],
        "x": 4625,
        "y": 1740,
        "wires": []
    },
    {
        "id": "45ea17a66565442c",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "link out 91",
        "mode": "link",
        "links": [],
        "x": 4625,
        "y": 1920,
        "wires": []
    },
    {
        "id": "79b7c94c4f2e846d",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "link out 92",
        "mode": "link",
        "links": [],
        "x": 3865,
        "y": 1920,
        "wires": []
    },
    {
        "id": "9e35f44e4f702dfe",
        "type": "delay",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "1/1s",
        "pauseType": "rate",
        "timeout": "1",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "allowrate": false,
        "outputs": 1,
        "x": 4550,
        "y": 1740,
        "wires": [
            [
                "e56bfcd0459e336d"
            ]
        ]
    },
    {
        "id": "eaaa08f3a6ce251d",
        "type": "delay",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "1/1s",
        "pauseType": "rate",
        "timeout": "1",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "allowrate": false,
        "outputs": 1,
        "x": 3790,
        "y": 1740,
        "wires": [
            [
                "73690788fb5e7419"
            ]
        ]
    },
    {
        "id": "124ded6d3fbaae55",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/4/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/4/Strategy",
            "name": "/Settings/DynamicEss/Schedule/4/Strategy",
            "type": "number",
            "value": 3
        },
        "name": "dbsStr4",
        "onlyChanges": true,
        "x": 3970,
        "y": 1800,
        "wires": [
            [
                "fdb4ea23aaac5bdb"
            ]
        ]
    },
    {
        "id": "95f1de566ec1d601",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/5/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/5/Strategy",
            "name": "/Settings/DynamicEss/Schedule/5/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbsStr5",
        "onlyChanges": true,
        "x": 4010,
        "y": 1840,
        "wires": [
            [
                "fdb4ea23aaac5bdb"
            ]
        ]
    },
    {
        "id": "fd0798269fb1e766",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/6/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/6/Strategy",
            "name": "/Settings/DynamicEss/Schedule/6/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbsStr6",
        "onlyChanges": true,
        "x": 4050,
        "y": 1880,
        "wires": [
            [
                "fdb4ea23aaac5bdb"
            ]
        ]
    },
    {
        "id": "e183280373e2b618",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/7/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/7/Strategy",
            "name": "/Settings/DynamicEss/Schedule/7/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbsStr7",
        "onlyChanges": true,
        "x": 4090,
        "y": 1920,
        "wires": [
            [
                "fdb4ea23aaac5bdb"
            ]
        ]
    },
    {
        "id": "1b0fb06bc5128652",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/0/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/0/Strategy",
            "name": "/Settings/DynamicEss/Schedule/0/Strategy",
            "type": "number",
            "value": 3
        },
        "name": "dbsStr0",
        "onlyChanges": true,
        "x": 3970,
        "y": 1560,
        "wires": [
            [
                "fdb4ea23aaac5bdb"
            ]
        ]
    },
    {
        "id": "6f9f9622db553fb9",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/1/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/1/Strategy",
            "name": "/Settings/DynamicEss/Schedule/1/Strategy",
            "type": "number",
            "value": 3
        },
        "name": "dbsStr1",
        "onlyChanges": true,
        "x": 4010,
        "y": 1600,
        "wires": [
            [
                "fdb4ea23aaac5bdb"
            ]
        ]
    },
    {
        "id": "d7d6cf53c791757f",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/2/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/2/Strategy",
            "name": "/Settings/DynamicEss/Schedule/2/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbsStr2",
        "onlyChanges": true,
        "x": 4050,
        "y": 1640,
        "wires": [
            [
                "fdb4ea23aaac5bdb"
            ]
        ]
    },
    {
        "id": "1f027874f955c875",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/3/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/3/Strategy",
            "name": "/Settings/DynamicEss/Schedule/3/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbsStr3",
        "onlyChanges": true,
        "x": 4090,
        "y": 1680,
        "wires": [
            [
                "fdb4ea23aaac5bdb"
            ]
        ]
    },
    {
        "id": "fdb4ea23aaac5bdb",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "Status",
        "property": "payload",
        "x": 4010,
        "y": 1740,
        "wires": [
            [
                "bf37d9f1c7d37e10",
                "b04b0758ac840dd0"
            ]
        ]
    },
    {
        "id": "bf37d9f1c7d37e10",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "dbsStrX",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 4200,
        "y": 1780,
        "wires": []
    },
    {
        "id": "dab69e85945b0792",
        "type": "victron-input-dess",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "service": "com.victronenergy.system/0",
        "path": "/DynamicEss/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/DynamicEss/Strategy",
            "type": "enum",
            "name": "Used strategy for current time slot",
            "enum": {
                "0": "Target SOC",
                "1": "Self-consumption",
                "2": "Pro battery",
                "3": "Pro grid"
            }
        },
        "name": "dbsStrT",
        "onlyChanges": true,
        "x": 4210,
        "y": 1860,
        "wires": [
            [
                "8b0515db01f6c93c",
                "a820fcef3dafa876"
            ]
        ]
    },
    {
        "id": "a2429d968ee935a4",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "link out 100",
        "mode": "link",
        "links": [
            "93342a5994b7ccdc"
        ],
        "x": 4245,
        "y": 1740,
        "wires": []
    },
    {
        "id": "8b0515db01f6c93c",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "link out 101",
        "mode": "link",
        "links": [],
        "x": 4245,
        "y": 1920,
        "wires": []
    },
    {
        "id": "b04b0758ac840dd0",
        "type": "delay",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "1/1s",
        "pauseType": "rate",
        "timeout": "1",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "allowrate": false,
        "outputs": 1,
        "x": 4170,
        "y": 1740,
        "wires": [
            [
                "a2429d968ee935a4"
            ]
        ]
    },
    {
        "id": "a16c4406ece8f86f",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "Status",
        "property": "payload",
        "x": 4590,
        "y": 1820,
        "wires": [
            [
                "0da8289ecbde53c1"
            ]
        ]
    },
    {
        "id": "a820fcef3dafa876",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "Status",
        "property": "payload",
        "x": 4210,
        "y": 1820,
        "wires": [
            [
                "bf37d9f1c7d37e10"
            ]
        ]
    },
    {
        "id": "871ab152ae6b2460",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "1b64fbea54c27703",
        "name": "Status",
        "property": "payload",
        "x": 3830,
        "y": 1820,
        "wires": [
            [
                "84b35721a3f908d4"
            ]
        ]
    },
    {
        "id": "f40dc7f0f42a4262",
        "type": "group",
        "z": "4dc207279e9d07bd",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "b2baeacd75d4b218",
            "93342a5994b7ccdc",
            "c923d2996af49859",
            "c6e57f38d6abf127",
            "ebf9591166618634",
            "7bd57c9690528660",
            "d2d6f9568b917fa5",
            "e5521533a197bdaa",
            "bac38fa0dc39a114",
            "bad024588fec1edf",
            "92e12802258fe9d3",
            "36b6d5d4e0f4be98",
            "cdcf795c3184dbd0",
            "685e18fdc6a006a3",
            "3aefe7c24fa0c99b",
            "5bef6e40deafe5a2",
            "177099cb42783207",
            "aade47b7f168241d",
            "c63b3d979847f0c2",
            "38b4fb3155057968",
            "acb4ea9f95fd46f9",
            "2ba57527d48dfbd8",
            "c3b2a99d57d92cac",
            "2a97b53899e94a21",
            "9383fbf3ff4b252e",
            "71b80e8534a1d458",
            "4cdccb71714543e1",
            "7614d25c9edc7d5b",
            "309c36b0591b9fa8",
            "9d1043367606541b",
            "16a4dea3196efa95",
            "b602c6808c8c3452",
            "f1f175c876024aaa",
            "a54dd6b5d40c9acb",
            "28f521eded645a4e",
            "3889f3aa09da0355",
            "764a62d603661493",
            "6dae752d983641e5"
        ],
        "x": 3134,
        "y": 1979,
        "w": 942,
        "h": 442
    },
    {
        "id": "b2baeacd75d4b218",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "timeslot_vrm_to_grid_fc",
        "func": "//\nlet timeslot = msg.timeslot\nlet schedules_key = 'vrm_to_grid_fc'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\n//let get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 1\n    let digits = 0\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( schedules_key + ' at Q' + timeslot + ' : ' + rounded + 'Wh')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3570,
        "y": 2260,
        "wires": [
            [
                "ebf9591166618634"
            ]
        ]
    },
    {
        "id": "93342a5994b7ccdc",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link in 24",
        "links": [
            "73690788fb5e7419",
            "e56bfcd0459e336d",
            "efd3cdb77955abe8",
            "a2429d968ee935a4"
        ],
        "x": 3575,
        "y": 2020,
        "wires": [
            [
                "cdcf795c3184dbd0"
            ]
        ]
    },
    {
        "id": "c923d2996af49859",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "timeslot_vrm_to_battery_fc",
        "func": "//\nlet timeslot = msg.timeslot\nlet schedules_key = 'vrm_to_battery_fc'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\n//let get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 1\n    let digits = 0\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( schedules_key + ' at Q' + timeslot + ' : ' + rounded + 'Wh')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3580,
        "y": 2140,
        "wires": [
            [
                "2ba57527d48dfbd8",
                "e5521533a197bdaa"
            ]
        ]
    },
    {
        "id": "c6e57f38d6abf127",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "timeslot_deGb",
        "func": "//\nlet timeslot = msg.timeslot\nlet schedules_key = 'deGb'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\nlet get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 100\n    let digits = 3\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( schedules_key + ' at Q' + timeslot + ' : ' + rounded + 'ct')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3240,
        "y": 2260,
        "wires": [
            [
                "71b80e8534a1d458"
            ]
        ]
    },
    {
        "id": "ebf9591166618634",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": ">=800",
        "func": "if (msg.payload >= 800)\n{\n    msg.payload = true\n} else {\n    msg.payload = false\n}\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3830,
        "y": 2260,
        "wires": [
            [
                "d2d6f9568b917fa5"
            ]
        ]
    },
    {
        "id": "7bd57c9690528660",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link out 42",
        "mode": "link",
        "links": [
            "6f1e157dc56351ca",
            "b61b54d0bcbfa1da"
        ],
        "x": 4035,
        "y": 2260,
        "wires": []
    },
    {
        "id": "d2d6f9568b917fa5",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "Status",
        "property": "payload",
        "x": 3950,
        "y": 2260,
        "wires": [
            [
                "7bd57c9690528660"
            ]
        ]
    },
    {
        "id": "e5521533a197bdaa",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "-800 > x < 1600",
        "func": "let bool = false\nif ( (msg.payload > -800 ) && (msg.payload < 1600) )\n{\n    bool = true\n}\nmsg.payload = bool\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3800,
        "y": 2200,
        "wires": [
            [
                "bad024588fec1edf"
            ]
        ]
    },
    {
        "id": "bac38fa0dc39a114",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link out 43",
        "mode": "link",
        "links": [],
        "x": 4035,
        "y": 2200,
        "wires": []
    },
    {
        "id": "bad024588fec1edf",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "Status",
        "property": "payload",
        "x": 3950,
        "y": 2200,
        "wires": [
            [
                "bac38fa0dc39a114"
            ]
        ]
    },
    {
        "id": "92e12802258fe9d3",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link out 46",
        "mode": "link",
        "links": [
            "ee0df1fd2c8fb89c",
            "4e2c898b8a534dc3"
        ],
        "x": 4035,
        "y": 2140,
        "wires": []
    },
    {
        "id": "36b6d5d4e0f4be98",
        "type": "delay",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "1/15s",
        "pauseType": "rate",
        "timeout": "1",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "15",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "allowrate": false,
        "outputs": 1,
        "x": 3830,
        "y": 2020,
        "wires": [
            [
                "685e18fdc6a006a3"
            ]
        ]
    },
    {
        "id": "cdcf795c3184dbd0",
        "type": "change",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "timestamp",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "timestamp",
                "tot": "str"
            },
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "",
                "tot": "date"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 3690,
        "y": 2020,
        "wires": [
            [
                "36b6d5d4e0f4be98"
            ]
        ]
    },
    {
        "id": "685e18fdc6a006a3",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "Status",
        "property": "payload",
        "x": 3950,
        "y": 2020,
        "wires": [
            [
                "4cdccb71714543e1",
                "3889f3aa09da0355"
            ]
        ]
    },
    {
        "id": "3aefe7c24fa0c99b",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "SoC_0",
        "func": "//\nlet index = 0\nlet timeslot = msg.timeslot\nlet hourf = timeslot / 4\nlet hour = hourf - ( hourf %1 )\ntimeslot = 4 * hour + index\nlet schedules_key = 'vrm_soc_plan'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\n//let get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 1\n    let digits = 6\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( schedules_key + ' at Q' + timeslot + ' : ' + rounded + '%')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3210,
        "y": 2380,
        "wires": [
            []
        ]
    },
    {
        "id": "5bef6e40deafe5a2",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "SoC_1",
        "func": "//\nlet index = 1\nlet timeslot = msg.timeslot\nlet hourf = timeslot / 4\nlet hour = hourf - ( hourf %1 )\ntimeslot = 4 * hour + index\nlet schedules_key = 'vrm_soc_plan'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\n//let get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 1\n    let digits = 6\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( schedules_key + ' at Q' + timeslot + ' : ' + rounded + '%')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3390,
        "y": 2380,
        "wires": [
            []
        ]
    },
    {
        "id": "177099cb42783207",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "SoC_2",
        "func": "//\nlet index = 2\nlet timeslot = msg.timeslot\nlet hourf = timeslot / 4\nlet hour = hourf - ( hourf %1 )\ntimeslot = 4 * hour + index\nlet schedules_key = 'vrm_soc_plan'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\n//let get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 1\n    let digits = 6\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( schedules_key + ' at Q' + timeslot + ' : ' + rounded + '%')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3570,
        "y": 2380,
        "wires": [
            []
        ]
    },
    {
        "id": "aade47b7f168241d",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "SoC_3",
        "func": "//\nlet index = 3\nlet timeslot = msg.timeslot\nlet hourf = timeslot / 4\nlet hour = hourf - ( hourf %1 )\ntimeslot = 4 * hour + index\nlet schedules_key = 'vrm_soc_plan'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\n//let get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 1\n    let digits = 6\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( schedules_key + ' at Q' + timeslot + ' : ' + rounded + '%')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3750,
        "y": 2380,
        "wires": [
            []
        ]
    },
    {
        "id": "c63b3d979847f0c2",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "SoC_4",
        "func": "//\nlet index = 4\nlet timeslot = msg.timeslot\nlet hourf = timeslot / 4\nlet hour = hourf - ( hourf %1 )\ntimeslot = 4 * hour + index\nlet schedules_key = 'vrm_soc_plan'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\n//let get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n\nif ( rounded )\n{\n    let factor = 1\n    let digits = 6\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( schedules_key + ' at Q' + timeslot + ' : ' + rounded + '%')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = topic\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3930,
        "y": 2380,
        "wires": [
            []
        ]
    },
    {
        "id": "38b4fb3155057968",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "vrmSoC",
        "func": "//\n//let index = 0\nlet timeslot = msg.timeslot\n\n/*\n//let hourf = timeslot / 4\n//let hour = hourf - ( hourf %1 )\n//timeslot = timeslot + index\nlet schedules_key = 'vrm_soc_plan'\nlet topic = 'vrmdess_' + schedules_key\n\nlet global_get = 'installations.stats';\n\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\n\nlet get_records = null\n//let get_totals = 0\n//let get_price = 0\nlet records_length = 0\nvar is_records = false\n\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n//    get_totals = get_schedules.totals[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[timeslot][1] : false )\n}\n\nlet rounded = get_value\n*/\nlet rounded = msg.payload.curValue;\nif ( rounded )\n{\n    let factor = 1\n    let digits = 6\n    let multiplier = 10 ** digits\n    let multiplied = rounded * factor * multiplier\n    rounded = ( multiplied - multiplied % 1 ) / multiplier    \n}\n\nlet fill = ( (rounded !== false)  ? 'green' : 'red')\nlet shape = 'dot'\nlet text = ( 'vrmSoC(' + timeslot + '): ' + rounded + '%')\nnode.status({fill, shape, text})\n\nmsg.payload = rounded\nmsg.text = text\nmsg.topic = 'vrmSoC'\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3820,
        "y": 2320,
        "wires": [
            [
                "6dae752d983641e5"
            ]
        ]
    },
    {
        "id": "acb4ea9f95fd46f9",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "Status",
        "property": "payload",
        "x": 3950,
        "y": 2140,
        "wires": [
            [
                "92e12802258fe9d3"
            ]
        ]
    },
    {
        "id": "2ba57527d48dfbd8",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": ">=1600",
        "func": "if (msg.payload >= 1600)\n{\n    msg.payload = true\n} else {\n    msg.payload = false\n}\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3820,
        "y": 2140,
        "wires": [
            [
                "acb4ea9f95fd46f9"
            ]
        ]
    },
    {
        "id": "c3b2a99d57d92cac",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link out 24",
        "mode": "link",
        "links": [
            "43f4eff631cea5e3"
        ],
        "x": 3675,
        "y": 2200,
        "wires": []
    },
    {
        "id": "2a97b53899e94a21",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "metrics vrm_soc_plan",
        "func": "/**\n * Processes schedule object to compute length, start/end times, min/max with indices, and averages.\n * Outputs single msg.payload with all metrics; stores in flow context.\n * @param {Object} msg Node-RED message with payload.schedule (array of [timestamp, value] pairs)\n * @returns {Object} msg with payload {length, startTime, endTime, minIndex, minTime, minValue, maxIndex, maxTime, maxValue, currentIndex, currentTime, currentValue, fullAverage, forwardAverage}\n */\n\nlet payload = msg.payload;   //usually timestamp\n\nlet schedules_key = 'vrm_soc_plan';\nlet topic = 'vrmdess_' + schedules_key;\n\nlet global_get = 'installations.stats';\nlet get_schedules = global.get( global_get );\nlet is_schedules = !( get_schedules == undefined || get_schedules == null );\n\nlet get_records = null;\nif ( is_schedules ) {\n    get_records = get_schedules.records[schedules_key]\n}\nlet schedule = get_records;\n\n//\nconst length = schedule.length; //TODO Fix for venusos update, length unknown\n \nif (!length || !Array.isArray(schedule)) {\n    node.warn(\"Invalid or empty schedule array\");\n    msg.payload = { error: \"Invalid or empty schedule array\" };\n    return msg;\n}\n\nconst curTimeSec = Math.floor(Date.now() );  // / 1000);\nlet startTime = null;\nlet endTime = null;\nlet minIndex = null;\nlet minTime = null;\nlet minValue = null;\nlet maxIndex = null;\nlet maxTime = null;\nlet maxValue = null;\nlet minfwdIndex = null;\nlet minfwdTime = null;\nlet minfwdValue = null;\nlet maxfwdIndex = null;\nlet maxfwdTime = null;\nlet maxfwdValue = null;\nlet curIndex = null;\nlet curTime = null;\nlet curValue = null;\nlet fullSum = 0;\nlet fullCount = 0;\nlet fwdSum = 0;\nlet fwdCount = 0;\nlet lastValue = 0;\nlet fwdupSum = 0;\nlet fwddwnSum = 0;\n\nfor (const [idx, [timestamp, value]] of schedule.entries()) {\n    // Validate data pair\n    if (!Array.isArray([timestamp, value]) || typeof timestamp !== \"number\" || !Number.isInteger(timestamp) || typeof value !== \"number\" || isNaN(value)) {\n        node.warn(`Invalid data at schedule[${idx}]`);\n        continue;\n    }\n    // Update start/end times\n    if (startTime === null || timestamp < startTime) startTime = timestamp;\n    if (endTime === null || timestamp > endTime) endTime = timestamp;\n    // Update min/max\n    if (minValue === null || value < minValue) {\n        minIndex = idx;\n        minTime = timestamp;\n        minValue = value;\n    }\n    if (maxValue === null || value > maxValue) {\n        maxIndex = idx;\n        maxTime = timestamp;\n        maxValue = value;\n    }\n    // Update averages\n    fullSum += value;\n    fullCount++;\n    //Update forward averages\n    if ( (timestamp + 900*1000) >= curTimeSec) {\n        if (curIndex === null) {\n            curIndex = idx;\n            curTime = timestamp;\n            curValue = value;\n        }\n        // Update minfwd/maxfwd\n        if (minfwdValue === null || value < minfwdValue) {\n            minfwdIndex = idx;\n            minfwdTime = timestamp;\n            minfwdValue = value;\n        }\n        if (maxfwdValue === null || value > maxfwdValue) {\n            maxfwdIndex = idx;\n            maxfwdTime = timestamp;\n            maxfwdValue = value;\n        }\n        fwdSum += value;\n        if (lastValue > 0) {\n            if (value > lastValue) fwdupSum += (value - lastValue);\n            if (value < lastValue) fwddwnSum += (value - lastValue); \n            fwdCount++;\n        }\n    }\n    // set lastvalue before forwards calculations\n    lastValue = value;\n}\n\n// Compute metrics\nlet fullAverage = fullCount > 0 ? fullSum / fullCount : 0;\nlet fwdAverage = fwdCount > 0 ? fwdSum / fwdCount : 0;\nlet fullMiddle = (maxValue + minValue) / 2\nlet fwdMiddle = (maxfwdValue + minfwdValue) / 2\n\n// Validate results\nif (length === 0 || startTime === null || minValue === null) {\n    node.warn(\"No valid data found\");\n    msg.payload = { error: \"No valid data found\" };\n    return msg;\n}\n/*\n// Set output\nconst result = {\n    length,\n    startTime,\n    endTime,\n    minIndex,\n    minTime,\n    minValue,\n    maxIndex,\n    maxTime,\n    maxValue,\n    minfwdIndex,\n    minfwdTime,\n    minfwdValue,\n    maxfwdIndex,\n    maxfwdTime,\n    maxfwdValue,\n    curIndex,\n    curTime,\n    curValue,\n    fullAverage,\n    fwdAverage,\n    fullMiddle,\n    fwdMiddle\n};\n*/\nlet digits = 1000\ncurValue = Math.round(digits*curValue)/digits;\nfwdAverage = Math.round(digits*fwdAverage)/digits;\nfwdupSum = Math.round(digits*fwdupSum)/digits;\nfwddwnSum = Math.round(digits*fwddwnSum)/digits;\nminfwdValue = Math.round(digits*minfwdValue)/digits;\nfwdMiddle = Math.round(digits*fwdMiddle)/digits;\nmaxfwdValue = Math.round(digits*maxfwdValue)/digits;\nfullAverage = Math.round(digits*fullAverage)/digits;\nminValue = Math.round(digits*minValue)/digits;\nfullMiddle = Math.round(digits*fullMiddle)/digits;\nmaxValue = Math.round(digits*fullMiddle)/digits;\nlength,\ncurIndex,\nminIndex,\nminfwdIndex,\nmaxfwdIndex,\nmaxIndex,\nstartTime,\ncurTime,\nminTime,\nminfwdTime,\nmaxfwdTime,\nmaxTime,\nendTime\n\nconst result = {\n    curValue,\n    fwdAverage,\n    fwdupSum,\n    fwddwnSum,\n    minfwdValue,\n    fwdMiddle,\n    maxfwdValue,\n    fullAverage,\n    minValue,\n    fullMiddle,\n    maxValue,\n    length,\n    curIndex,\n    minIndex,\n    minfwdIndex,\n    maxfwdIndex,\n    maxIndex,\n    startTime,\n    curTime,\n    minTime,\n    minfwdTime,\n    maxfwdTime,\n    maxTime,\n    endTime\n};\n\n// Store in flow context\nflow.set(\"vrmMETRICS\", result);\n\n// Store in global context\n// global.set(\"vrm_soc_plan\", result);\n\nmsg.timestamp = payload;\nmsg.timeslot = curIndex;\nmsg.payload = result;\nmsg.topic = topic;\n\nreturn msg;\n//",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3260,
        "y": 2200,
        "wires": [
            [
                "b2baeacd75d4b218",
                "c923d2996af49859",
                "c6e57f38d6abf127",
                "9d1043367606541b",
                "c3b2a99d57d92cac",
                "9383fbf3ff4b252e"
            ]
        ]
    },
    {
        "id": "9383fbf3ff4b252e",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "vrmMETRICS",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload.curValue",
        "statusType": "msg",
        "x": 3540,
        "y": 2200,
        "wires": []
    },
    {
        "id": "71b80e8534a1d458",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link out 94",
        "mode": "link",
        "links": [
            "88540bff3f5b326c"
        ],
        "x": 3355,
        "y": 2260,
        "wires": []
    },
    {
        "id": "4cdccb71714543e1",
        "type": "vrm-api",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "vrm": "9e7340b4a2802944",
        "name": "STATS DESS",
        "api_type": "installations",
        "idUser": "",
        "idSite": "{{flow.siteId}}",
        "installations": "stats",
        "attribute": "dynamic_ess",
        "stats_interval": "15mins",
        "show_instance": false,
        "stats_start": "bod",
        "stats_end": "eot",
        "use_utc": false,
        "gps_start": "",
        "gps_end": "",
        "widgets": "PVInverterStatus",
        "instance": "",
        "store_in_global_context": true,
        "verbose": false,
        "transform_price_schedule": true,
        "outputs": 2,
        "x": 3240,
        "y": 2080,
        "wires": [
            [
                "309c36b0591b9fa8",
                "7614d25c9edc7d5b"
            ],
            [
                "7614d25c9edc7d5b"
            ]
        ]
    },
    {
        "id": "7614d25c9edc7d5b",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "STATS DESS",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 3540,
        "y": 2080,
        "wires": []
    },
    {
        "id": "309c36b0591b9fa8",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "Status",
        "property": "payload",
        "x": 3210,
        "y": 2140,
        "wires": [
            [
                "2a97b53899e94a21"
            ]
        ]
    },
    {
        "id": "9d1043367606541b",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "mux",
        "func": "return msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3510,
        "y": 2320,
        "wires": [
            [
                "3aefe7c24fa0c99b",
                "5bef6e40deafe5a2",
                "177099cb42783207",
                "aade47b7f168241d",
                "c63b3d979847f0c2",
                "38b4fb3155057968"
            ]
        ]
    },
    {
        "id": "16a4dea3196efa95",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "timeslot",
        "func": "//\nlet timestamp = msg.payload\n\nlet schedules_key = 'vrm_soc_plan'\nlet topic = 'vrmdess_' + schedules_key\nlet global_get = 'installations.fetch-dynamic-ess-schedules'\nlet get_schedules = global.get( global_get )\nlet is_schedules = !( get_schedules == undefined || get_schedules == null )\nlet get_records = null\nlet records_length = 0\nvar is_records = false\nif ( is_schedules )\n{\n    get_records = get_schedules.records[schedules_key]\n    records_length = get_records.length\n    is_records = ( (records_length > 0) ? true : false )\n    get_value = ( is_records ? get_records[0][0] : false )\n}\nlet schedulestart = get_value\nlet secondsfromstart = ( timestamp - schedulestart ) / 1000\n\nlet quarterfromstartf = ( secondsfromstart / ( 60 * 15  ) )\nlet quarterfromstart = quarterfromstartf - ( quarterfromstartf % 1 )\n\ntimeslot =quarterfromstart // test wintertijd\n\nlet fill = ( 'green' )\nlet shape = 'dot'\nlet text = ( 'timeslot : ' + timeslot )\n\nnode.status({fill, shape, text})\n//msg.payload = timeslot\nmsg.timeslot = timeslot\nmsg.topic = 'timeslot'\nreturn msg;\n\n\n\n\n\n",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3220,
        "y": 2320,
        "wires": [
            []
        ]
    },
    {
        "id": "b602c6808c8c3452",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "query",
        "func": "const getStartOfDay = (date) => {\n    const start = new Date(date)\n    start.setHours(0, 0, 0, 0)\n    return Math.floor(start.getTime() / 1000)\n}\n\nconst now = new Date()\n\nconst start = getStartOfDay(now)\n  \nconst endOfTomorrow = new Date(now)\nendOfTomorrow.setDate(endOfTomorrow.getDate() + 1)\nendOfTomorrow.setHours(23, 59, 59, 999)\nconst end = Math.floor(endOfTomorrow.getTime() / 1000)\n\nconst siteId = flow.get('siteId')\n\nmsg.method = 'get'\nmsg.url = 'https://vrmapi.victronenergy.com/v2'\nmsg.query = `installations/${siteId}/stats?type=dynamic_ess&interval=15mins&start=${start}&end=${end}`\nmsg.topic = 'installations fetch-dynamic-ess-schedules'\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3770,
        "y": 2080,
        "wires": [
            []
        ]
    },
    {
        "id": "f1f175c876024aaa",
        "type": "inject",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "quarter",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "*/15 0-23 * * *",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 3240,
        "y": 2020,
        "wires": [
            [
                "a54dd6b5d40c9acb"
            ]
        ]
    },
    {
        "id": "a54dd6b5d40c9acb",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link out 86",
        "mode": "link",
        "links": [
            "4ceb2c68b4151487"
        ],
        "x": 3335,
        "y": 2020,
        "wires": []
    },
    {
        "id": "28f521eded645a4e",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link out 99",
        "mode": "link",
        "links": [
            "91b5076b60b12915"
        ],
        "x": 4035,
        "y": 2320,
        "wires": []
    },
    {
        "id": "3889f3aa09da0355",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "link out 93",
        "mode": "link",
        "links": [],
        "x": 4035,
        "y": 2020,
        "wires": []
    },
    {
        "id": "764a62d603661493",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "1 || 2 || 7 || 9 -> true",
        "func": "//\nif (  msg.payload == 1 || msg.payload == 2 || msg.payload == 7 || msg.payload == 9 )\n{\n    msg.payload = true\n    return msg\n}",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3950,
        "y": 2080,
        "wires": [
            []
        ]
    },
    {
        "id": "6dae752d983641e5",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "f40dc7f0f42a4262",
        "name": "Status",
        "property": "payload",
        "x": 3950,
        "y": 2320,
        "wires": [
            [
                "28f521eded645a4e"
            ]
        ]
    },
    {
        "id": "9e7340b4a2802944",
        "type": "config-vrm-api",
        "name": "VRM API"
    },
    {
        "id": "642c881d3af1b38d",
        "type": "group",
        "z": "4dc207279e9d07bd",
        "name": "",
        "style": {
            "label": true
        },
        "nodes": [
            "91b5076b60b12915",
            "e07a587480607011",
            "6f9f69bcdc87ec5e",
            "dd2a64bad15a9509",
            "6dbea6ca361d2b6f",
            "4f4ce854ba5452fd",
            "9eb58497807ed1b6",
            "e1cb25ec05ba975d",
            "636273a783cce562",
            "07ac8e4edb411ec0",
            "ee0df1fd2c8fb89c",
            "2a7b65ec4342e461",
            "bfbaf78b61687005",
            "6f1e157dc56351ca",
            "c903b449778772c7",
            "a037d629538f4825",
            "efaa53335d847932",
            "22ce6fed535810d7",
            "c6f710667eeb3fd0",
            "77b3653dd0c59033",
            "4857f0eea6e100d3",
            "c5b3f8bf2f23feb9",
            "39040470f343f07d",
            "03be4b6845126570",
            "97278629cfca2ea6",
            "25b11973814b5690",
            "7ee0af1c8c88c984"
        ],
        "x": 4094,
        "y": 1979,
        "w": 592,
        "h": 362
    },
    {
        "id": "91b5076b60b12915",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "link in 43",
        "links": [
            "28f521eded645a4e"
        ],
        "x": 4135,
        "y": 2080,
        "wires": [
            [
                "03be4b6845126570"
            ]
        ]
    },
    {
        "id": "e07a587480607011",
        "type": "inject",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "delta",
        "payload": "0.75",
        "payloadType": "num",
        "x": 4200,
        "y": 2020,
        "wires": [
            [
                "dd2a64bad15a9509"
            ]
        ]
    },
    {
        "id": "6f9f69bcdc87ec5e",
        "type": "inject",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "delta",
        "payload": "-0.75",
        "payloadType": "num",
        "x": 4210,
        "y": 2240,
        "wires": [
            [
                "4f4ce854ba5452fd"
            ]
        ]
    },
    {
        "id": "dd2a64bad15a9509",
        "type": "SumUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "sup",
        "property": "payload",
        "math": "sum",
        "subtractstartfrom": "LastScheduledEnd",
        "x": 4350,
        "y": 2020,
        "wires": [
            [
                "6dbea6ca361d2b6f"
            ]
        ]
    },
    {
        "id": "6dbea6ca361d2b6f",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "m2rnd",
        "func": "if ( msg.measurements == 2)\n{\n    msg.payload = Math.round( msg.payload )\n    if ( msg.payload > 100 )\n    {\n        msg.payload = 100\n    }\n    msg.topic = 'dbsSoC'\n    let fill = ( 'green' )\n    let shape = 'dot'\n    let text = ( msg.topic + ': ' + msg.payload )\n    node.status({fill, shape, text})\n    return msg\n}\nreturn",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4470,
        "y": 2020,
        "wires": [
            [
                "e1cb25ec05ba975d"
            ]
        ]
    },
    {
        "id": "4f4ce854ba5452fd",
        "type": "SumUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "sdn",
        "property": "payload",
        "math": "sum",
        "subtractstartfrom": "LastScheduledEnd",
        "x": 4350,
        "y": 2240,
        "wires": [
            [
                "4857f0eea6e100d3"
            ]
        ]
    },
    {
        "id": "9eb58497807ed1b6",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "link out 87",
        "mode": "link",
        "links": [
            "fa5947cdaac82e6a"
        ],
        "x": 4645,
        "y": 2300,
        "wires": []
    },
    {
        "id": "e1cb25ec05ba975d",
        "type": "InterruptFlowUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "block",
        "triggertopic": "up",
        "initializewith": "0",
        "autoToggle": "0",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4600,
        "y": 2020,
        "wires": [
            [
                "2a7b65ec4342e461"
            ]
        ]
    },
    {
        "id": "636273a783cce562",
        "type": "InterruptFlowUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "block",
        "triggertopic": "dn",
        "initializewith": "0",
        "autoToggle": "0",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4600,
        "y": 2240,
        "wires": [
            [
                "2a7b65ec4342e461"
            ]
        ]
    },
    {
        "id": "07ac8e4edb411ec0",
        "type": "change",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "up",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "up",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 4390,
        "y": 2080,
        "wires": [
            [
                "e1cb25ec05ba975d",
                "a037d629538f4825"
            ]
        ]
    },
    {
        "id": "ee0df1fd2c8fb89c",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "link in 49",
        "links": [
            "92e12802258fe9d3"
        ],
        "x": 4315,
        "y": 2080,
        "wires": [
            [
                "07ac8e4edb411ec0"
            ]
        ]
    },
    {
        "id": "2a7b65ec4342e461",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "Status",
        "property": "payload",
        "x": 4430,
        "y": 2300,
        "wires": [
            [
                "9eb58497807ed1b6",
                "97278629cfca2ea6"
            ]
        ]
    },
    {
        "id": "bfbaf78b61687005",
        "type": "change",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "dn",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "dn",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 4390,
        "y": 2120,
        "wires": [
            [
                "636273a783cce562",
                "a037d629538f4825"
            ]
        ]
    },
    {
        "id": "6f1e157dc56351ca",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "link in 50",
        "links": [
            "7bd57c9690528660"
        ],
        "x": 4315,
        "y": 2120,
        "wires": [
            [
                "bfbaf78b61687005"
            ]
        ]
    },
    {
        "id": "c903b449778772c7",
        "type": "InvertUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "Invert",
        "payloadPropName": "payload",
        "x": 4570,
        "y": 2140,
        "wires": [
            [
                "efaa53335d847932",
                "c5b3f8bf2f23feb9"
            ]
        ]
    },
    {
        "id": "a037d629538f4825",
        "type": "BooleanLogicUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "go",
        "payloadPropName": "payload",
        "filtertrue": "both",
        "persist": true,
        "sInitializeWith": "WaitForPayload",
        "triggertopic": "trigger",
        "outputtriggeredby": "all",
        "inputCount": "2",
        "topic": "go",
        "restrictinputevaluation": false,
        "delayEvaluation": "0",
        "translatorConfig": "",
        "x": 4570,
        "y": 2080,
        "wires": [
            [],
            [
                "c903b449778772c7"
            ],
            []
        ]
    },
    {
        "id": "efaa53335d847932",
        "type": "InterruptFlowUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "block",
        "triggertopic": "go",
        "initializewith": "0",
        "autoToggle": "0",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4600,
        "y": 2180,
        "wires": [
            [
                "2a7b65ec4342e461"
            ]
        ]
    },
    {
        "id": "22ce6fed535810d7",
        "type": "inject",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "delta",
        "payload": "-0.0",
        "payloadType": "num",
        "x": 4200,
        "y": 2180,
        "wires": [
            [
                "c6f710667eeb3fd0"
            ]
        ]
    },
    {
        "id": "c6f710667eeb3fd0",
        "type": "SumUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "soc",
        "property": "payload",
        "math": "sum",
        "subtractstartfrom": "LastScheduledEnd",
        "x": 4350,
        "y": 2180,
        "wires": [
            [
                "77b3653dd0c59033"
            ]
        ]
    },
    {
        "id": "77b3653dd0c59033",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "m2rnd",
        "func": "if ( msg.measurements == 2)\n{\n    msg.payload = Math.round( msg.payload )\n    if ( msg.payload > 100 )\n    {\n        msg.payload = 100\n    }\n    msg.topic = 'dbsSoC'\n    let fill = ( 'green' )\n    let shape = 'dot'\n    let text = ( msg.topic + ': ' + msg.payload )\n    node.status({fill, shape, text})\n    return msg\n}\nreturn",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4470,
        "y": 2180,
        "wires": [
            [
                "efaa53335d847932"
            ]
        ]
    },
    {
        "id": "4857f0eea6e100d3",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "m2rnd",
        "func": "if ( msg.measurements == 2)\n{\n    msg.payload = Math.round( msg.payload )\n    if ( msg.payload > 100 )\n    {\n        msg.payload = 100\n    }\n    msg.topic = 'dbsSoC'\n    let fill = ( 'green' )\n    let shape = 'dot'\n    let text = ( msg.topic + ': ' + msg.payload )\n    node.status({fill, shape, text})\n    return msg\n}\nreturn",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4470,
        "y": 2240,
        "wires": [
            [
                "636273a783cce562"
            ]
        ]
    },
    {
        "id": "c5b3f8bf2f23feb9",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "link out 22",
        "mode": "link",
        "links": [
            "6d9e0b0790658ced",
            "3a1f34f20f4074b9",
            "1561bf35c96381d1",
            "5e48788723f746c8"
        ],
        "x": 4645,
        "y": 2140,
        "wires": []
    },
    {
        "id": "39040470f343f07d",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "Status",
        "property": "payload",
        "x": 4170,
        "y": 2120,
        "wires": [
            [
                "dd2a64bad15a9509",
                "4f4ce854ba5452fd",
                "c6f710667eeb3fd0"
            ]
        ]
    },
    {
        "id": "03be4b6845126570",
        "type": "delay",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "25ms",
        "pauseType": "delay",
        "timeout": "25",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "15",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "allowrate": false,
        "outputs": 1,
        "x": 4210,
        "y": 2080,
        "wires": [
            [
                "39040470f343f07d"
            ]
        ]
    },
    {
        "id": "97278629cfca2ea6",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "dbsSoC",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 4560,
        "y": 2300,
        "wires": []
    },
    {
        "id": "25b11973814b5690",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "ahsoc",
        "func": "msg.topic = 'ahsoc'\nconst digits = 1000\nmsg.payload = Math.round( digits * flow.get('ahsoc') )/digits\nlet text = ( msg.topic + ': ' + msg.payload )\nnode.status( text )\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4210,
        "y": 2300,
        "wires": [
            []
        ]
    },
    {
        "id": "7ee0af1c8c88c984",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "642c881d3af1b38d",
        "name": "link in 102",
        "links": [
            "c57234dd6a9bc1cd"
        ],
        "x": 4135,
        "y": 2300,
        "wires": [
            [
                "25b11973814b5690"
            ]
        ]
    },
    {
        "id": "d5a2f045046bcb35",
        "type": "group",
        "z": "4dc207279e9d07bd",
        "name": "x",
        "style": {
            "label": true
        },
        "nodes": [
            "135fa1cf2f7f9bd4",
            "e2a02d8abf8be5ee",
            "89e8dcacafe38f9a",
            "7d9f2604e98ec284",
            "f76261f283a6b915",
            "b7858c4663839bfd",
            "e64ed196a169b27e",
            "3cc7bf6426c24f60",
            "efd3cdb77955abe8",
            "4ceb2c68b4151487",
            "be5afdcfdb5c6ba0"
        ],
        "x": 3254,
        "y": 2439,
        "w": 812,
        "h": 142
    },
    {
        "id": "135fa1cf2f7f9bd4",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "service": "com.victronenergy.system/0",
        "path": "/DynamicEss/LastScheduledEnd",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "com.victronenergy.system (0)"
        },
        "pathObj": {
            "path": "/DynamicEss/LastScheduledEnd",
            "name": "/DynamicEss/LastScheduledEnd",
            "type": "number",
            "value": 1762376400
        },
        "name": "dbsLASTEND",
        "onlyChanges": true,
        "x": 3530,
        "y": 2480,
        "wires": [
            []
        ]
    },
    {
        "id": "e2a02d8abf8be5ee",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "service": "com.victronenergy.system/0",
        "path": "/DynamicEss/LastScheduledStart",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "com.victronenergy.system (0)"
        },
        "pathObj": {
            "path": "/DynamicEss/LastScheduledStart",
            "name": "/DynamicEss/LastScheduledStart",
            "type": "number",
            "value": 1762375500
        },
        "name": "dbsLASTSTART",
        "onlyChanges": true,
        "x": 3360,
        "y": 2480,
        "wires": [
            []
        ]
    },
    {
        "id": "89e8dcacafe38f9a",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/0/Start",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/0/Start",
            "name": "/Settings/DynamicEss/Schedule/0/Start",
            "type": "number",
            "value": 1762333200
        },
        "name": "dbsSTART",
        "onlyChanges": true,
        "x": 3680,
        "y": 2480,
        "wires": [
            [
                "7d9f2604e98ec284",
                "e64ed196a169b27e"
            ]
        ]
    },
    {
        "id": "7d9f2604e98ec284",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "name": "dbsSTART",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 3930,
        "y": 2480,
        "wires": []
    },
    {
        "id": "f76261f283a6b915",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "name": "CurrentTime",
        "func": "//\nmsg.timestamp = msg.payload\n\n\n//let date = new Date()\n//let time = date / 1000\nlet time = msg.payload / 1000\ntime = time - ( time % 1 )\nmsg.payload = time\n\nmsg.topic = 'CurrentTime'\n\nlet fill = ( 'green' )\nlet shape = 'dot'\nlet text = ( 'time : ' + time )\n//let text = ( 'timeslot : ' + timeslot )\nnode.status({fill, shape, text})\n\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3390,
        "y": 2540,
        "wires": [
            [
                "e64ed196a169b27e"
            ]
        ]
    },
    {
        "id": "b7858c4663839bfd",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "name": "dbsindex",
        "func": "let deltatime = msg.payload\n\nlet deltaminutes =  deltatime / 60\n\nlet dbsindexf = ( deltaminutes / 15 ) \nlet dbsindex = dbsindexf - ( dbsindexf % 1 )\n\nlet fill = ( 'green' )\nlet shape = 'dot'\nlet text = ( 'dbsindex : ' + dbsindex )\nnode.status({fill, shape, text})\n\nmsg.payload = dbsindex\nmsg.dbsindex = dbsindex\nmsg.topic = 'dbsindex'\n\nif (msg.measurements == 2)\n{\n    msg.average = null\n    msg.measurements = null\n    flow.set('dbsindex', dbsindex)\n    return msg;\n}",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 3680,
        "y": 2540,
        "wires": [
            [
                "be5afdcfdb5c6ba0"
            ]
        ]
    },
    {
        "id": "e64ed196a169b27e",
        "type": "SumUltimate",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "name": "DeltaTime",
        "property": "payload",
        "math": "subtract",
        "subtractstartfrom": "CurrentTime",
        "x": 3540,
        "y": 2540,
        "wires": [
            [
                "b7858c4663839bfd"
            ]
        ]
    },
    {
        "id": "3cc7bf6426c24f60",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "name": "dbsIndex",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "true",
        "targetType": "full",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 3940,
        "y": 2540,
        "wires": []
    },
    {
        "id": "efd3cdb77955abe8",
        "type": "link out",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "name": "link out 47",
        "mode": "link",
        "links": [
            "46c237ebafab52a5",
            "7a5396e1cb5b27f4",
            "93342a5994b7ccdc",
            "68ee5ab56a9713a6"
        ],
        "x": 4025,
        "y": 2540,
        "wires": []
    },
    {
        "id": "4ceb2c68b4151487",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "name": "link in 73",
        "links": [
            "a54dd6b5d40c9acb"
        ],
        "x": 3295,
        "y": 2540,
        "wires": [
            [
                "f76261f283a6b915"
            ]
        ]
    },
    {
        "id": "be5afdcfdb5c6ba0",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "d5a2f045046bcb35",
        "name": "Status",
        "property": "payload",
        "x": 3810,
        "y": 2540,
        "wires": [
            [
                "3cc7bf6426c24f60",
                "efd3cdb77955abe8"
            ]
        ]
    },
    {
        "id": "bbc1e7f101c98388",
        "type": "group",
        "z": "4dc207279e9d07bd",
        "name": "x",
        "style": {
            "label": true
        },
        "nodes": [
            "fcdc277886a528d3",
            "a2fd3c4c4999b564",
            "7b179321fbdbc359",
            "d80a7c7dfd737ceb",
            "55286bd18f3b7a20",
            "2a9192c769508d96",
            "2a243c432e29bb12",
            "4ca8cc829299c46f",
            "2f95c6fa7aeee778",
            "3e16883fc5c43151",
            "e9a2449401ae4f30",
            "d7b34cb5b44b5209"
        ],
        "x": 4094,
        "y": 2359,
        "w": 572,
        "h": 322
    },
    {
        "id": "fcdc277886a528d3",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "ahsoc",
        "func": "msg.topic = 'ahsoc'\nconst digits = 1000\nmsg.payload = Math.round( digits * flow.get('ahsoc') )/digits\nlet text = ( msg.topic + ': ' + msg.payload )\nnode.status( text )\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4350,
        "y": 2460,
        "wires": [
            [
                "55286bd18f3b7a20"
            ]
        ]
    },
    {
        "id": "a2fd3c4c4999b564",
        "type": "victron-input-custom",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "service": "com.victronenergy.system/0",
        "path": "/DynamicEss/ReactiveStrategy",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "com.victronenergy.system (0)"
        },
        "pathObj": {
            "path": "/DynamicEss/ReactiveStrategy",
            "name": "/DynamicEss/ReactiveStrategy",
            "type": "number",
            "value": 9
        },
        "name": "REACTSTR",
        "onlyChanges": true,
        "x": 4190,
        "y": 2400,
        "wires": [
            [
                "7b179321fbdbc359",
                "4ca8cc829299c46f"
            ]
        ]
    },
    {
        "id": "7b179321fbdbc359",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "mapreactstr",
        "func": "var mapping = {\n    1: 'SCHEDULED_SELFCONSUME',\n    2: 'SCHEDULED_CHARGE_ALLOW_GRID',\n    3: 'SCHEDULED_CHARGE_ENHANCED',\n    4: 'SELFCONSUME_ACCEPT_CHARGE',\n    5: 'IDLE_SCHEDULED_FEEDIN',\n    6: 'SCHEDULED_DISCHARGE',\n    7: 'SELFCONSUME_ACCEPT_DISCHARGE',\n    8: 'IDLE_MAINTAIN_SURPLUS',\n    9: 'IDLE_MAINTAIN_TARGETSOC',\n    10: 'SCHEDULED_CHARGE_SMOOTH_TRANSITION',\n    11: 'SCHEDULED_CHARGE_FEEDIN',\n    12: 'SCHEDULED_CHARGE_NO_GRID',\n    13: 'SCHEDULED_MINIMUM_DISCHARGE',\n    14: 'SELFCONSUME_NO_GRID',\n    15: 'IDLE_NO_OPPORTUNITY',\n    16: 'UNSCHEDULED_CHARGE_CATCHUP_TARGETSOC',\n    17: 'SELFCONSUME_INCREASED_DISCHARGE',\n    18: 'KEEP_BATTERY_CHARGED',\n    19: 'SCHEDULED_DISCHARGE_SMOOTH_TRANSITION',\n    20: 'SELF_CONSUME_ACCEPT_BELOW_TSOC',\n    21: 'IDLE_NO_DISCHARGE_OPPORTUNITY',\n    92: 'DESS_DISABLED',\n    93: 'SELFCONSUME_UNEXPECTED_EXCEPTION',\n    94: 'SELFCONSUME_FAULTY_CHARGERATE',\n    95: 'UNKNOWN_OPERATING_MODE',\n    96: 'ESS_LOW_SOC',\n    97: 'SELFCONSUME_UNMAPPED_STATE',\n    98: 'SELFCONSUME_UNPREDICTED',\n    99: 'NO_WINDOW'\n};\nmsg.topic = 'reactstr';\nmsg.reactstr = msg.payload + ' (' + ( mapping[msg.payload] || 'Unknown' ) + ')';\nmsg.textvalue =  ( mapping[msg.payload] || 'Unknown' );\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4370,
        "y": 2400,
        "wires": [
            [
                "d80a7c7dfd737ceb"
            ]
        ]
    },
    {
        "id": "d80a7c7dfd737ceb",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "REACTSTR",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "reactstr",
        "targetType": "msg",
        "statusVal": "reactivestrategy",
        "statusType": "auto",
        "x": 4550,
        "y": 2400,
        "wires": []
    },
    {
        "id": "55286bd18f3b7a20",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "AHSOC",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "reactivestrategy",
        "statusType": "auto",
        "x": 4560,
        "y": 2460,
        "wires": []
    },
    {
        "id": "2a9192c769508d96",
        "type": "vrm-api",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "vrm": "9e7340b4a2802944",
        "name": "FETCH DESS",
        "api_type": "installations",
        "idUser": "",
        "idSite": "{{flow.siteId}}",
        "installations": "fetch-dynamic-ess-schedules",
        "attribute": "dynamic_ess",
        "stats_interval": "15mins",
        "show_instance": false,
        "stats_start": "bod",
        "stats_end": "eot",
        "use_utc": false,
        "gps_start": "",
        "gps_end": "",
        "widgets": "PVInverterStatus",
        "instance": "",
        "store_in_global_context": true,
        "verbose": false,
        "transform_price_schedule": false,
        "outputs": 1,
        "x": 4200,
        "y": 2640,
        "wires": [
            [
                "2a243c432e29bb12"
            ]
        ]
    },
    {
        "id": "2a243c432e29bb12",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "FETCH DESS",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload.schedule",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 4540,
        "y": 2640,
        "wires": []
    },
    {
        "id": "4ca8cc829299c46f",
        "type": "delay",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "1/1m",
        "pauseType": "rate",
        "timeout": "1",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "minute",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "allowrate": false,
        "outputs": 1,
        "x": 4170,
        "y": 2460,
        "wires": [
            [
                "fcdc277886a528d3",
                "2a9192c769508d96",
                "2f95c6fa7aeee778",
                "e9a2449401ae4f30"
            ]
        ]
    },
    {
        "id": "2f95c6fa7aeee778",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "dbsindex",
        "func": "msg.topic = 'dbsindex'\nmsg.payload = flow.get('dbsindex')\nlet text = ( msg.topic + ': ' + msg.payload )\nnode.status( text )\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4360,
        "y": 2520,
        "wires": [
            [
                "3e16883fc5c43151"
            ]
        ]
    },
    {
        "id": "3e16883fc5c43151",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "INDEX",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "reactivestrategy",
        "statusType": "auto",
        "x": 4570,
        "y": 2520,
        "wires": []
    },
    {
        "id": "e9a2449401ae4f30",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "d": true,
        "g": "bbc1e7f101c98388",
        "name": "vrmmetrics",
        "func": "msg.topic = 'vrmMETRICS'\nmsg.payload = flow.get('vrmMETRICS')\nlet text = ( msg.topic + ': ' + msg.payload )\nnode.status( text )\nreturn msg",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4370,
        "y": 2580,
        "wires": [
            [
                "d7b34cb5b44b5209"
            ]
        ]
    },
    {
        "id": "d7b34cb5b44b5209",
        "type": "debug",
        "z": "4dc207279e9d07bd",
        "g": "bbc1e7f101c98388",
        "name": "vrmMETRICS",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "reactivestrategy",
        "statusType": "auto",
        "x": 4540,
        "y": 2580,
        "wires": []
    },
    {
        "id": "489f1347e7f4e5eb",
        "type": "group",
        "z": "4dc207279e9d07bd",
        "name": "",
        "style": {
            "label": true
        },
        "nodes": [
            "b37a8f57dd090637",
            "46c237ebafab52a5",
            "220155f2e858dc4b",
            "8f03905b31ffc362",
            "07eb02a8a0bcdca8",
            "90798104e80184ff",
            "955a9ff5db971d31",
            "6d9e0b0790658ced",
            "88f541f676221a8e",
            "da64f80bf8a9a3f0",
            "efed898fb4a72f73",
            "f08ae84be2a39f40",
            "1f61a6028701f320",
            "d90b2d619d8d46bf",
            "4a12090c2cf18fe3",
            "24868436b2836fe8",
            "084186c0d96f8af4",
            "b339b857265207f0",
            "1561bf35c96381d1",
            "ef6b55f005b2a97d"
        ],
        "x": 4094,
        "y": 2696.5,
        "w": 672,
        "h": 367
    },
    {
        "id": "b37a8f57dd090637",
        "type": "RailwaySwitchUltimate",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "DBSIndex",
        "triggertopic": "dbsindex",
        "initializewith": "4",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4360,
        "y": 2760,
        "wires": [
            [
                "f08ae84be2a39f40"
            ],
            [
                "1f61a6028701f320"
            ],
            [
                "d90b2d619d8d46bf"
            ],
            [
                "4a12090c2cf18fe3"
            ],
            []
        ]
    },
    {
        "id": "46c237ebafab52a5",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "link in 90",
        "links": [
            "efd3cdb77955abe8"
        ],
        "x": 4305,
        "y": 2880,
        "wires": [
            [
                "07eb02a8a0bcdca8"
            ]
        ]
    },
    {
        "id": "220155f2e858dc4b",
        "type": "RailwaySwitchUltimate",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "DBSIndex",
        "triggertopic": "dbsindex",
        "initializewith": "4",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4360,
        "y": 3000,
        "wires": [
            [
                "24868436b2836fe8"
            ],
            [
                "084186c0d96f8af4"
            ],
            [
                "b339b857265207f0"
            ],
            [
                "efed898fb4a72f73"
            ],
            []
        ]
    },
    {
        "id": "8f03905b31ffc362",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "dbsindex0",
        "func": "if ( msg.topic == 'dbsindex' ) \n{\n    if ( msg.payload >= 4 )\n    {\n        msg.payload = 4;\n    }\n}\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4370,
        "y": 2840,
        "wires": [
            [
                "b37a8f57dd090637"
            ]
        ]
    },
    {
        "id": "07eb02a8a0bcdca8",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "Status",
        "property": "payload",
        "x": 4390,
        "y": 2880,
        "wires": [
            [
                "8f03905b31ffc362",
                "90798104e80184ff"
            ]
        ]
    },
    {
        "id": "90798104e80184ff",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "dbsindex1",
        "func": "if ( msg.topic == 'dbsindex' ) \n{\n    if ( msg.payload < 4 )\n    {\n        msg.payload = 4;\n    } else if ( msg.payload < 8 )\n    {\n        msg.payload = msg.payload - 4;\n    }\n}\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4370,
        "y": 2940,
        "wires": [
            [
                "220155f2e858dc4b"
            ]
        ]
    },
    {
        "id": "955a9ff5db971d31",
        "type": "InterruptFlowUltimate",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "blk",
        "triggertopic": "go",
        "initializewith": "0",
        "autoToggle": "0",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4180,
        "y": 2940,
        "wires": [
            [
                "b37a8f57dd090637",
                "220155f2e858dc4b"
            ]
        ]
    },
    {
        "id": "6d9e0b0790658ced",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "link in 97",
        "links": [
            "c5b3f8bf2f23feb9"
        ],
        "x": 4135,
        "y": 3020,
        "wires": [
            [
                "955a9ff5db971d31"
            ]
        ]
    },
    {
        "id": "88f541f676221a8e",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "Status",
        "property": "payload",
        "x": 4170,
        "y": 2880,
        "wires": [
            [
                "955a9ff5db971d31"
            ]
        ]
    },
    {
        "id": "da64f80bf8a9a3f0",
        "type": "change",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "Res:3",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "3",
                "tot": "num"
            },
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "dbsRes",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 4170,
        "y": 2840,
        "wires": [
            [
                "88f541f676221a8e"
            ]
        ]
    },
    {
        "id": "efed898fb4a72f73",
        "type": "victron-output-dess",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/7/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/7/Restrictions",
            "type": "enum",
            "name": "Active restrictions for schedule 7",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            },
            "mode": "both"
        },
        "name": "dbsRes7",
        "onlyChanges": false,
        "x": 4680,
        "y": 3020,
        "wires": []
    },
    {
        "id": "f08ae84be2a39f40",
        "type": "victron-output-dess",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/0/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/0/Restrictions",
            "type": "enum",
            "name": "Active restrictions for schedule 0",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            },
            "mode": "both"
        },
        "name": "dbsRes0",
        "onlyChanges": false,
        "x": 4560,
        "y": 2740,
        "wires": []
    },
    {
        "id": "1f61a6028701f320",
        "type": "victron-output-dess",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/1/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/1/Restrictions",
            "type": "enum",
            "name": "Active restrictions for schedule 1",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            },
            "mode": "both"
        },
        "name": "dbsRes1",
        "onlyChanges": false,
        "x": 4600,
        "y": 2780,
        "wires": []
    },
    {
        "id": "d90b2d619d8d46bf",
        "type": "victron-output-dess",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/2/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/2/Restrictions",
            "type": "enum",
            "name": "Active restrictions for schedule 2",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            },
            "mode": "both"
        },
        "name": "dbsRes2",
        "onlyChanges": false,
        "x": 4640,
        "y": 2820,
        "wires": []
    },
    {
        "id": "4a12090c2cf18fe3",
        "type": "victron-output-dess",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/3/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/3/Restrictions",
            "type": "enum",
            "name": "Active restrictions for schedule 3",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            },
            "mode": "both"
        },
        "name": "dbsRes3",
        "onlyChanges": false,
        "x": 4680,
        "y": 2860,
        "wires": []
    },
    {
        "id": "24868436b2836fe8",
        "type": "victron-output-dess",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/4/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/4/Restrictions",
            "type": "enum",
            "name": "Active restrictions for schedule 4",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            },
            "mode": "both"
        },
        "name": "dbsRes4",
        "onlyChanges": false,
        "x": 4560,
        "y": 2900,
        "wires": []
    },
    {
        "id": "084186c0d96f8af4",
        "type": "victron-output-dess",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/5/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/5/Restrictions",
            "type": "enum",
            "name": "Active restrictions for schedule 5",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            },
            "mode": "both"
        },
        "name": "dbsRes5",
        "onlyChanges": false,
        "x": 4600,
        "y": 2940,
        "wires": []
    },
    {
        "id": "b339b857265207f0",
        "type": "victron-output-dess",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/6/Restrictions",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/6/Restrictions",
            "type": "enum",
            "name": "Active restrictions for schedule 6",
            "enum": {
                "0": "No restrictions between battery and the grid",
                "1": "Grid to battery energy flow is restricted",
                "2": "Battery to grid energy flow is restricted",
                "3": "No energy flow between battery and grid"
            },
            "mode": "both"
        },
        "name": "dbsRes6",
        "onlyChanges": false,
        "x": 4640,
        "y": 2980,
        "wires": []
    },
    {
        "id": "1561bf35c96381d1",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "link in 89",
        "links": [
            "c5b3f8bf2f23feb9"
        ],
        "x": 4135,
        "y": 2740,
        "wires": [
            [
                "ef6b55f005b2a97d"
            ]
        ]
    },
    {
        "id": "ef6b55f005b2a97d",
        "type": "delay",
        "z": "4dc207279e9d07bd",
        "g": "489f1347e7f4e5eb",
        "name": "25ms",
        "pauseType": "delay",
        "timeout": "255",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "15",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "allowrate": false,
        "outputs": 1,
        "x": 4170,
        "y": 2800,
        "wires": [
            [
                "da64f80bf8a9a3f0"
            ]
        ]
    },
    {
        "id": "eec8f7b345c3cd9d",
        "type": "group",
        "z": "4dc207279e9d07bd",
        "style": {
            "stroke": "#999999",
            "stroke-opacity": "1",
            "fill": "none",
            "fill-opacity": "1",
            "label": true,
            "label-position": "nw",
            "color": "#a4a4a4"
        },
        "nodes": [
            "fa5947cdaac82e6a",
            "9ce92d06f01276b2",
            "7a5396e1cb5b27f4",
            "081e734ef9ab410e",
            "adecfd02d3dbeb3c",
            "27e7e9341318aee0",
            "bd1c108419dfe5f7",
            "9c2be7badc9cbdde",
            "0acad2c7cc94a5fa",
            "d16cd4f62d2d4d5f",
            "e28619fcd16717d6",
            "6fda48debe577123",
            "d0c438e6f1c8f0a3",
            "452989d6929da8e0",
            "7dedc28e5383d430",
            "b878c7631d71fa1d",
            "54ebbeb028e0ca7d"
        ],
        "x": 4094,
        "y": 3076.5,
        "w": 672,
        "h": 367
    },
    {
        "id": "fa5947cdaac82e6a",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "link in 77",
        "links": [
            "9eb58497807ed1b6"
        ],
        "x": 4135,
        "y": 3120,
        "wires": [
            [
                "54ebbeb028e0ca7d"
            ]
        ]
    },
    {
        "id": "9ce92d06f01276b2",
        "type": "RailwaySwitchUltimate",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "DBSIndex",
        "triggertopic": "dbsindex",
        "initializewith": "4",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4360,
        "y": 3140,
        "wires": [
            [
                "e28619fcd16717d6"
            ],
            [
                "6fda48debe577123"
            ],
            [
                "d0c438e6f1c8f0a3"
            ],
            [
                "452989d6929da8e0"
            ],
            []
        ]
    },
    {
        "id": "7a5396e1cb5b27f4",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "link in 78",
        "links": [
            "efd3cdb77955abe8"
        ],
        "x": 4305,
        "y": 3260,
        "wires": [
            [
                "b878c7631d71fa1d"
            ]
        ]
    },
    {
        "id": "081e734ef9ab410e",
        "type": "RailwaySwitchUltimate",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "DBSIndex",
        "triggertopic": "dbsindex",
        "initializewith": "4",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4360,
        "y": 3380,
        "wires": [
            [
                "bd1c108419dfe5f7"
            ],
            [
                "9c2be7badc9cbdde"
            ],
            [
                "0acad2c7cc94a5fa"
            ],
            [
                "d16cd4f62d2d4d5f"
            ],
            []
        ]
    },
    {
        "id": "adecfd02d3dbeb3c",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "dbsindex0",
        "func": "if ( msg.topic == 'dbsindex' ) \n{\n    if ( msg.payload >= 4 )\n    {\n        msg.payload = 4;\n    }\n}\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4370,
        "y": 3220,
        "wires": [
            [
                "9ce92d06f01276b2"
            ]
        ]
    },
    {
        "id": "27e7e9341318aee0",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "dbsindex1",
        "func": "if ( msg.topic == 'dbsindex' ) \n{\n    if ( msg.payload < 4 )\n    {\n        msg.payload = 4;\n    } else if ( msg.payload < 8 )\n    {\n        msg.payload = msg.payload - 4;\n    }\n}\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4370,
        "y": 3320,
        "wires": [
            [
                "081e734ef9ab410e"
            ]
        ]
    },
    {
        "id": "bd1c108419dfe5f7",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/4/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/4/Soc",
            "name": "/Settings/DynamicEss/Schedule/4/Soc",
            "type": "number",
            "value": 30
        },
        "name": "dbs4SoC",
        "onlyChanges": false,
        "x": 4560,
        "y": 3280,
        "wires": []
    },
    {
        "id": "9c2be7badc9cbdde",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/5/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/5/Soc",
            "name": "/Settings/DynamicEss/Schedule/5/Soc",
            "type": "number",
            "value": 30
        },
        "name": "dbs5SoC",
        "onlyChanges": false,
        "x": 4600,
        "y": 3320,
        "wires": []
    },
    {
        "id": "0acad2c7cc94a5fa",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/6/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/6/Soc",
            "name": "/Settings/DynamicEss/Schedule/6/Soc",
            "type": "number",
            "value": 30
        },
        "name": "dbs6SoC",
        "onlyChanges": false,
        "x": 4640,
        "y": 3360,
        "wires": []
    },
    {
        "id": "d16cd4f62d2d4d5f",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/7/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/7/Soc",
            "name": "/Settings/DynamicEss/Schedule/7/Soc",
            "type": "number",
            "value": 30
        },
        "name": "dbs7SoC",
        "onlyChanges": false,
        "x": 4680,
        "y": 3400,
        "wires": []
    },
    {
        "id": "e28619fcd16717d6",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/0/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/0/Soc",
            "name": "/Settings/DynamicEss/Schedule/0/Soc",
            "type": "number",
            "value": 30
        },
        "name": "dbs0SoC",
        "onlyChanges": false,
        "x": 4560,
        "y": 3120,
        "wires": []
    },
    {
        "id": "6fda48debe577123",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/1/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/1/Soc",
            "name": "/Settings/DynamicEss/Schedule/1/Soc",
            "type": "number",
            "value": 30
        },
        "name": "dbs1SoC",
        "onlyChanges": false,
        "x": 4600,
        "y": 3160,
        "wires": []
    },
    {
        "id": "d0c438e6f1c8f0a3",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/2/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/2/Soc",
            "name": "/Settings/DynamicEss/Schedule/2/Soc",
            "type": "number",
            "value": 30
        },
        "name": "dbs2SoC",
        "onlyChanges": false,
        "x": 4630,
        "y": 3200,
        "wires": []
    },
    {
        "id": "452989d6929da8e0",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/3/Soc",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/3/Soc",
            "name": "/Settings/DynamicEss/Schedule/3/Soc",
            "type": "number",
            "value": 30
        },
        "name": "dbs3SoC",
        "onlyChanges": false,
        "x": 4680,
        "y": 3240,
        "wires": []
    },
    {
        "id": "7dedc28e5383d430",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "Status",
        "property": "payload",
        "x": 4170,
        "y": 3260,
        "wires": [
            [
                "9ce92d06f01276b2",
                "081e734ef9ab410e"
            ]
        ]
    },
    {
        "id": "b878c7631d71fa1d",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "Status",
        "property": "payload",
        "x": 4390,
        "y": 3260,
        "wires": [
            [
                "adecfd02d3dbeb3c",
                "27e7e9341318aee0"
            ]
        ]
    },
    {
        "id": "54ebbeb028e0ca7d",
        "type": "change",
        "z": "4dc207279e9d07bd",
        "g": "eec8f7b345c3cd9d",
        "name": "SoC:",
        "rules": [
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "dbsSoC",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 4170,
        "y": 3220,
        "wires": [
            [
                "7dedc28e5383d430"
            ]
        ]
    },
    {
        "id": "a396d1277a82cc4e",
        "type": "group",
        "z": "4dc207279e9d07bd",
        "name": "",
        "style": {
            "label": true
        },
        "nodes": [
            "e9a5b3ca08d88dc5",
            "68ee5ab56a9713a6",
            "f74c68867739de2b",
            "0451889aec68d27f",
            "e959ce870394f15e",
            "c46c8958903ceef7",
            "376d467404b93fc8",
            "a631e3c1de73092f",
            "f278117248433f19",
            "2f41acdcd6deb843",
            "c052d84846829b0a",
            "2b7a7074b8c930fd",
            "a9b0b444cb920ea7",
            "fb130228794295b0",
            "8da417b57c8f4581",
            "f1998aa01d429dd3",
            "3a1f34f20f4074b9",
            "5279442cee3af163",
            "5e48788723f746c8",
            "ac0d896a02b9a341"
        ],
        "x": 4094,
        "y": 3456.5,
        "w": 672,
        "h": 367
    },
    {
        "id": "e9a5b3ca08d88dc5",
        "type": "RailwaySwitchUltimate",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "DBSIndex",
        "triggertopic": "dbsindex",
        "initializewith": "4",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4360,
        "y": 3520,
        "wires": [
            [
                "c052d84846829b0a"
            ],
            [
                "2b7a7074b8c930fd"
            ],
            [
                "a9b0b444cb920ea7"
            ],
            [
                "fb130228794295b0"
            ],
            []
        ]
    },
    {
        "id": "68ee5ab56a9713a6",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "link in 98",
        "links": [
            "efd3cdb77955abe8"
        ],
        "x": 4305,
        "y": 3640,
        "wires": [
            [
                "e959ce870394f15e"
            ]
        ]
    },
    {
        "id": "f74c68867739de2b",
        "type": "RailwaySwitchUltimate",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "DBSIndex",
        "triggertopic": "dbsindex",
        "initializewith": "4",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4360,
        "y": 3760,
        "wires": [
            [
                "376d467404b93fc8"
            ],
            [
                "a631e3c1de73092f"
            ],
            [
                "f278117248433f19"
            ],
            [
                "2f41acdcd6deb843"
            ],
            []
        ]
    },
    {
        "id": "0451889aec68d27f",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "dbsindex0",
        "func": "if ( msg.topic == 'dbsindex' ) \n{\n    if ( msg.payload >= 4 )\n    {\n        msg.payload = 4;\n    }\n}\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4370,
        "y": 3600,
        "wires": [
            [
                "e9a5b3ca08d88dc5"
            ]
        ]
    },
    {
        "id": "e959ce870394f15e",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "Status",
        "property": "payload",
        "x": 4390,
        "y": 3640,
        "wires": [
            [
                "0451889aec68d27f",
                "c46c8958903ceef7"
            ]
        ]
    },
    {
        "id": "c46c8958903ceef7",
        "type": "function",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "dbsindex1",
        "func": "if ( msg.topic == 'dbsindex' ) \n{\n    if ( msg.payload < 4 )\n    {\n        msg.payload = 4;\n    } else if ( msg.payload < 8 )\n    {\n        msg.payload = msg.payload - 4;\n    }\n}\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 4370,
        "y": 3700,
        "wires": [
            [
                "f74c68867739de2b"
            ]
        ]
    },
    {
        "id": "376d467404b93fc8",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/4/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/4/Strategy",
            "name": "/Settings/DynamicEss/Schedule/4/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbs4Str",
        "onlyChanges": false,
        "x": 4560,
        "y": 3660,
        "wires": []
    },
    {
        "id": "a631e3c1de73092f",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/5/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/5/Strategy",
            "name": "/Settings/DynamicEss/Schedule/5/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbs5Str",
        "onlyChanges": false,
        "x": 4600,
        "y": 3700,
        "wires": []
    },
    {
        "id": "f278117248433f19",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/6/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/6/Strategy",
            "name": "/Settings/DynamicEss/Schedule/6/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbs6Str",
        "onlyChanges": false,
        "x": 4640,
        "y": 3740,
        "wires": []
    },
    {
        "id": "2f41acdcd6deb843",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/7/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/7/Strategy",
            "name": "/Settings/DynamicEss/Schedule/7/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbs7Str",
        "onlyChanges": false,
        "x": 4680,
        "y": 3780,
        "wires": []
    },
    {
        "id": "c052d84846829b0a",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/0/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/0/Strategy",
            "name": "/Settings/DynamicEss/Schedule/0/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbs0Str",
        "onlyChanges": false,
        "x": 4560,
        "y": 3500,
        "wires": []
    },
    {
        "id": "2b7a7074b8c930fd",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/1/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/1/Strategy",
            "name": "/Settings/DynamicEss/Schedule/1/Strategy",
            "type": "number",
            "value": 2
        },
        "name": "dbs1Str",
        "onlyChanges": false,
        "x": 4600,
        "y": 3540,
        "wires": []
    },
    {
        "id": "a9b0b444cb920ea7",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/2/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/2/Strategy",
            "name": "/Settings/DynamicEss/Schedule/2/Strategy",
            "type": "number",
            "value": 1
        },
        "name": "dbs2Str",
        "onlyChanges": false,
        "x": 4640,
        "y": 3580,
        "wires": []
    },
    {
        "id": "fb130228794295b0",
        "type": "victron-output-custom",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "service": "com.victronenergy.settings",
        "path": "/Settings/DynamicEss/Schedule/3/Strategy",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/DynamicEss/Schedule/3/Strategy",
            "name": "/Settings/DynamicEss/Schedule/3/Strategy",
            "type": "number",
            "value": 1
        },
        "name": "dbs3Str",
        "onlyChanges": false,
        "x": 4680,
        "y": 3620,
        "wires": []
    },
    {
        "id": "8da417b57c8f4581",
        "type": "change",
        "z": "4dc207279e9d07bd",
        "d": true,
        "g": "a396d1277a82cc4e",
        "name": "Str:1",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "1",
                "tot": "num"
            },
            {
                "t": "set",
                "p": "topic",
                "pt": "msg",
                "to": "dbsStr",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 4170,
        "y": 3600,
        "wires": [
            [
                "5279442cee3af163"
            ]
        ]
    },
    {
        "id": "f1998aa01d429dd3",
        "type": "InterruptFlowUltimate",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "blk",
        "triggertopic": "go",
        "initializewith": "0",
        "autoToggle": "0",
        "payloadPropName": "payload",
        "translatorConfig": "",
        "x": 4180,
        "y": 3700,
        "wires": [
            [
                "e9a5b3ca08d88dc5",
                "f74c68867739de2b"
            ]
        ]
    },
    {
        "id": "3a1f34f20f4074b9",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "link in 99",
        "links": [
            "c5b3f8bf2f23feb9"
        ],
        "x": 4135,
        "y": 3780,
        "wires": [
            [
                "f1998aa01d429dd3"
            ]
        ]
    },
    {
        "id": "5279442cee3af163",
        "type": "StatusUltimate",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "Status",
        "property": "payload",
        "x": 4170,
        "y": 3640,
        "wires": [
            [
                "f1998aa01d429dd3"
            ]
        ]
    },
    {
        "id": "5e48788723f746c8",
        "type": "link in",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "link in 25",
        "links": [
            "c5b3f8bf2f23feb9"
        ],
        "x": 4135,
        "y": 3500,
        "wires": [
            [
                "ac0d896a02b9a341"
            ]
        ]
    },
    {
        "id": "ac0d896a02b9a341",
        "type": "delay",
        "z": "4dc207279e9d07bd",
        "g": "a396d1277a82cc4e",
        "name": "25ms",
        "pauseType": "delay",
        "timeout": "255",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "15",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": true,
        "allowrate": false,
        "outputs": 1,
        "x": 4170,
        "y": 3560,
        "wires": [
            [
                "8da417b57c8f4581"
            ]
        ]
    },
    {
        "id": "5484194f8e492911",
        "type": "global-config",
        "env": [],
        "modules": {
            "@victronenergy/node-red-contrib-victron": "1.6.52",
            "node-red-contrib-boolean-logic-ultimate": "1.2.2",
            "victron-vrm-api": "0.3.7"
        }
    }
]

Test:

[
    {
        "id": "ed8b65ec4edde5dd",
        "type": "inject",
        "z": "064be2905f8c46a7",
        "name": "1000 W",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1000",
        "payloadType": "num",
        "x": 150,
        "y": 3360,
        "wires": [
            [
                "76b482744285defd",
                "c056d0d395096552"
            ]
        ]
    },
    {
        "id": "27947066c2a0f9d1",
        "type": "inject",
        "z": "064be2905f8c46a7",
        "name": "2000 W",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "2000",
        "payloadType": "num",
        "x": 150,
        "y": 3400,
        "wires": [
            [
                "76b482744285defd",
                "c056d0d395096552"
            ]
        ]
    },
    {
        "id": "2a662db9f60cf1a9",
        "type": "inject",
        "z": "064be2905f8c46a7",
        "name": "3000 W",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "3000",
        "payloadType": "num",
        "x": 150,
        "y": 3440,
        "wires": [
            [
                "76b482744285defd",
                "c056d0d395096552"
            ]
        ]
    },
    {
        "id": "1ee22c885dd67562",
        "type": "inject",
        "z": "064be2905f8c46a7",
        "name": "4000 W",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "4000",
        "payloadType": "num",
        "x": 150,
        "y": 3480,
        "wires": [
            [
                "76b482744285defd",
                "c056d0d395096552"
            ]
        ]
    },
    {
        "id": "92f1a58b0e67ce0b",
        "type": "victron-output-pvinverter",
        "z": "064be2905f8c46a7",
        "service": "com.victronenergy.pvinverter/20",
        "path": "/Ac/PowerLimit",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/20",
            "name": "Fronius Symo 10.0-3-M"
        },
        "pathObj": {
            "path": "/Ac/PowerLimit",
            "type": "float",
            "name": "Power limit (W)",
            "writable": true
        },
        "name": "Fronius Leistungsbegrenzung [W]",
        "onlyChanges": false,
        "x": 880,
        "y": 3320,
        "wires": []
    },
    {
        "id": "3cc147c2ee80ef45",
        "type": "inject",
        "z": "064be2905f8c46a7",
        "name": "100 W",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "100",
        "payloadType": "num",
        "x": 150,
        "y": 3320,
        "wires": [
            [
                "76b482744285defd",
                "c056d0d395096552"
            ]
        ]
    },
    {
        "id": "c3db7cda4ff463ee",
        "type": "victron-output-ess",
        "z": "064be2905f8c46a7",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/MaxFeedInPower",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/MaxFeedInPower",
            "type": "integer",
            "name": "Maximum System Grid Feed In (W)",
            "remarks": "<ul><li>-1: No limit</li><li> &gt;=0: limited system feed-in</li></ul><p>Applies to DC-coupled and AC-coupled feed-in.</p>",
            "writable": true
        },
        "initial": "",
        "name": "Einspeisebegrenzung [W]",
        "onlyChanges": false,
        "x": 850,
        "y": 3520,
        "wires": []
    },
    {
        "id": "66b4baa82c268847",
        "type": "inject",
        "z": "064be2905f8c46a7",
        "name": "10000 W (volle Leistung)",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "10000",
        "payloadType": "num",
        "x": 210,
        "y": 3520,
        "wires": [
            [
                "c3db7cda4ff463ee",
                "c056d0d395096552"
            ]
        ]
    },
    {
        "id": "76b482744285defd",
        "type": "change",
        "z": "064be2905f8c46a7",
        "name": "-1 (Einspeisebegrenzung deaktivieren)",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "-1",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 550,
        "y": 3480,
        "wires": [
            [
                "c3db7cda4ff463ee"
            ]
        ]
    },
    {
        "id": "c056d0d395096552",
        "type": "delay",
        "z": "064be2905f8c46a7",
        "name": "Verzögerung 5 s",
        "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": 480,
        "y": 3320,
        "wires": [
            [
                "92f1a58b0e67ce0b"
            ]
        ]
    },
    {
        "id": "876724b2c359b22c",
        "type": "victron-input-settings",
        "z": "064be2905f8c46a7",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/MaxFeedInPower",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/MaxFeedInPower",
            "type": "integer",
            "name": "Maximum System Grid Feed In (W)",
            "remarks": "<ul><li>-1: No limit</li><li> &gt;=0: limited system feed-in</li></ul><p>Applies to DC-coupled and AC-coupled feed-in.</p>"
        },
        "name": "Einspeisebegrenzung [W]",
        "onlyChanges": false,
        "x": 850,
        "y": 3560,
        "wires": [
            []
        ]
    },
    {
        "id": "63dc7a6251d1cf6e",
        "type": "victron-input-pvinverter",
        "z": "064be2905f8c46a7",
        "service": "com.victronenergy.pvinverter/20",
        "path": "/Ac/PowerLimit",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/20",
            "name": "Fronius Symo 10.0-3-M"
        },
        "pathObj": {
            "path": "/Ac/PowerLimit",
            "type": "float",
            "name": "Power limit (W)"
        },
        "name": "Fronius Leistungsbegrenzung [W]",
        "onlyChanges": false,
        "x": 870,
        "y": 3360,
        "wires": [
            []
        ]
    }
]

warum funktioniert das nicht?

flows.zip (1,2 KB)