# Node Red Slow Down / performance after some days

**URL:** <https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791>\
**Category:** Node-RED\
**Tags:** node-red\
**Created:** [23 February 2026 15:00 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791 "2026-02-23T15:00:13Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dieter\_P](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@Dieter\_P](https://community.victronenergy.com/u/Dieter_P)\
**Post date:** [23 February 2026 15:00 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/1 "2026-02-23T15:00:13Z")

</div>

Hi everyone,

I’m looking for some advice regarding **Node-RED performance** on my **Victron MultiPlus-II 5000 GX**.

I’m running Node-RED directly on the GX device (yes, I know it’s officially more of a community solution). My setup is very small and simple:

- 3 flows polling three **Shelly 1PM Mini** devices

```flows
[
    {
        "id": "80d79748e7015c78",
        "type": "tab",
        "label": "Shelly BKW Garage",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "988f909b2b264292",
        "type": "victron-virtual",
        "z": "80d79748e7015c78",
        "name": "Shelly 1PM Mini Garage",
        "device": "pvinverter",
        "default_values": false,
        "battery_capacity": 25,
        "include_battery_temperature": false,
        "grid_nrofphases": 1,
        "include_motor_temp": false,
        "include_controller_temp": false,
        "include_coolant_temp": false,
        "include_motor_rpm": true,
        "include_motor_direction": true,
        "position": "0",
        "pvinverter_nrofphases": "3",
        "fluid_type": 0,
        "include_tank_battery": false,
        "include_tank_temperature": false,
        "tank_battery_voltage": 3.3,
        "tank_capacity": 0.2,
        "temperature_type": 2,
        "include_humidity": false,
        "include_pressure": false,
        "include_temp_battery": false,
        "temp_battery_voltage": 3.3,
        "x": 190,
        "y": 120,
        "wires": []
    },
    {
        "id": "c98e64e99eda263b",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/Power",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/Power",
            "name": "/Ac/Power",
            "type": "object",
            "value": null
        },
        "name": "",
        "onlyChanges": false,
        "x": 1040,
        "y": 260,
        "wires": []
    },
    {
        "id": "031241b23e58dee8",
        "type": "inject",
        "z": "80d79748e7015c78",
        "name": "2s",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "num",
        "x": 130,
        "y": 280,
        "wires": [
            [
                "b004a4eb164c3191"
            ]
        ]
    },
    {
        "id": "b004a4eb164c3191",
        "type": "shelly-gen2",
        "z": "80d79748e7015c78",
        "hostname": "192.168.7.154",
        "description": "Shelly Garage BKW",
        "mode": "none",
        "verbose": false,
        "server": "",
        "outputmode": "event",
        "uploadretryinterval": 5000,
        "pollinginterval": 5000,
        "pollstatus": false,
        "getstatusoncommand": true,
        "devicetype": "S3SW-001P8EU",
        "devicetypemustmatchexactly": true,
        "captureblutooth": false,
        "outputs": 1,
        "x": 320,
        "y": 280,
        "wires": [
            [
                "93c6b5c3b67fef60",
                "efc547032f6e8ff2",
                "ff02152d270a5ec9",
                "687cb0a1c859739a"
            ]
        ]
    },
    {
        "id": "93c6b5c3b67fef60",
        "type": "change",
        "z": "80d79748e7015c78",
        "name": "Power",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.switch0.apower",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 570,
        "y": 260,
        "wires": [
            [
                "cdf8f4da62f264e2"
            ]
        ]
    },
    {
        "id": "a2bda360f9d446ab",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/L2/Power",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/L2/Power",
            "name": "/Ac/L2/Power",
            "type": "number",
            "value": 0
        },
        "name": "",
        "onlyChanges": false,
        "x": 1050,
        "y": 320,
        "wires": []
    },
    {
        "id": "9dbe5908301e23a4",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/L2/Voltage",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/L2/Voltage",
            "name": "/Ac/L2/Voltage",
            "type": "number",
            "value": 0
        },
        "name": "",
        "onlyChanges": false,
        "x": 1060,
        "y": 140,
        "wires": []
    },
    {
        "id": "efc547032f6e8ff2",
        "type": "change",
        "z": "80d79748e7015c78",
        "name": "Voltage",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.switch0.voltage",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 140,
        "wires": [
            [
                "9dbe5908301e23a4"
            ]
        ]
    },
    {
        "id": "ff02152d270a5ec9",
        "type": "change",
        "z": "80d79748e7015c78",
        "name": "Current",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.switch0.current",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 200,
        "wires": [
            [
                "2fead3ef3f1b3d37"
            ]
        ]
    },
    {
        "id": "2fead3ef3f1b3d37",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/L2/Current",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/L2/Current",
            "name": "/Ac/L2/Current",
            "type": "number",
            "value": 0
        },
        "name": "",
        "onlyChanges": false,
        "x": 1060,
        "y": 200,
        "wires": []
    },
    {
        "id": "ad0a80fbc7423c68",
        "type": "comment",
        "z": "80d79748e7015c78",
        "name": "Leistungsmessung BKW Garage",
        "info": "Messung des BKW zur Anzeige in Victron",
        "x": 210,
        "y": 60,
        "wires": []
    },
    {
        "id": "687cb0a1c859739a",
        "type": "change",
        "z": "80d79748e7015c78",
        "name": "Energy",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "payload.switch0.aenergy.total",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 580,
        "y": 380,
        "wires": [
            [
                "4b294629fc3ebb1c"
            ]
        ]
    },
    {
        "id": "895f8206a488df80",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/Energy/Forward",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/Energy/Forward",
            "name": "/Ac/Energy/Forward",
            "type": "object",
            "value": null
        },
        "name": "",
        "onlyChanges": false,
        "x": 1070,
        "y": 380,
        "wires": []
    },
    {
        "id": "e2933c7016fc5476",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/L2/Energy/Forward",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/L2/Energy/Forward",
            "name": "/Ac/L2/Energy/Forward",
            "type": "number",
            "value": 0
        },
        "name": "",
        "onlyChanges": false,
        "x": 1080,
        "y": 440,
        "wires": []
    },
    {
        "id": "4b294629fc3ebb1c",
        "type": "function",
        "z": "80d79748e7015c78",
        "name": "Wh to kWh",
        "func": "msg.payload = msg.payload / 1000;\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 750,
        "y": 380,
        "wires": [
            [
                "895f8206a488df80",
                "e2933c7016fc5476"
            ]
        ]
    },
    {
        "id": "cdf8f4da62f264e2",
        "type": "function",
        "z": "80d79748e7015c78",
        "name": "Positive Power",
        "func": "msg.payload = msg.payload * (-1);\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 740,
        "y": 280,
        "wires": [
            [
                "c98e64e99eda263b",
                "a2bda360f9d446ab"
            ]
        ]
    }
]

```

- 1 additional flow that performs a small check and applies a charge voltage limit

```flows
[
    {
        "id": "flow_volladung",
        "type": "tab",
        "label": "Volladung Flow (Victron) mit History",
        "disabled": false,
        "info": ""
    },
    {
        "id": "victron_input_cvl",
        "type": "victron-input-battery",
        "z": "flow_volladung",
        "service": "com.victronenergy.battery/512",
        "path": "/Info/MaxChargeVoltage",
        "serviceObj": {
            "service": "com.victronenergy.battery/512",
            "name": "JK-BMS"
        },
        "pathObj": {
            "path": "/Info/MaxChargeVoltage",
            "type": "float",
            "name": "CVL - Charge Voltage Limit (V)"
        },
        "name": "CVL vom JK-BMS",
        "onlyChanges": false,
        "x": 110,
        "y": 180,
        "wires": [
            [
                "function_volladung"
            ]
        ]
    },
    {
        "id": "inject_manual",
        "type": "inject",
        "z": "flow_volladung",
        "name": "Manuelle Volladung",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "payload": "manual",
        "payloadType": "str",
        "x": 290,
        "y": 280,
        "wires": [
            [
                "function_volladung"
            ]
        ]
    },
    {
        "id": "inject_bulk",
        "type": "inject",
        "z": "flow_volladung",
        "name": "Bulk / Schonladung",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "payload": "bulk",
        "payloadType": "str",
        "x": 290,
        "y": 340,
        "wires": [
            [
                "function_volladung"
            ]
        ]
    },
    {
        "id": "inject_auto",
        "type": "inject",
        "z": "flow_volladung",
        "name": "Automatikbetrieb",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "payload": "auto",
        "payloadType": "str",
        "x": 280,
        "y": 400,
        "wires": [
            [
                "function_volladung"
            ]
        ]
    },
    {
        "id": "inject_cvl_56",
        "type": "inject",
        "z": "flow_volladung",
        "name": "Simulierter CVL 56V",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "payload": "56",
        "payloadType": "num",
        "x": 310,
        "y": 60,
        "wires": [
            [
                "function_volladung"
            ]
        ]
    },
    {
        "id": "inject_cvl_55",
        "type": "inject",
        "z": "flow_volladung",
        "name": "Simulierter CVL 55V",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "payload": "55",
        "payloadType": "num",
        "x": 310,
        "y": 120,
        "wires": [
            [
                "function_volladung"
            ]
        ]
    },
    {
        "id": "load_history_inject",
        "type": "inject",
        "z": "flow_volladung",
        "name": "Load History Start",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": true,
        "onceDelay": 0.5,
        "payload": "",
        "payloadType": "str",
        "x": 210,
        "y": 520,
        "wires": [
            [
                "read_volladung_history"
            ]
        ]
    },
    {
        "id": "read_volladung_history",
        "type": "file in",
        "z": "flow_volladung",
        "name": "Read Volladung History",
        "filename": "/data/home/nodered/.node-red/history/volladung_history.json",
        "format": "utf8",
        "chunk": false,
        "sendError": true,
        "encoding": "none",
        "x": 430,
        "y": 520,
        "wires": [
            [
                "load_history_context"
            ]
        ]
    },
    {
        "id": "load_history_context",
        "type": "function",
        "z": "flow_volladung",
        "name": "Load History into Context",
        "func": "try {\n var history = JSON.parse(msg.payload);\n flow.set('volladung_history', history);\n node.status({fill:'green', shape:'dot', text:'History loaded (' + history.length + ' entries)'});\n} catch (e) {\n node.status({fill:'red', shape:'ring', text:'History file empty or invalid'});\n flow.set('volladung_history', []);\n}\nreturn null;\n",
        "outputs": 0,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 670,
        "y": 520,
        "wires": []
    },
    {
        "id": "write_volladung_history",
        "type": "file",
        "z": "flow_volladung",
        "name": "Write Volladung History",
        "filename": "/data/home/nodered/.node-red/history/volladung_history.json",
        "filenameType": "str",
        "appendNewline": false,
        "createDir": true,
        "overwriteFile": true,
        "encoding": "utf8",
        "x": 1010,
        "y": 420,
        "wires": [
            []
        ]
    },
    {
        "id": "rbe_node",
        "type": "rbe",
        "z": "flow_volladung",
        "name": "RBE Filter",
        "func": "rbe",
        "gap": "",
        "start": "",
        "inout": "out",
        "property": "payload",
        "x": 930,
        "y": 260,
        "wires": [
            [
                "victron_output_dvcc"
            ]
        ]
    },
    {
        "id": "victron_output_dvcc",
        "type": "victron-output-custom",
        "z": "flow_volladung",
        "service": "com.victronenergy.settings",
        "path": "/Settings/SystemSetup/MaxChargeVoltage",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings"
        },
        "pathObj": {
            "path": "/Settings/SystemSetup/MaxChargeVoltage",
            "name": "/Settings/SystemSetup/MaxChargeVoltage",
            "type": "number",
            "value": 0
        },
        "name": "DVCC MaxChargeVoltage",
        "onlyChanges": false,
        "x": 1150,
        "y": 260,
        "wires": []
    },
    {
        "id": "comment_function",
        "type": "comment",
        "z": "flow_volladung",
        "name": "Funktion",
        "info": "Volladung Logic Node (Victron / DVCC)\n\nSteuert die DVCC-Ladespannung eines Victron-Batteriesystems.\n\nBetriebsmodi:\nauto: max. 1 Volladung pro Kalenderwoche\nmanual: erzwingt sofort Volladung (DVCC=0V)\nbulk: Dauerhafte Schonladung (Float 55.2V)\n\nFunktionslogik:\n- CVL vom BMS einlesen\n- Spannungsabfall DELTA_V detektieren -> Volladung\n- History File aktualisieren\n- DVCC entsprechend setzen\n\nKontext:\n- letzte Volladung (KW + Datum)\n- letzter Max-CVL\n- Modus\n\nStatus zeigt Modus, letzte Volladung, aktuell gesetzte DVCC-Spannung\n\nParameter: DELTA_V, FLOAT_VOLTAGE, INIT_KW, INIT_DATE",
        "x": 100,
        "y": 40,
        "wires": []
    },
    {
        "id": "function_volladung",
        "type": "function",
        "z": "flow_volladung",
        "name": "Volladung Logic (Victron)",
        "func": "// =====================\n// Volladung Logic (Victron)\n// Output 1: DVCC Spannung\n// Output 2: History schreiben (nur bei Volladung)\n// =====================\n\nvar DELTA_V = 0.5;\nvar FLOAT_VOLTAGE = 55.2;\nvar INIT_KW = 1;\nvar INIT_DATE = \"2026-01-01\";\n\nfunction getKW(date) {\n var d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));\n var dayNum = d.getUTCDay() || 7;\n d.setUTCDate(d.getUTCDate() + 4 - dayNum);\n var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));\n return Math.ceil((((d - yearStart) / 86400000) + 1) / 7);\n}\n\nvar now = new Date();\nvar currentKW = getKW(now);\nvar currentDateStr = now.toISOString().slice(0,10);\n\n// ----- History laden -----\nvar history = flow.get('volladung_history');\nif (!history) history = [];\n\n// Letzten Eintrag bestimmen\nvar lastFullKW = history.length > 0 ? history[history.length-1].kw : INIT_KW;\nvar lastFullDate = history.length > 0 ? history[history.length-1].date : INIT_DATE;\n\nvar lastMaxCVL = context.get('lastMaxCVL');\nvar modus = context.get('modus');\nif (!modus) modus = \"auto\";\n\n// ----- Modus Inject -----\nif (typeof msg.payload === \"string\") {\n if ([\"manual\",\"bulk\",\"auto\"].indexOf(msg.payload) !== -1) {\n modus = msg.payload;\n context.set(\"modus\", modus);\n\n node.status({\n fill:\"blue\",\n shape:\"dot\",\n text:\"Modus: \"+modus+\n \" | LetzteKW:\"+lastFullKW+\n \" (\"+lastFullDate+\")\"+\n \" | AktKW:\"+currentKW\n });\n }\n return null;\n}\n\n// ----- CVL Input -----\nif (typeof msg.payload !== \"number\") return null;\nvar currentCVL = msg.payload;\n\nif (lastMaxCVL === undefined) lastMaxCVL = currentCVL;\n\nvar dvccVoltage;\nvar fullChargeDetected = false;\n\n// ----- Logik -----\nif (modus === \"manual\") {\n dvccVoltage = 0;\n}\nelse if (modus === \"bulk\") {\n dvccVoltage = FLOAT_VOLTAGE;\n}\nelse {\n\n // Volladung erkennen (Spannungsabfall)\n if ((lastMaxCVL - currentCVL) >= DELTA_V) {\n\n if (lastFullKW !== currentKW) {\n\n fullChargeDetected = true;\n\n var entry = {\n kw: currentKW,\n date: currentDateStr\n };\n\n history.push(entry);\n flow.set(\"volladung_history\", history);\n\n // WICHTIG: sofort lokale Variablen aktualisieren\n lastFullKW = currentKW;\n lastFullDate = currentDateStr;\n }\n\n lastMaxCVL = currentCVL;\n }\n\n if (currentCVL > lastMaxCVL) {\n lastMaxCVL = currentCVL;\n }\n\n dvccVoltage = (lastFullKW !== currentKW) ? 0 : FLOAT_VOLTAGE;\n}\n\n// ----- Context speichern -----\ncontext.set(\"lastMaxCVL\", lastMaxCVL);\ncontext.set(\"modus\", modus);\n\n// ----- Statusanzeige (eindeutig) -----\nnode.status({\n fill: fullChargeDetected ? \"green\" : \"blue\",\n shape: \"dot\",\n text:\n \"Modus:\"+modus+\n \" | LetzteKW:\"+lastFullKW+\n \" (\"+lastFullDate+\")\"+\n \" | AktKW:\"+currentKW+\n \" | DVCC:\"+dvccVoltage+\"V\"\n});\n\n// ----- Output 1: DVCC -----\nvar msgDVCC = { payload: dvccVoltage };\n\n// ----- Output 2: History nur bei echter Volladung -----\nvar msgHistory = null;\n\nif (fullChargeDetected) {\n msgHistory = {\n payload: JSON.stringify(history, null, 2)\n };\n}\n\nreturn [msgDVCC, msgHistory];\n",
        "outputs": 2,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 570,
        "y": 260,
        "wires": [
            [
                "rbe_node"
            ],
            [
                "write_volladung_history"
            ]
        ]
    }
]

```

Functionally, everything works perfectly. The flows continue to run reliably and the charge limitation works as expected.

However, after about 2–3 days of uptime, the **Node-RED web interface becomes extremely slow**.

- The editor loads very slowly

- Deployments take much longer

- Navigating between tabs is very sluggish

Important: The flows themselves keep running correctly. It’s mainly the UI that becomes almost unusable.

After restarting Node-RED, everything is fast and responsive again — but only for a couple of days.

---

<div class="post-metadata">

**Author:** ![nickdb](https://dub1.discourse-cdn.com/victron/user_avatar/community.victronenergy.com/nickdb/32/51440_2.png) [@nickdb](https://community.victronenergy.com/u/nickdb)\
**Post date:** [23 February 2026 15:17 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/2 "2026-02-23T15:17:13Z")

</div>

This may have more to do with the shelly nodes you are using and the limited resources in the integrated GX.

---

<div class="post-metadata">

**Author:** ![Dieter\_P](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@Dieter\_P](https://community.victronenergy.com/u/Dieter_P)\
**Post date:** [23 February 2026 15:43 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/3 "2026-02-23T15:43:31Z")

</div>

Thanks. Are there more ressource friendly options to use?  
I tested for the charge limit flow also with mqtt connection to get data back by using retain of mqtt, but this seems to be much more heavy for the GX device and I stopped using this.

---

<div class="post-metadata">

**Author:** ![nickdb](https://dub1.discourse-cdn.com/victron/user_avatar/community.victronenergy.com/nickdb/32/51440_2.png) [@nickdb](https://community.victronenergy.com/u/nickdb)\
**Post date:** [23 February 2026 15:47 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/4 "2026-02-23T15:47:18Z")

</div>

You are probably better off getting a cerbo or ekrano and disconnecting the integrated GX.  
You could also run nodered on an external device like a Pi or PC.  
The OS has got heavier in recent times.  
I’m not overly familiar with the Shelly nodes, we have however seen plenty of performance issues with shelly integrations of past.

---

<div class="post-metadata">

**Author:** ![Dieter\_P](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@Dieter\_P](https://community.victronenergy.com/u/Dieter_P)\
**Post date:** [23 February 2026 15:56 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/5 "2026-02-23T15:56:10Z")

</div>

> [@nickdb](#):
>
> You could also run nodered on an external device like a Pi or PC.  
> The OS has got heavier in recent times.

Thanks. I´m already running a mini pc as server for my home automation system (N150 CPU etc.). So the OS or Node Red installation are seen also heavy for the GX and possibly more heavy then the several external connections when Node Red is connecting from external server?

---

<div class="post-metadata">

**Author:** ![nickdb](https://dub1.discourse-cdn.com/victron/user_avatar/community.victronenergy.com/nickdb/32/51440_2.png) [@nickdb](https://community.victronenergy.com/u/nickdb)\
**Post date:** [23 February 2026 15:58 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/6 "2026-02-23T15:58:42Z")

</div>

You would offload cpu and memory resources for nodered which can add up.  
It will just use a tcp connection for getting or setting dbus values, which would be lighter than running the large image on the internal GX.

---

<div class="post-metadata">

**Author:** ![fredvduin](https://avatars.discourse-cdn.com/v4/letter/f/ed655f/32.png) [@fredvduin](https://community.victronenergy.com/u/fredvduin)\
**Post date:** [23 February 2026 16:26 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/7 "2026-02-23T16:26:46Z")

</div>

> [@Dieter\_P](#):
>
> After restarting Node-RED, everything is fast and responsive again — but only for a couple of days

How do you restart. (ssh?)

I see a repeat of 2 seconds, is that necessary.

What does command top (my Multiplus 2 3000 GX - 5% this moment)

 ![image](https://europe1.discourse-cdn.com/victron/original/3X/0/3/03b53a42b4dc0c5534917dae8ec2b82a7abfd623.png)

---

<div class="post-metadata">

**Author:** ![Dieter\_P](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@Dieter\_P](https://community.victronenergy.com/u/Dieter_P)\
**Post date:** [23 February 2026 16:34 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/8 "2026-02-23T16:34:26Z")

</div>

> [@fredvduin](#):
>
> How do you restart. (ssh?)

In the VRM Console I deactivated Node-Red. Wait 5 sec and reactive again.

> [@fredvduin](#):
>
> I see a repeat of 2 seconds, is that necessary.

This is from the 3 shelly flows, polling the data. Guess when i remove this no updates will be recived from the shelly.

> [@nickdb](#):
>
> It will just use a tcp connection for getting or setting dbus values, which would be lighter than running the large image on the internal GX.

Sounds good. Main reason for Node Red usage for me was also the easy way of creation on new devices in the venus os. Didn´t like using property scripts which are very hard to maintain. therefore used node red and liked it 🙂

---

<div class="post-metadata">

**Author:** ![Sdb](https://avatars.discourse-cdn.com/v4/letter/s/ee59a6/32.png) [@Sdb](https://community.victronenergy.com/u/Sdb)\
**Post date:** [23 February 2026 16:34 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/9 "2026-02-23T16:34:44Z")

</div>

Looks like somewhere in your functions there is a fault filling up memory wich is cleaned up after restart.

Can also be a node, better using Mqtt.

---

<div class="post-metadata">

**Author:** ![Dieter\_P](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@Dieter\_P](https://community.victronenergy.com/u/Dieter_P)\
**Post date:** [23 February 2026 16:45 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/10 "2026-02-23T16:45:05Z")

</div>

> [@fredvduin](#):
>
> What does command top (my Multiplus 2 3000 GX - 5% this moment)

startet at 23% load and now is average is at 15%

 ![grafik](https://europe1.discourse-cdn.com/victron/original/3X/0/4/04c2dba57b9a77e13b866b4708143f3ae29b426f.png)

---

<div class="post-metadata">

**Author:** ![fredvduin](https://avatars.discourse-cdn.com/v4/letter/f/ed655f/32.png) [@fredvduin](https://community.victronenergy.com/u/fredvduin)\
**Post date:** [24 February 2026 09:02 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/11 "2026-02-24T09:02:49Z")

</div>

> [@Dieter\_P](#):
>
> > [@fredvduin](#):
> >
> > I see a repeat of 2 seconds, is that necessary.
> 
> This is from the 3 shelly flows, polling the data. Guess when i remove this no updates will be recived from the shelly.

Not removing, change for example every 60 seconds.

If it is for ESS you need more data/samples.

I use Tosmota adapters (MQTT) and have a lot more flows/nodes on my GX, no performance issue.

All my data goes in a Mysql DBase (Dasboard Grafana) but I do not need the values every 2 seconds.

---

<div class="post-metadata">

**Author:** ![Dieter\_P](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@Dieter\_P](https://community.victronenergy.com/u/Dieter_P)\
**Post date:** [24 February 2026 09:31 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/12 "2026-02-24T09:31:19Z")

</div>

> [@fredvduin](#):
>
> Not removing, change for example every 60 seconds.

Thanks, will give it a try.

> [@fredvduin](#):
>
> If it is for ESS you need more data/samples.

If I´m right the ESS is fully controlled by the grid meter. This solution/split in 3 PV-Inverters from the Shelly devices is only for my comfort, means visualisation in VRM, right?

Because this data in VRM is combined with data from Victron smart meters which are updated more often (~1sec.) it´s more realistic to also have it updated in similar cycle times.

The Shellys are also integrated in my home automation system, means are also stored in an influxdB. But VRM is very nice, so tried to have a complete view there.

> [@fredvduin](#):
>
> have a lot more flows/nodes on my GX, no performance issue.

Thanks, Very helpful and let me stay optimistic and looking for a solution with node red on the GX.

---

<div class="post-metadata">

**Author:** ![TomBerger](https://avatars.discourse-cdn.com/v4/letter/t/848f3c/32.png) [@TomBerger](https://community.victronenergy.com/u/TomBerger)\
**Post date:** [24 February 2026 09:42 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/13 "2026-02-24T09:42:43Z")

</div>

> [@Sdb](#):
>
> Looks like somewhere in your functions there is a fault filling up memory wich is cleaned up after restart.

This was my first idea too. Filling up an array variable with data from a shelly device can rather soon eat up all available memory of the system.

---

<div class="post-metadata">

**Author:** ![Dieter\_P](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@Dieter\_P](https://community.victronenergy.com/u/Dieter_P)\
**Post date:** [24 February 2026 10:43 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/14 "2026-02-24T10:43:22Z")

</div>

> [@fredvduin](#):
>
> Not removing, change for example every 60 seconds.

Currently I have only VRM access and no SSH to look for the CPU load.  
But after reduction to 30s of all 3 Shellys it seems that there has been an activation of a “turbo”.  
The whole system is much more reactive and better to handle.

---

<div class="post-metadata">

**Author:** ![Dieter\_P](https://avatars.discourse-cdn.com/v4/letter/d/c89c15/32.png) [@Dieter\_P](https://community.victronenergy.com/u/Dieter_P)\
**Post date:** [24 February 2026 17:49 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/15 "2026-02-24T17:49:53Z")

</div>

> [@fredvduin](#):
>
> Not removing, change for example every 60 seconds.

Thanks. Even with 10sec Poll the load is down to 2% and system runs very smooth.

 ![grafik](https://europe1.discourse-cdn.com/victron/original/3X/e/8/e8e7f562bce08d862af4419aa5defaa5bf475112.png)

```flows
[
    {
        "id": "80d79748e7015c78",
        "type": "tab",
        "label": "Shelly BKW Garage",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "988f909b2b264292",
        "type": "victron-virtual",
        "z": "80d79748e7015c78",
        "name": "Shelly 1PM Mini Garage",
        "device": "pvinverter",
        "default_values": false,
        "battery_capacity": 25,
        "include_battery_temperature": false,
        "grid_nrofphases": 1,
        "include_motor_temp": false,
        "include_controller_temp": false,
        "include_coolant_temp": false,
        "include_motor_rpm": true,
        "include_motor_direction": true,
        "position": "0",
        "pvinverter_nrofphases": "3",
        "fluid_type": 0,
        "include_tank_battery": false,
        "include_tank_temperature": false,
        "tank_battery_voltage": 3.3,
        "tank_capacity": 0.2,
        "temperature_type": 2,
        "include_humidity": false,
        "include_pressure": false,
        "include_temp_battery": false,
        "temp_battery_voltage": 3.3,
        "x": 190,
        "y": 120,
        "wires": []
    },
    {
        "id": "ad0a80fbc7423c68",
        "type": "comment",
        "z": "80d79748e7015c78",
        "name": "Leistungsmessung BKW Garage",
        "info": "Messung des BKW zur Anzeige in Victron",
        "x": 210,
        "y": 60,
        "wires": []
    },
    {
        "id": "923d0bb2c60fbf6e",
        "type": "inject",
        "z": "80d79748e7015c78",
        "name": "Poll 10s",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "10",
        "crontab": "",
        "once": true,
        "onceDelay": "2",
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 160,
        "y": 280,
        "wires": [
            [
                "c8d8ec2302030d2e"
            ]
        ]
    },
    {
        "id": "c8d8ec2302030d2e",
        "type": "shelly-gen2",
        "z": "80d79748e7015c78",
        "hostname": "192.168.7.154",
        "description": "shelly1pmminig3",
        "mode": "none",
        "verbose": false,
        "server": "",
        "outputmode": "event",
        "uploadretryinterval": "",
        "pollinginterval": 5000,
        "pollstatus": false,
        "getstatusoncommand": false,
        "devicetype": "S3SW-001P8EU",
        "devicetypemustmatchexactly": false,
        "captureblutooth": false,
        "outputs": 1,
        "x": 430,
        "y": 280,
        "wires": [
            [
                "7db999cf586b8386"
            ]
        ]
    },
    {
        "id": "7db999cf586b8386",
        "type": "function",
        "z": "80d79748e7015c78",
        "name": "Split Values",
        "func": "let power = msg.payload.switch0.apower * (-1);\nlet voltage = msg.payload.switch0.voltage;\nlet current = msg.payload.switch0.current;\nlet energy = msg.payload.switch0.aenergy.total / 1000;\n\nreturn [\n {payload: power},\n {payload: voltage},\n {payload: current},\n {payload: energy}\n];",
        "outputs": 4,
        "x": 680,
        "y": 280,
        "wires": [
            [
                "fe69c2218d07c454"
            ],
            [
                "590114c9f0a4d9d5"
            ],
            [
                "68a64ea629d13d91"
            ],
            [
                "7f7a062563bc96e8"
            ]
        ]
    },
    {
        "id": "fe69c2218d07c454",
        "type": "rbe",
        "z": "80d79748e7015c78",
        "name": "Deadband 5W",
        "func": "deadband",
        "gap": "5",
        "property": "payload",
        "x": 920,
        "y": 200,
        "wires": [
            [
                "ca1cba1d8740ab7b",
                "80bd66cc51e34ca1"
            ]
        ]
    },
    {
        "id": "7f7a062563bc96e8",
        "type": "function",
        "z": "80d79748e7015c78",
        "name": "Energy ≥ 0.01 kWh",
        "func": "let last = flow.get('lastEnergy') || 0;\nlet current = msg.payload;\n\nif (Math.abs(current - last) >= 0.01) {\n flow.set('lastEnergy', current);\n return msg;\n}\n\nreturn null;",
        "outputs": 1,
        "x": 930,
        "y": 400,
        "wires": [
            [
                "5efe07ffdc5261ee",
                "544e84aa202aec1d"
            ]
        ]
    },
    {
        "id": "ca1cba1d8740ab7b",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/L2/Power",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/L2/Power",
            "name": "/Ac/L2/Power",
            "type": "number",
            "value": 29.6
        },
        "name": "",
        "onlyChanges": true,
        "x": 1630,
        "y": 180,
        "wires": []
    },
    {
        "id": "37374d43a8676687",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/L2/Voltage",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/L2/Voltage",
            "name": "/Ac/L2/Voltage",
            "type": "number",
            "value": 234.1
        },
        "name": "",
        "onlyChanges": true,
        "x": 1640,
        "y": 240,
        "wires": []
    },
    {
        "id": "e9a4a4b5b67d99fa",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/L2/Current",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/L2/Current",
            "name": "/Ac/L2/Current",
            "type": "number",
            "value": 0.261
        },
        "name": "",
        "onlyChanges": true,
        "x": 1640,
        "y": 300,
        "wires": []
    },
    {
        "id": "5efe07ffdc5261ee",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/L2/Energy/Forward",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/L2/Energy/Forward",
            "name": "/Ac/L2/Energy/Forward",
            "type": "number",
            "value": 23.562602
        },
        "name": "",
        "onlyChanges": true,
        "x": 1660,
        "y": 360,
        "wires": []
    },
    {
        "id": "80bd66cc51e34ca1",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/Power",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/Power",
            "name": "/Ac/Power",
            "type": "object",
            "value": null
        },
        "name": "",
        "onlyChanges": false,
        "x": 1620,
        "y": 120,
        "wires": []
    },
    {
        "id": "544e84aa202aec1d",
        "type": "victron-output-custom",
        "z": "80d79748e7015c78",
        "service": "com.victronenergy.pvinverter/100",
        "path": "/Ac/Energy/Forward",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/100",
            "name": "Shelly 1PM Mini Garage (100)"
        },
        "pathObj": {
            "path": "/Ac/Energy/Forward",
            "name": "/Ac/Energy/Forward",
            "type": "object",
            "value": null
        },
        "name": "",
        "onlyChanges": false,
        "x": 1650,
        "y": 420,
        "wires": []
    },
    {
        "id": "590114c9f0a4d9d5",
        "type": "rbe",
        "z": "80d79748e7015c78",
        "name": "Deadband 5V",
        "func": "deadband",
        "gap": "3",
        "start": "",
        "inout": "out",
        "septopics": true,
        "property": "payload",
        "topi": "topic",
        "x": 920,
        "y": 260,
        "wires": [
            [
                "37374d43a8676687"
            ]
        ]
    },
    {
        "id": "68a64ea629d13d91",
        "type": "rbe",
        "z": "80d79748e7015c78",
        "name": "Deadband 0,02A",
        "func": "deadband",
        "gap": "0.02",
        "start": "",
        "inout": "out",
        "septopics": true,
        "property": "payload",
        "topi": "topic",
        "x": 930,
        "y": 320,
        "wires": [
            [
                "e9a4a4b5b67d99fa"
            ]
        ]
    }
]

```

---

<div class="post-metadata">

**Author:** ![system](https://europe1.discourse-cdn.com/victron/original/1X/21a9a7b5db7c6339715f993568736a7053199995.png) [@system](https://community.victronenergy.com/u/system)\
**Post date:** [10 March 2026 17:50 UTC](https://community.victronenergy.com/t/node-red-slow-down-performance-after-some-days/53791/16 "2026-03-10T17:50:47Z")

</div>

Closed on 10 March 2026 17:50 UTC

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
