Ess gridsetpoint is being ignored

Hi all, I have a following setup: Multiplus II managed by a raspberry PI, connected to the battery (JK BMS) no solar.

I am using a “virtual” mqtt based grid sensor which is visible and recognised by the system. The issue is that the refresh rate of the sensor is 10s, which means that with ESS set in mode 1 it massively undershoot and then overshoot with huge swings due to the fact that it doesnt see a reflection on the grid.

From what I’ve read, it should be possible to manually set the ESS in external mode and use the Grid set-point to a desired outcome, and victron will adapt to the setting (as long as its within sensible values). So, for example, if my grid import is 500w, I set the value to -500 and Victron should take around 500w from the battery.

Well, thats not happening. Setting the value to -500, -1000, 1000 brings absolutely no differences.

If I set the ESS to battery optimized, it will happily begin to use the battery but with huge swings (but at least that should confirm that it is able to discharge properly).

Am I missing something obvious here?

I kind of managed to obtain what I want when setting the ESS in mode Battery Optimized with

Where the calculate gridpointset is

let currentSet = parseFloat(context.get("currentSetPoint")) || 0
let gridPower = parseFloat(msg.payload);
let newCurrentSet = currentSet - gridPower;
node.warn({
   "currentSet": currentSet,
   "gridPower": gridPower,
   "newCurrentSet": newCurrentSet
});
context.set("currentSetPoint",msg.payload);
msg.payload = newCurrentSet;

return msg;

and the ct meter is set to the same value of newCurrentSet. This achieve a close to the truth battery discharge, but due to ESS smoothing, currentSetPoint begin to ramp up and up which is too desirable (and the whole thing is pretty ugly as well)

If you only want to control the grid setpoint, use mode 2 and let the system handle all the other values.

With ESS Mode 3, the grid setpoint has no impact, because the multiplus is no longer adjusting it’s output based on that. You then have to provide a explicit InverterPowerSetpoint for the Inverter to use.

Sooo the documentation (ESS mode 2 and 3 [Victron Energy]) is completely wrong? 3.3 paragraph states that

When controlling the Multi using software running on the GX device, you should set Settings→ESS→Mode to external control. The following dbus paths can then be adjusted on the com.victronenergy.vebus.ttyO1 service.

a) Grid Power Setpoints - /Hub4/Lx/AcPowerSetpoint
This includes a path for each available phase
/Hub4/L1/AcPowerSetpoint (setpoint for L1)
/Hub4/L2/AcPowerSetpoint (setpoint for L2, where available)
/Hub4/L3/AcPowerSetpoint (setpoint for L3, where available)
When set to a positive value, power will be taken from the grid on phase x.
When set to a negative value, power will be fed into the grid on phase x.
b) Disable charger - /Hub4/DisableCharge
0: Charger is enabled.
1: Charger is disabled.
c) Disable Feed-in - /Hub4/DisabledFeedIn
0: The inverter is enabled to feed power into the grid.
1: Inverter will not feed power into the grid and the battery will not discharge.
When both Charge and Feed-in is disabled, the Multi will go into Passthru.
In case of grid failure, this parameter will be ignored and power will be supplied to AC Out.

Or is it referring to the hub4 functionality exclusively (but then again, the documentation is for Ess)? In that case is there any documentation which describes the ESS functionality in depth?

I think the documentation is correct but the catch is “setpoint for Lx” is in reference to the inverter and NOT to an external grid-meter or even the meter of the inverter itself. This is explained in 3.1.

So setpoint -100 on L1, will make your inverter provide 100W. If your consumption is 200W, you will also draw 100W from the grid.

I do agree calling everything behind the inverter “the grid”, might lead to confusion but here we are.

I use mode-3 when I want to “stop the L2/L3 inverters” because the loads are < 50W and compensate them using the L1 inverter. (efficiency..)

This is part of a DESS trade flow which forces DESS into green-mode when no trading is done.

[
    {
        "id": "5207dbab4a60db80",
        "type": "victron-input-system",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.system/0",
        "path": "/Ac/Consumption/L2/Power",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Ac/Consumption/L2/Power",
            "type": "float",
            "name": "AC Consumption L2 (W)"
        },
        "initial": "",
        "name": "",
        "onlyChanges": false,
        "roundValues": "2",
        "x": 190,
        "y": 1240,
        "wires": [
            [
                "37d3ed1c61b1fc61",
                "47e134596704a0cd"
            ]
        ]
    },
    {
        "id": "8a0b159c7da9141f",
        "type": "victron-input-system",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.system/0",
        "path": "/Ac/Consumption/L3/Power",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Ac/Consumption/L3/Power",
            "type": "float",
            "name": "AC Consumption L3 (W)"
        },
        "initial": "",
        "name": "",
        "onlyChanges": false,
        "roundValues": "2",
        "x": 190,
        "y": 1300,
        "wires": [
            [
                "bdc6e9c5650addcd",
                "790d90e41bf8466c"
            ]
        ]
    },
    {
        "id": "a33ac121294d2650",
        "type": "victron-input-system",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.system/0",
        "path": "/Ac/Consumption/L1/Power",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "Venus system"
        },
        "pathObj": {
            "path": "/Ac/Consumption/L1/Power",
            "type": "float",
            "name": "AC Consumption L1 (W)"
        },
        "initial": "",
        "name": "",
        "onlyChanges": true,
        "roundValues": "2",
        "x": 190,
        "y": 1180,
        "wires": [
            [
                "dfa8f5ab8973875e"
            ]
        ]
    },
    {
        "id": "dcbe6341ff5f5acc",
        "type": "victron-input-custom",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.pvinverter/32",
        "path": "/Ac/Power",
        "serviceObj": {
            "service": "com.victronenergy.pvinverter/32",
            "name": "Enphase (32)"
        },
        "pathObj": {
            "path": "/Ac/Power",
            "name": "/Ac/Power",
            "type": "number",
            "value": 246.4
        },
        "name": "",
        "onlyChanges": true,
        "roundValues": "0",
        "x": 150,
        "y": 1100,
        "wires": [
            [
                "f40c4095d0782b59"
            ]
        ]
    },
    {
        "id": "f40c4095d0782b59",
        "type": "change",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "solar_power",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 560,
        "y": 1100,
        "wires": [
            [
                "dcb30dda3b03d365"
            ]
        ]
    },
    {
        "id": "dcb30dda3b03d365",
        "type": "function",
        "z": "2bf3db9bfca4f392",
        "name": "function 6",
        "func": "\nlet solar_power = flow.get(\"solar_power\");\nlet L_one_power = flow.get(\"L1_power\");\n\n\n\nlet L_one_temp_setpoint = L_one_power - solar_power;\nif (L_one_temp_setpoint < 0) {\n    L_one_temp_setpoint = 0;\n}\n\nlet L_one_setpoint = L_one_temp_setpoint * -1;\nlet L_two_setpoint = flow.get(\"L2_power\") * -1;\nlet L_three_setpoint = flow.get(\"L3_power\") * -1;\n\nlet greenmode = flow.get(\"strategy\");\n\nlet ess_mode = flow.get(\"ess_mode\");\nif (greenmode == 1 && ess_mode != 2) {\n    msg.payload = L_one_setpoint\n    return msg;\n}",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 800,
        "y": 1160,
        "wires": [
            [
                "8a20a6065fddec27"
            ]
        ]
    },
    {
        "id": "dfa8f5ab8973875e",
        "type": "change",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "L1_power",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 550,
        "y": 1180,
        "wires": [
            [
                "dcb30dda3b03d365"
            ]
        ]
    },
    {
        "id": "37d3ed1c61b1fc61",
        "type": "change",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "L2_power",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 550,
        "y": 1260,
        "wires": [
            []
        ]
    },
    {
        "id": "bdc6e9c5650addcd",
        "type": "change",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "L3_power",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 550,
        "y": 1320,
        "wires": [
            []
        ]
    },
    {
        "id": "8a20a6065fddec27",
        "type": "victron-output-custom",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.vebus/276",
        "path": "/Hub4/L1/AcPowerSetpoint",
        "serviceObj": {
            "service": "com.victronenergy.vebus/276",
            "name": "MultiPlus-II 48/5000/70-50 (276)"
        },
        "pathObj": {
            "path": "/Hub4/L1/AcPowerSetpoint",
            "name": "/Hub4/L1/AcPowerSetpoint",
            "type": "number",
            "value": -195
        },
        "name": "",
        "onlyChanges": false,
        "x": 1120,
        "y": 1160,
        "wires": []
    },
    {
        "id": "a711174df6e88df4",
        "type": "victron-output-custom",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.vebus/276",
        "path": "/Hub4/L2/AcPowerSetpoint",
        "serviceObj": {
            "service": "com.victronenergy.vebus/276",
            "name": "MultiPlus-II 48/5000/70-50 (276)"
        },
        "pathObj": {
            "path": "/Hub4/L2/AcPowerSetpoint",
            "name": "/Hub4/L2/AcPowerSetpoint",
            "type": "number",
            "value": 13
        },
        "name": "",
        "onlyChanges": false,
        "x": 1120,
        "y": 1220,
        "wires": []
    },
    {
        "id": "eacb5857578e8195",
        "type": "victron-output-custom",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.vebus/276",
        "path": "/Hub4/L3/AcPowerSetpoint",
        "serviceObj": {
            "service": "com.victronenergy.vebus/276",
            "name": "MultiPlus-II 48/5000/70-50 (276)"
        },
        "pathObj": {
            "path": "/Hub4/L3/AcPowerSetpoint",
            "name": "/Hub4/L3/AcPowerSetpoint",
            "type": "number",
            "value": 12
        },
        "name": "",
        "onlyChanges": false,
        "x": 1120,
        "y": 1280,
        "wires": []
    },
    {
        "id": "6ac8141bd3d1bd60",
        "type": "victron-output-ess",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/BatteryLife/State",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/BatteryLife/State",
            "type": "enum",
            "name": "ESS state",
            "enum": {
                "1": "BatteryLife enabled (GUI controlled)",
                "2": "Optimized Mode /w BatteryLife: self consumption",
                "3": "Optimized Mode /w BatteryLife: self consumption, SoC exceeds 85%",
                "4": "Optimized Mode /w BatteryLife: self consumption, SoC at 100%",
                "5": "Optimized Mode /w BatteryLife: SoC below dynamic SoC limit",
                "6": "Optimized Mode /w BatteryLife: SoC has been below SoC limit for more than 24 hours. Charging the battery (5A)",
                "7": "Optimized Mode /w BatteryLife: Inverter/Charger is in sustain mode",
                "8": "Optimized Mode /w BatteryLife: recharging, SoC dropped by 5% or more below the minimum SoC",
                "9": "'Keep batteries charged' mode is enabled",
                "10": "Optimized mode w/o BatteryLife: self consumption, SoC at or above minimum SoC",
                "11": "Optimized mode w/o BatteryLife: self consumption, SoC is below minimum SoC",
                "12": "Optimized mode w/o BatteryLife: recharging, SoC dropped by 5% or more below minimum SoC"
            }
        },
        "initial": 10,
        "name": "",
        "onlyChanges": false,
        "x": 1240,
        "y": 1000,
        "wires": []
    },
    {
        "id": "bb6db4c2b8027ee3",
        "type": "rbe",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "func": "rbe",
        "gap": "",
        "start": "",
        "inout": "out",
        "septopics": false,
        "property": "payload",
        "topi": "topic",
        "x": 690,
        "y": 1020,
        "wires": [
            [
                "26b1d769e6f1f9b6"
            ]
        ]
    },
    {
        "id": "767c13606922e1bf",
        "type": "victron-output-ess",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/Hub4Mode",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/Hub4Mode",
            "type": "enum",
            "name": "ESS mode",
            "enum": {
                "1": "Optimized mode or 'keep batteries charged' and phase compensation enabled",
                "2": "Optimized mode or 'keep batteries charged' and phase compensation disabled",
                "3": "External control"
            },
            "mode": "both"
        },
        "name": "",
        "onlyChanges": false,
        "x": 1240,
        "y": 1060,
        "wires": []
    },
    {
        "id": "3ba0e04efaf5f454",
        "type": "function",
        "z": "2bf3db9bfca4f392",
        "name": "function 8",
        "func": "let battery_soc = flow.get(\"battery_soc\");\nlet strategy = flow.get(\"strategy\");\n\n\nconst currentDateTime = new Date()\ncurrentDateTime.setMinutes(0, 0, 0)\n\nlet currentHour = currentDateTime.getHours();\n\nif (strategy == 1 && currentHour >= 6 && currentHour <= 20 && battery_soc >= 30.0) {\n    return [\n        {\n            payload: 10\n        },\n        {\n            payload: 3\n        }\n    ];    \n    \n} else {\n        return [\n        {\n            payload: 10\n        },\n        {\n            payload: 2\n        }\n    ];\n}\n",
        "outputs": 2,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1000,
        "y": 1020,
        "wires": [
            [
                "6ac8141bd3d1bd60"
            ],
            [
                "767c13606922e1bf",
                "fea576ef4537d2f9"
            ]
        ]
    },
    {
        "id": "47e134596704a0cd",
        "type": "function",
        "z": "2bf3db9bfca4f392",
        "name": "function 10",
        "func": "let greenmode = flow.get(\"strategy\");\n\nlet ess_mode = flow.get(\"ess_mode\");\nif (greenmode == 1 && ess_mode != 2) {\n    if( msg.payload > 75) {\n        msg.payload = msg.payload * -1\n    } else {\n        msg.payload = 0\n    }\n\nreturn msg;\n\n}",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 810,
        "y": 1220,
        "wires": [
            [
                "a711174df6e88df4"
            ]
        ]
    },
    {
        "id": "790d90e41bf8466c",
        "type": "function",
        "z": "2bf3db9bfca4f392",
        "name": "function 11",
        "func": "let greenmode = flow.get(\"strategy\");\n\nlet ess_mode = flow.get(\"ess_mode\");\nif (greenmode == 1 && ess_mode != 2) {\n    if( msg.payload > 75) {\n        msg.payload = msg.payload * -1\n    } else {\n        msg.payload = 0\n    }\n\nreturn msg;\n\n}",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 810,
        "y": 1280,
        "wires": [
            [
                "eacb5857578e8195"
            ]
        ]
    },
    {
        "id": "a2b21977060e52d0",
        "type": "inject",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1",
        "payloadType": "num",
        "x": 830,
        "y": 1080,
        "wires": [
            [
                "3ba0e04efaf5f454"
            ]
        ]
    },
    {
        "id": "26b1d769e6f1f9b6",
        "type": "delay",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "pauseType": "delay",
        "timeout": "5",
        "timeoutUnits": "seconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "allowrate": false,
        "outputs": 1,
        "x": 820,
        "y": 1020,
        "wires": [
            [
                "3ba0e04efaf5f454"
            ]
        ]
    },
    {
        "id": "fea576ef4537d2f9",
        "type": "change",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "ess_mode",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 1230,
        "y": 1120,
        "wires": [
            []
        ]
    },
    {
        "id": "53352003b47bcaf8",
        "type": "victron-input-custom",
        "z": "2bf3db9bfca4f392",
        "service": "com.victronenergy.system/0",
        "path": "/Dc/Battery/Soc",
        "serviceObj": {
            "service": "com.victronenergy.system/0",
            "name": "com.victronenergy.system (0)"
        },
        "pathObj": {
            "path": "/Dc/Battery/Soc",
            "name": "/Dc/Battery/Soc",
            "type": "number",
            "value": 32.290000915527344
        },
        "name": "",
        "onlyChanges": true,
        "roundValues": "1",
        "x": 220,
        "y": 1020,
        "wires": [
            [
                "e0ca6ac14c679269"
            ]
        ]
    },
    {
        "id": "e0ca6ac14c679269",
        "type": "change",
        "z": "2bf3db9bfca4f392",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "battery_soc",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 510,
        "y": 1020,
        "wires": [
            [
                "bb6db4c2b8027ee3"
            ]
        ]
    },
    {
        "id": "7398e7c3a7bd7f45",
        "type": "change",
        "z": "2bf3db9bfca4f392",
        "g": "dd46443f62f6ce6a",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "strategy",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 480,
        "y": 640,
        "wires": [
            [
                "bb6db4c2b8027ee3"
            ]
        ]
    }
]

the whole logic behind ess is weird. I got it to work in a mode 1&2 by removing the external grid sensor (mqtt based) and setting “grid metering” to inverter/charger.


In this mode ESS do more or less what I want it to do, but I need to bear with the built in smoothing algorithm which I am not fond of.

As soon as I switch it to mode 3, everything stops working for some reason.

I really want a simple thing, to say discharge at 2000w with smoothing done by me if needed.

This works on mine

[
    {
        "id": "6b4e02d041c66f30",
        "type": "tab",
        "label": "Manual Automation",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "cd1e6f25932e95b7",
        "type": "victron-input-ess",
        "z": "6b4e02d041c66f30",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/AcPowerSetPoint",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "ESS System Settings",
            "paths": [
                {
                    "path": "/Settings/CGwacs/AcPowerSetPoint",
                    "type": "integer",
                    "name": "Grid set-point (W)"
                },
                {
                    "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit",
                    "type": "integer",
                    "name": "Minimum Discharge SOC (%)"
                },
                {
                    "path": "/Settings/CGwacs/BatteryLife/SocLimit",
                    "type": "integer",
                    "name": "Active SOC limit (%)"
                },
                {
                    "path": "/Settings/CGwacs/BatteryLife/State",
                    "type": "enum",
                    "name": "ESS state",
                    "enum": {
                        "1": "BatteryLife enabled (GUI controlled)",
                        "2": "Optimized Mode /w BatteryLife: self consumption",
                        "3": "Optimized Mode /w BatteryLife: self consumption, SoC exceeds 85%",
                        "4": "Optimized Mode /w BatteryLife: self consumption, SoC at 100%",
                        "5": "Optimized Mode /w BatteryLife: SoC below dynamic SoC limit",
                        "6": "Optimized Mode /w BatteryLife: SoC has been below SoC limit for more than 24 hours. Charging the battery (5A)",
                        "7": "Optimized Mode /w BatteryLife: Inverter/Charger is in sustain mode",
                        "8": "Optimized Mode /w BatteryLife: recharging, SoC dropped by 5% or more below the minimum SoC",
                        "9": "'Keep batteries charged' mode is enabled",
                        "10": "Optimized mode w/o BatteryLife: self consumption, SoC at or above minimum SoC",
                        "11": "Optimized mode w/o BatteryLife: self consumption, SoC is below minimum SoC",
                        "12": "Optimized mode w/o BatteryLife: recharging, SoC dropped by 5% or more below minimum SoC"
                    }
                },
                {
                    "path": "/Settings/CGwacs/Hub4Mode",
                    "type": "enum",
                    "name": "ESS mode",
                    "enum": {
                        "1": "Optimized mode or 'keep batteries charged' and phase compensation enabled",
                        "2": "Optimized mode or 'keep batteries charged' and phase compensation disabled",
                        "3": "External control"
                    }
                },
                {
                    "path": "/Settings/CGwacs/MaxDischargePower",
                    "type": "integer",
                    "name": "Max inverter power (W)"
                },
                {
                    "path": "/Settings/CGwacs/OvervoltageFeedIn",
                    "type": "enum",
                    "name": "Feed excess DC-coupled PV into grid",
                    "enum": {
                        "0": "Don’t feed excess DC-tied PV into grid",
                        "1": "Feed excess DC-tied PV into the grid"
                    }
                },
                {
                    "path": "/Settings/CGwacs/PreventFeedback",
                    "type": "enum",
                    "name": "Don’t feed excess AC-coupled PV into grid",
                    "enum": {
                        "0": "Feed excess AC-tied PV into grid",
                        "1": "Don’t feed excess AC-tied PV into the grid"
                    }
                },
                {
                    "path": "/Settings/SystemSetup/MaxChargeCurrent",
                    "type": "float",
                    "name": "DVCC Charge current limit (A)"
                },
                {
                    "path": "/Settings/SystemSetup/MaxChargeVoltage",
                    "type": "float",
                    "name": "DVCC Maximum charge voltage (V)"
                }
            ]
        },
        "pathObj": {
            "path": "/Settings/CGwacs/AcPowerSetPoint",
            "type": "integer",
            "name": "Grid set-point (W)"
        },
        "name": "",
        "x": 220,
        "y": 40,
        "wires": [
            [
                "7adf7b783a55ef09"
            ]
        ]
    },
    {
        "id": "7adf7b783a55ef09",
        "type": "debug",
        "z": "6b4e02d041c66f30",
        "name": "Grid Set Point",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 640,
        "y": 40,
        "wires": []
    },
    {
        "id": "f18a38e033a1e162",
        "type": "victron-output-ess",
        "z": "6b4e02d041c66f30",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/AcPowerSetPoint",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "ESS System Settings",
            "paths": [
                {
                    "path": "/Settings/CGwacs/AcPowerSetPoint",
                    "type": "integer",
                    "name": "Grid set-point (W)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit",
                    "type": "integer",
                    "name": "Minimum Discharge SOC (%)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/BatteryLife/State",
                    "type": "enum",
                    "name": "ESS state",
                    "enum": {
                        "1": "BatteryLife enabled (GUI controlled)",
                        "2": "Optimized Mode /w BatteryLife: self consumption",
                        "3": "Optimized Mode /w BatteryLife: self consumption, SoC exceeds 85%",
                        "4": "Optimized Mode /w BatteryLife: self consumption, SoC at 100%",
                        "5": "Optimized Mode /w BatteryLife: SoC below dynamic SoC limit",
                        "6": "Optimized Mode /w BatteryLife: SoC has been below SoC limit for more than 24 hours. Charging the battery (5A)",
                        "7": "Optimized Mode /w BatteryLife: Inverter/Charger is in sustain mode",
                        "8": "Optimized Mode /w BatteryLife: recharging, SoC dropped by 5% or more below the minimum SoC",
                        "9": "'Keep batteries charged' mode is enabled",
                        "10": "Optimized mode w/o BatteryLife: self consumption, SoC at or above minimum SoC",
                        "11": "Optimized mode w/o BatteryLife: self consumption, SoC is below minimum SoC",
                        "12": "Optimized mode w/o BatteryLife: recharging, SoC dropped by 5% or more below minimum SoC"
                    },
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/Hub4Mode",
                    "type": "enum",
                    "name": "ESS mode",
                    "enum": {
                        "1": "Optimized mode or 'keep batteries charged' and phase compensation enabled",
                        "2": "Optimized mode or 'keep batteries charged' and phase compensation disabled",
                        "3": "External control"
                    },
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/MaxDischargePower",
                    "type": "integer",
                    "name": "Max inverter power (W)",
                    "writable": true
                },
                {
                    "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
                },
                {
                    "path": "/Settings/CGwacs/OvervoltageFeedIn",
                    "type": "enum",
                    "name": "Feed excess DC-coupled PV into grid",
                    "enum": {
                        "0": "Don’t feed excess DC-tied PV into grid",
                        "1": "Feed excess DC-tied PV into the grid"
                    },
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/PreventFeedback",
                    "type": "enum",
                    "name": "Don’t feed excess AC-coupled PV into grid",
                    "enum": {
                        "0": "Feed excess AC-tied PV into grid",
                        "1": "Don’t feed excess AC-tied PV into the grid"
                    },
                    "writable": true
                },
                {
                    "path": "/Settings/SystemSetup/MaxChargeCurrent",
                    "type": "float",
                    "name": "Charge current limit (A)",
                    "writable": true
                }
            ]
        },
        "pathObj": {
            "path": "/Settings/CGwacs/AcPowerSetPoint",
            "type": "integer",
            "name": "Grid set-point (W)",
            "writable": true
        },
        "initial": "",
        "name": "",
        "x": 740,
        "y": 280,
        "wires": []
    },
    {
        "id": "1489d71452747ec3",
        "type": "inject",
        "z": "6b4e02d041c66f30",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "-50",
        "payloadType": "num",
        "x": 130,
        "y": 160,
        "wires": [
            [
                "f18a38e033a1e162",
                "f34e432c20f61859"
            ]
        ]
    },
    {
        "id": "375b5bfef63dd17d",
        "type": "inject",
        "z": "6b4e02d041c66f30",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "-4400",
        "payloadType": "num",
        "x": 130,
        "y": 200,
        "wires": [
            [
                "f18a38e033a1e162",
                "f557274226ff5473"
            ]
        ]
    },
    {
        "id": "f58b349991e80c93",
        "type": "victron-input-battery",
        "z": "6b4e02d041c66f30",
        "service": "com.victronenergy.battery/512",
        "path": "/Soc",
        "serviceObj": {
            "service": "com.victronenergy.battery/512",
            "name": "PYLON"
        },
        "pathObj": {
            "path": "/Soc",
            "type": "float",
            "name": "State of charge (%)"
        },
        "initial": "",
        "name": "Battery %",
        "onlyChanges": false,
        "x": 120,
        "y": 280,
        "wires": [
            [
                "8fcb29a66e84f180",
                "1e4d8c579beda73c",
                "819de1068c1d245e"
            ]
        ]
    },
    {
        "id": "8fcb29a66e84f180",
        "type": "debug",
        "z": "6b4e02d041c66f30",
        "name": "Battery Level %",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 320,
        "y": 320,
        "wires": []
    },
    {
        "id": "1e4d8c579beda73c",
        "type": "switch",
        "z": "6b4e02d041c66f30",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "gt",
                "v": "98",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 290,
        "y": 280,
        "wires": [
            [
                "2df7ea9fd0f4f030",
                "f34e432c20f61859"
            ]
        ]
    },
    {
        "id": "2df7ea9fd0f4f030",
        "type": "change",
        "z": "6b4e02d041c66f30",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "-50",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 460,
        "y": 280,
        "wires": [
            [
                "f18a38e033a1e162"
            ]
        ]
    },
    {
        "id": "761a644387a317c8",
        "type": "debug",
        "z": "6b4e02d041c66f30",
        "name": "Max Feed In W",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 640,
        "y": 100,
        "wires": []
    },
    {
        "id": "d856a0ad04625f54",
        "type": "victron-input-settings",
        "z": "6b4e02d041c66f30",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/MaxFeedInPower",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings",
            "paths": [
                {
                    "path": "/Settings/CGwacs/BatteryLife/SocLimit",
                    "type": "float",
                    "name": "ESS active SoC (read only) (%)"
                },
                {
                    "path": "/Settings/CGwacs/MaxChargePercentage",
                    "type": "float",
                    "name": "ESS max charge current (fractional) (%)"
                },
                {
                    "path": "/Settings/CGwacs/MaxDischargePercentage",
                    "type": "float",
                    "name": "ESS max discharge current (fractional) (%)"
                },
                {
                    "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>"
                }
            ]
        },
        "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": "",
        "x": 290,
        "y": 100,
        "wires": [
            [
                "761a644387a317c8"
            ]
        ]
    },
    {
        "id": "82389e9a8c4e98bc",
        "type": "victron-output-settings",
        "z": "6b4e02d041c66f30",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/MaxFeedInPower",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "com.victronenergy.settings",
            "paths": [
                {
                    "path": "/Settings/CGwacs/AcPowerSetPoint",
                    "type": "float",
                    "name": "ESS control loop setpoint (W)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit",
                    "type": "float",
                    "name": "ESS Minimum SoC (unless grid fails) (%)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/BatteryLife/State",
                    "type": "enum",
                    "name": "ESS BatteryLife state",
                    "enum": {
                        "0": "Unused, BL disabled",
                        "1": "Restarting",
                        "2": "Self-consumption",
                        "3": "Self-consumption",
                        "4": "Self-consumption",
                        "5": "Discharge disabled",
                        "6": "Force charge",
                        "7": "Sustain",
                        "8": "Low Soc Recharge",
                        "9": "Keep batteries charged",
                        "10": "BL Disabled",
                        "11": "BL Disabled (Low SoC)",
                        "12": "BL Disabled (Low SOC recharge)"
                    },
                    "writable": true
                },
                {
                    "path": "/Settings/SystemSetup/MaxChargeCurrent",
                    "type": "float",
                    "name": "DVCC system max charge current (A DC)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/Hub4Mode",
                    "type": "enum",
                    "name": "ESS Mode",
                    "enum": {
                        "1": "ESS with Phase Compensation",
                        "2": "ESS without phase compensation",
                        "3": "Disabled/External Control"
                    },
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/MaxChargePercentage",
                    "type": "float",
                    "name": "ESS max charge current (fractional) (%)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/MaxDischargePercentage",
                    "type": "float",
                    "name": "ESS max discharge current (fractional) (%)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/MaxDischargePower",
                    "type": "float",
                    "name": "ESS max discharge current (W)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/MaxFeedInPower",
                    "type": "float",
                    "name": "Maximum System Grid Feed In (W)",
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/OvervoltageFeedIn",
                    "type": "enum",
                    "name": "Feed excess DC-coupled PV into grid",
                    "enum": {
                        "0": "Don’t feed excess DC-tied PV into grid",
                        "1": "Feed excess DC-tied PV into the grid"
                    },
                    "writable": true
                },
                {
                    "path": "/Settings/CGwacs/PreventFeedback",
                    "type": "enum",
                    "name": "AC-coupled PV - grid feed in excess",
                    "enum": {
                        "0": "Feed excess AC-tied PV into grid",
                        "1": "Don’t feed excess AC-tied PV into the grid"
                    },
                    "writable": true
                },
                {
                    "path": "/Settings/SystemSetup/MaxChargeVoltage",
                    "type": "float",
                    "name": "Limit managed battery voltage (V DC)",
                    "writable": true
                }
            ]
        },
        "pathObj": {
            "path": "/Settings/CGwacs/MaxFeedInPower",
            "type": "float",
            "name": "Maximum System Grid Feed In (W)",
            "writable": true
        },
        "name": "",
        "x": 810,
        "y": 160,
        "wires": []
    },
    {
        "id": "f34e432c20f61859",
        "type": "change",
        "z": "6b4e02d041c66f30",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "4400",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 360,
        "y": 160,
        "wires": [
            [
                "82389e9a8c4e98bc"
            ]
        ]
    },
    {
        "id": "f557274226ff5473",
        "type": "change",
        "z": "6b4e02d041c66f30",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "0",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 360,
        "y": 220,
        "wires": [
            [
                "82389e9a8c4e98bc"
            ]
        ]
    },
    {
        "id": "ae2f7baae138f963",
        "type": "victron-input-ess",
        "z": "6b4e02d041c66f30",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/BatteryLife/State",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/BatteryLife/State",
            "type": "enum",
            "name": "ESS state",
            "enum": {
                "1": "BatteryLife enabled (GUI controlled)",
                "2": "Optimized Mode /w BatteryLife: self consumption",
                "3": "Optimized Mode /w BatteryLife: self consumption, SoC exceeds 85%",
                "4": "Optimized Mode /w BatteryLife: self consumption, SoC at 100%",
                "5": "Optimized Mode /w BatteryLife: SoC below dynamic SoC limit",
                "6": "Optimized Mode /w BatteryLife: SoC has been below SoC limit for more than 24 hours. Charging the battery (5A)",
                "7": "Optimized Mode /w BatteryLife: Inverter/Charger is in sustain mode",
                "8": "Optimized Mode /w BatteryLife: recharging, SoC dropped by 5% or more below the minimum SoC",
                "9": "'Keep batteries charged' mode is enabled",
                "10": "Optimized mode w/o BatteryLife: self consumption, SoC at or above minimum SoC",
                "11": "Optimized mode w/o BatteryLife: self consumption, SoC is below minimum SoC",
                "12": "Optimized mode w/o BatteryLife: recharging, SoC dropped by 5% or more below minimum SoC"
            }
        },
        "initial": "",
        "name": "",
        "onlyChanges": false,
        "x": 150,
        "y": 480,
        "wires": [
            [
                "5049cf2b2ea08b13"
            ]
        ]
    },
    {
        "id": "bededd260cb1d89a",
        "type": "debug",
        "z": "6b4e02d041c66f30",
        "name": "Mode",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 690,
        "y": 480,
        "wires": []
    },
    {
        "id": "1a814987c2bfc525",
        "type": "comment",
        "z": "6b4e02d041c66f30",
        "name": "force charging at off peak rate",
        "info": "",
        "x": 300,
        "y": 400,
        "wires": []
    },
    {
        "id": "5049cf2b2ea08b13",
        "type": "switch",
        "z": "6b4e02d041c66f30",
        "name": "",
        "property": "payload",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "9",
                "vt": "str"
            },
            {
                "t": "eq",
                "v": "10",
                "vt": "str"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 2,
        "x": 370,
        "y": 480,
        "wires": [
            [
                "3cb78c25e4b4704b"
            ],
            [
                "74d27ac2d55d2d8c"
            ]
        ]
    },
    {
        "id": "3cb78c25e4b4704b",
        "type": "template",
        "z": "6b4e02d041c66f30",
        "name": "",
        "field": "payload",
        "fieldType": "msg",
        "format": "handlebars",
        "syntax": "mustache",
        "template": "{{payload}}=Keep batteries charged' mode is enabled",
        "output": "str",
        "x": 520,
        "y": 460,
        "wires": [
            [
                "bededd260cb1d89a"
            ]
        ]
    },
    {
        "id": "74d27ac2d55d2d8c",
        "type": "template",
        "z": "6b4e02d041c66f30",
        "name": "",
        "field": "payload",
        "fieldType": "msg",
        "format": "handlebars",
        "syntax": "mustache",
        "template": "{{payload}}=Optimized mode w/o BatteryLife: self consumption",
        "output": "str",
        "x": 520,
        "y": 520,
        "wires": [
            [
                "bededd260cb1d89a"
            ]
        ]
    },
    {
        "id": "59b3539a36f8c6a4",
        "type": "inject",
        "z": "6b4e02d041c66f30",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "-6000",
        "payloadType": "num",
        "x": 130,
        "y": 240,
        "wires": [
            [
                "f557274226ff5473",
                "f18a38e033a1e162"
            ]
        ]
    },
    {
        "id": "08a3c5a7a35aa453",
        "type": "change",
        "z": "6b4e02d041c66f30",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "battery%",
                "tot": "global"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 740,
        "y": 400,
        "wires": [
            [
                "095a11d1255dc24f"
            ]
        ]
    },
    {
        "id": "095a11d1255dc24f",
        "type": "debug",
        "z": "6b4e02d041c66f30",
        "name": "debug 27",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 900,
        "y": 400,
        "wires": []
    },
    {
        "id": "0d2c1be3463f54ad",
        "type": "inject",
        "z": "6b4e02d041c66f30",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "60",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 550,
        "y": 400,
        "wires": [
            [
                "08a3c5a7a35aa453"
            ]
        ]
    },
    {
        "id": "39965ab85ceeef80",
        "type": "inject",
        "z": "6b4e02d041c66f30",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "00 16 * * *",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "-50",
        "payloadType": "num",
        "x": 110,
        "y": 340,
        "wires": [
            [
                "f34e432c20f61859"
            ]
        ]
    },
    {
        "id": "819de1068c1d245e",
        "type": "change",
        "z": "6b4e02d041c66f30",
        "name": "Battery",
        "rules": [
            {
                "t": "set",
                "p": "battery",
                "pt": "flow",
                "to": "payload",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 480,
        "y": 340,
        "wires": [
            []
        ]
    },
    {
        "id": "f0bbb67d1053aaf6",
        "type": "debug",
        "z": "6b4e02d041c66f30",
        "name": "battery level",
        "active": true,
        "tosidebar": false,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 910,
        "y": 340,
        "wires": []
    },
    {
        "id": "b166d027cea33ce7",
        "type": "inject",
        "z": "6b4e02d041c66f30",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "60",
        "crontab": "",
        "once": true,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "battery",
        "payloadType": "flow",
        "x": 730,
        "y": 340,
        "wires": [
            [
                "f0bbb67d1053aaf6"
            ]
        ]
    },
    {
        "id": "db0a472f48afe009",
        "type": "victron-input-ess",
        "z": "6b4e02d041c66f30",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit",
            "type": "integer",
            "name": "Minimum Discharge SOC (%)"
        },
        "initial": "",
        "name": "",
        "onlyChanges": false,
        "x": 210,
        "y": 620,
        "wires": [
            [
                "0c0b8d240dca00ec"
            ]
        ]
    },
    {
        "id": "0c0b8d240dca00ec",
        "type": "debug",
        "z": "6b4e02d041c66f30",
        "name": "debug 29",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 520,
        "y": 620,
        "wires": []
    },
    {
        "id": "a9b56cce34df39b8",
        "type": "victron-output-ess",
        "z": "6b4e02d041c66f30",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/BatteryLife/MinimumSocLimit",
            "type": "integer",
            "name": "Minimum Discharge SOC (%)",
            "writable": true
        },
        "initial": "",
        "name": "",
        "onlyChanges": true,
        "x": 440,
        "y": 720,
        "wires": []
    }
]

In mode 3, how often did you push the setpoint to the inverter? If it doesn’t receive any setpoint for a minute (if I recall), it switches back to idle.

Inverter/charger metering works “instantly” if you have all your loads on the AC-out side of the multiplus and the grid on the AC-in side. (Both nobreak and ac-out2 benefit from this.) But I guess you only use the AC-in so that is probably not an option.

Your current configuration does what you’d expect from mode-3 without continuously pushing a setpoint.

Another option could be a faster energy-meter but even then you will see some smoothing.

1 Like

Yeah, only AC in due to being parallel install, so no luck there (given where the MP is it would be pretty complicated to wire it differently).

I have been trying to push a constant -500 as well via a simple 1second timestamp but no luck.

Even now for the sake of a test I set disabled my current flow and set up this one.

[
    {
        "id": "0ca1a61d9bedac39",
        "type": "tab",
        "label": "Settings",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "5a57cbce5943f783",
        "type": "victron-output-ess",
        "z": "0ca1a61d9bedac39",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/Hub4Mode",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/Hub4Mode",
            "type": "enum",
            "name": "ESS mode",
            "enum": {
                "1": "Optimized mode or 'keep batteries charged' and phase compensation enabled",
                "2": "Optimized mode or 'keep batteries charged' and phase compensation disabled",
                "3": "External control"
            },
            "mode": "both"
        },
        "name": "",
        "onlyChanges": false,
        "x": 440,
        "y": 80,
        "wires": []
    },
    {
        "id": "a202581639b82e0c",
        "type": "inject",
        "z": "0ca1a61d9bedac39",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "2",
        "payloadType": "num",
        "x": 110,
        "y": 120,
        "wires": [
            [
                "5a57cbce5943f783"
            ]
        ]
    },
    {
        "id": "032bf0e30eb3c60d",
        "type": "inject",
        "z": "0ca1a61d9bedac39",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "3",
        "payloadType": "num",
        "x": 110,
        "y": 160,
        "wires": [
            [
                "5a57cbce5943f783"
            ]
        ]
    },
    {
        "id": "df8a73f6788e419c",
        "type": "inject",
        "z": "0ca1a61d9bedac39",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1",
        "payloadType": "num",
        "x": 110,
        "y": 80,
        "wires": [
            [
                "5a57cbce5943f783"
            ]
        ]
    },
    {
        "id": "08ab32b80b2ee2cf",
        "type": "comment",
        "z": "0ca1a61d9bedac39",
        "name": "Set Ess Mode",
        "info": "",
        "x": 110,
        "y": 40,
        "wires": []
    },
    {
        "id": "d06883c13d564728",
        "type": "victron-output-ess",
        "z": "0ca1a61d9bedac39",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/AcPowerSetPoint",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/AcPowerSetPoint",
            "type": "integer",
            "name": "Grid set-point (W)",
            "mode": "both"
        },
        "name": "",
        "onlyChanges": false,
        "x": 700,
        "y": 300,
        "wires": []
    },
    {
        "id": "37e76a0af5ca119a",
        "type": "inject",
        "z": "0ca1a61d9bedac39",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "1",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 190,
        "y": 300,
        "wires": [
            [
                "222aac501742f6b3"
            ]
        ]
    },
    {
        "id": "222aac501742f6b3",
        "type": "change",
        "z": "0ca1a61d9bedac39",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "-500",
                "tot": "num"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 400,
        "y": 300,
        "wires": [
            [
                "d06883c13d564728"
            ]
        ]
    }
]

If the system is in the mode 1 or 2, it works. Battery discharges and everything is fine.

As soon as I switch to the mode 3, battery is idle and everything is ignored :expressionless:

@Spazpeker thanks, I will have a go with your code and see where it takes me.

Edit: @Spazpeker could you please edit your post and paste the code between the code blocks (3 ticks), otherewise the board breaks json and it cannot be imported.

flows.txt (31.2 KB)


flow as a text file

I use this to force my system to export before battery fully charged

-50w is nearly zero on my system, i do have 2x MP2 in parallel

1 Like

You should try using the custom control /Hub4/L1/AcPowerSetpoint instead of Venus settings Grid set-point. /Settings/CGwacs/AcPowerSetPoint .


(Currently my system is in mode-2)

David solution didnt work (same results as my tries out).

@snowwie :folded_hands: that worked. I swear I tried it in the past but probably due to some combination with external sensor it was not working as expected. Thanks you!

1 Like

Then you should get a proper Grid-Meter and let ESS work in a regular, self-managed mode. 10 Second Update interval is just to slow as you noted.

You are trying to work around a non-existing issue, cause even if you would manage to sort that, and your system would now show a smooth grid value - it’ll just be smooth based on a 10 second slow value, the actual grid will do something totally different and at the end of the month, you’ll for sure get a way higher energy bill than expected.

Grid Meters are added, because they provide superior accuracy than the Multiplus own measurement - but in case of a 10 second meter you’d be better off to stick with the multiplus measurement.

The reason is, you put it in Mode 3. In Mode 3, nothing happens automatically anymore, the builtin control-loop is stopped - you have to provide the control-loop.

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