Stop PV production on a Multi RS with dbus service/path "com.victronenergy.multi/Pv/Disable"

I am looking for a way to stop the PV production with my 3 Multi RS units when the dynamic energy prices are negative.

When I SSH into the Cerbo and started dbus-spy, I found: “com.victronenergy.multi.socketcan_can0_vi0_uc511692/Pv/Disable”.
I can edit the value from 0 to 1 directly in dbus-spy. And the PV production in de Multi RS stops at once. So, that should be easy to use for my goal. But when I try to change this same value in Node-Red the value does not change. I can monitor it in dbus-spy, and it keeps the same value.
I made a “Custom Control Node” with an input that sends:
msg.path = “com.victronenergy.multi.socketcan_can0_vi0_uc511692/Pv/Disable”
msg.payload = 1
to the Custom Control Node. But the value does not change when I check it in dbus-spy and the status under the Custom Control Node goes to “Setting value…”. And the stays the same for ever.

[
    {
        "id": "657edfdfe073d07f",
        "type": "inject",
        "z": "d75287f22d779c0c",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "path",
                "v": "com.victronenergy.multi.socketcan_can0_vi0_uc511692/Pv/Disable",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "0",
        "payloadType": "num",
        "x": 410,
        "y": 480,
        "wires": [
            [
                "6ee60acd81ebced1"
            ]
        ]
    },
    {
        "id": "dfab33abd2a1047b",
        "type": "inject",
        "z": "d75287f22d779c0c",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "path",
                "v": "com.victronenergy.multi.socketcan_can0_vi0_uc511692/Pv/Disable",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1",
        "payloadType": "num",
        "x": 410,
        "y": 540,
        "wires": [
            [
                "6ee60acd81ebced1"
            ]
        ]
    },
    {
        "id": "2335433a354f062a",
        "type": "victron-output-custom",
        "z": "d75287f22d779c0c",
        "service": "com.victronenergy.multi",
        "path": "/Pv/1/V",
        "serviceObj": {
            "service": "com.victronenergy.multi",
            "name": "com.victronenergy.multi"
        },
        "pathObj": {
            "path": "/Pv/1/V",
            "name": "/Pv/1/V",
            "type": "number",
            "value": 18.649999618530273
        },
        "name": "PV uitschakelen",
        "onlyChanges": false,
        "roundValues": "no",
        "rateLimit": 0,
        "conditionalMode": false,
        "condition1Operator": ">",
        "condition2Enabled": false,
        "condition2Service": "",
        "condition2Path": "",
        "condition2Operator": ">",
        "logicOperator": "AND",
        "outputTrue": "true",
        "outputFalse": "false",
        "outputOnChange": false,
        "debounce": 2000,
        "x": 740,
        "y": 540,
        "wires": []
    },
    {
        "id": "eeb496f585379e87",
        "type": "debug",
        "z": "d75287f22d779c0c",
        "name": "debug 19",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 720,
        "y": 480,
        "wires": []
    },
    {
        "id": "6ee60acd81ebced1",
        "type": "junction",
        "z": "d75287f22d779c0c",
        "x": 520,
        "y": 520,
        "wires": [
            [
                "2335433a354f062a",
                "eeb496f585379e87"
            ]
        ]
    },
    {
        "id": "a2cfe0ac22db711e",
        "type": "global-config",
        "env": [],
        "modules": {
            "@victronenergy/node-red-contrib-victron": "1.7.8"
        }
    }
]

I noticed that the names of the services in the dropdown-list in the “Custom Control Node” are shorter. For instance: com.victronenergy.multi. I also tried to use that, without the “socketcan_can0_Vi…”. But, this gives the same result.

What am I doing wrong?

That doesn’t appear to be a valid path.

Did you install socketcan? Didn’t think it was there by default.
Valid paths can be found here, see multi section.

com.victronenergy.multi/Pv/Disable

In a custom control node in NodeRed I have 3 settings.
Custom is a dropdown menu → one of your MultiRS units.

Measurement is a dropdown menu → /Pv/Disable

Name → whatever you want…

Send a number 1 to this node and your PV will be disabled, send a 0 to enable again…
Do not change the msg.path in the inject nodes! (as you did in your example flow)

This is a relative new path, so might not exist on each system (yet). Are you sure you are writing the number 1 and 0 instead of a string?


Pv/Disable is not in the list.
That is why I try to change the path in an input node:

And yes, @dfaber , I am sending numbers.

Can you show your options for the top dropdown (where it currently says ‘com.victronenergy.multi’)?

Pick the RS L1 48/6000/100 HQ250…
or one of the other two RS’es
or perhaps even RS system (0) (0)

Those should show the /Pv/Disable you are looking for…

Yes. Thank you @gvs . That works!

[
    {
        "id": "988fcc7c2e95e5c9",
        "type": "change",
        "z": "d75287f22d779c0c",
        "name": "Prijs wel of niet negatief",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "PrijsNuNegatief",
                "tot": "global"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 370,
        "y": 600,
        "wires": [
            [
                "d9d5f29ae45d8f4d",
                "55056396f204ba20"
            ]
        ]
    },
    {
        "id": "bf891ce08d92fe03",
        "type": "inject",
        "z": "d75287f22d779c0c",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "60",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 150,
        "y": 600,
        "wires": [
            [
                "988fcc7c2e95e5c9"
            ]
        ]
    },
    {
        "id": "d9d5f29ae45d8f4d",
        "type": "function",
        "z": "d75287f22d779c0c",
        "name": "MPPT uit als prijs negatief",
        "func": "var PrijsNuNegatief = msg.payload;\nvar PV_Stoppen = 0;\nvar GeenNetstroom = global.get(\"victronenergy.acsystem._0.Alarms.GridLost\");\n\n\nlet fill = 'green';\nlet text = 'Nee, Prijs nu niet negatief';\nif (GeenNetstrooom == 1){\n    text = 'Geen netstroom beschikbaar';\n}\n\nif ((PrijsNuNegatief == 1) && (GeenNetstroom == 0)){\n    PV_Stoppen = 1\n    fill = 'red';\n    text = 'Ja, prijs is negatief en netstroom beschikbaar';\n}\n\nglobal.set(\"MPPT_Uitgeschakeld\",PV_Stoppen);\nnode.status({fill, shape: 'dot', text});\n\nmsg.payload = PV_Stoppen;\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 650,
        "y": 600,
        "wires": [
            [
                "771d11f590f2f49f",
                "6ee60acd81ebced1"
            ]
        ]
    },
    {
        "id": "771d11f590f2f49f",
        "type": "debug",
        "z": "d75287f22d779c0c",
        "name": "debug 397",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": true,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "payload",
        "statusType": "auto",
        "x": 930,
        "y": 620,
        "wires": []
    },
    {
        "id": "55056396f204ba20",
        "type": "function",
        "z": "d75287f22d779c0c",
        "name": "Teruglevering uit als prijs negatief",
        "func": "var PrijsNuNegatief = msg.payload;\nvar Max_Feed_In = 17000;\n\n\nlet fill = 'green';\nlet text = 'Nee, Prijs nu niet negatief';\n\nif (PrijsNuNegatief){\n    Max_Feed_In = 0\n    fill = 'red';\n    text = 'Ja, prijs is negatief';\n}\n\nglobal.set(\"MPPT_Uitgeschakeld\",PrijsNuNegatief);\nnode.status({fill, shape: 'dot', text});\n\nmsg.payload = Max_Feed_In;\n\nreturn msg;",
        "outputs": 1,
        "timeout": 0,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 680,
        "y": 660,
        "wires": [
            [
                "5033704a2d86f729"
            ]
        ]
    },
    {
        "id": "5033704a2d86f729",
        "type": "victron-output-settings",
        "z": "d75287f22d779c0c",
        "service": "com.victronenergy.settings",
        "path": "/Settings/CGwacs/MaxFeedInPower",
        "serviceObj": {
            "service": "com.victronenergy.settings",
            "name": "Venus settings",
            "communityTag": "settings"
        },
        "pathObj": {
            "path": "/Settings/CGwacs/MaxFeedInPower",
            "type": "integer",
            "name": "Maximum System Grid Feed In (W)",
            "remarks": "<ul><li>-1: No limit</li><li> &gt;=0: limited system feed-in</li></ul><p>Applies to DC-coupled and AC-coupled feed-in.</p>",
            "mode": "both"
        },
        "name": "",
        "onlyChanges": false,
        "roundValues": "no",
        "rateLimit": 0,
        "conditionalMode": false,
        "condition1Operator": ">",
        "condition2Enabled": false,
        "condition2Service": "",
        "condition2Path": "",
        "condition2Operator": ">",
        "logicOperator": "AND",
        "outputTrue": "true",
        "outputFalse": "false",
        "outputOnChange": false,
        "debounce": 2000,
        "x": 1250,
        "y": 660,
        "wires": []
    },
    {
        "id": "657edfdfe073d07f",
        "type": "inject",
        "z": "d75287f22d779c0c",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "0",
        "payloadType": "num",
        "x": 610,
        "y": 480,
        "wires": [
            [
                "6ee60acd81ebced1"
            ]
        ]
    },
    {
        "id": "dfab33abd2a1047b",
        "type": "inject",
        "z": "d75287f22d779c0c",
        "name": "",
        "props": [
            {
                "p": "payload"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "1",
        "payloadType": "num",
        "x": 610,
        "y": 540,
        "wires": [
            [
                "6ee60acd81ebced1"
            ]
        ]
    },
    {
        "id": "2335433a354f062a",
        "type": "victron-output-custom",
        "z": "d75287f22d779c0c",
        "service": "com.victronenergy.multi/2",
        "path": "/Pv/Disable",
        "serviceObj": {
            "service": "com.victronenergy.multi/2",
            "name": "RS L1 48/6000/100 HQ25014Z9KY (2)"
        },
        "pathObj": {
            "path": "/Pv/Disable",
            "name": "/Pv/Disable",
            "type": "number",
            "value": 0
        },
        "name": "PV L1 uitschakelen",
        "onlyChanges": false,
        "roundValues": "no",
        "rateLimit": 0,
        "conditionalMode": false,
        "condition1Operator": ">",
        "condition2Enabled": false,
        "condition2Service": "",
        "condition2Path": "",
        "condition2Operator": ">",
        "logicOperator": "AND",
        "outputTrue": "true",
        "outputFalse": "false",
        "outputOnChange": false,
        "debounce": 2000,
        "x": 1150,
        "y": 460,
        "wires": []
    },
    {
        "id": "64fdec38be5efb47",
        "type": "victron-output-custom",
        "z": "d75287f22d779c0c",
        "service": "com.victronenergy.multi/1",
        "path": "/Pv/Disable",
        "serviceObj": {
            "service": "com.victronenergy.multi/1",
            "name": "RS L2 48/6000/100 HQ2418EED9Q (1)"
        },
        "pathObj": {
            "path": "/Pv/Disable",
            "name": "/Pv/Disable",
            "type": "number",
            "value": 0
        },
        "name": "PV L2 uitschakelen",
        "onlyChanges": false,
        "roundValues": "no",
        "rateLimit": 0,
        "conditionalMode": false,
        "condition1Operator": ">",
        "condition2Enabled": false,
        "condition2Service": "",
        "condition2Path": "",
        "condition2Operator": ">",
        "logicOperator": "AND",
        "outputTrue": "true",
        "outputFalse": "false",
        "outputOnChange": false,
        "debounce": 2000,
        "x": 1150,
        "y": 520,
        "wires": []
    },
    {
        "id": "612a3952f35caeff",
        "type": "victron-output-custom",
        "z": "d75287f22d779c0c",
        "service": "com.victronenergy.multi/0",
        "path": "/Pv/Disable",
        "serviceObj": {
            "service": "com.victronenergy.multi/0",
            "name": "RS L3 48/6000/100 HQ2501GUJXA (0)"
        },
        "pathObj": {
            "path": "/Pv/Disable",
            "name": "/Pv/Disable",
            "type": "number",
            "value": 0
        },
        "name": "PV L3 uitschakelen",
        "onlyChanges": false,
        "roundValues": "no",
        "rateLimit": 0,
        "conditionalMode": false,
        "condition1Operator": ">",
        "condition2Enabled": false,
        "condition2Service": "",
        "condition2Path": "",
        "condition2Operator": ">",
        "logicOperator": "AND",
        "outputTrue": "true",
        "outputFalse": "false",
        "outputOnChange": false,
        "debounce": 2000,
        "x": 1150,
        "y": 580,
        "wires": []
    },
    {
        "id": "6ee60acd81ebced1",
        "type": "junction",
        "z": "d75287f22d779c0c",
        "x": 880,
        "y": 500,
        "wires": [
            [
                "2335433a354f062a",
                "64fdec38be5efb47",
                "612a3952f35caeff"
            ]
        ]
    },
    {
        "id": "3c5430c37799198a",
        "type": "global-config",
        "env": [],
        "modules": {
            "@victronenergy/node-red-contrib-victron": "1.7.8"
        }
    }
]

Do note that the Multi RS running DESS will already disable PV production if the sell price is negative AND when the battery is full. No need to create a flow for that.

Yes.
But most of our customers want the PV production to stop the moment the price goes negative, and then charge the batteries from the grid at full speed. Not all because they want to make more financial profit. But also to take some power from the grid that their neighbours are feeding in.

Hello Auke,
I had the PV disable function working via Nodered custom control integrated in a Multiplus 2 GX with a Solar edge inverter.
I recently switched to the Multi RS with a separate GX device but now this option is not available, also your path of com.victronenergy.multi isn’t showing up in the list.
Did you install a special pallet that I missed?
BR Dennis

You probably need a newer version of the firmware in the Multi RS.

Hello Auke,
Thank you for the response and tip.
But the RS is running on V1.29 and the Cerbo V3.72 (large) which are both the newest versions as far as I can find or do you run Beta versions?

On the Cerbo the newest bêta is running. I don’t know if that is making the difference.