I have a setup that’s working fine. Use solar to charge my batteries or the scheduled charge option from my Cerbo GX when needed. I would love to use Node-Red to forge my MP to charge from the grid. I use NR to change the mode of my MP ( On, Off, Inverter only, Charger only). I found the Node-Red setting to set a scheduled charge. However, I cannot find how to forge my MP to start charging from the grid using NR. Any help is welcome
Just modify the GridSetPoint to a suitable value. If you have 1000 Watts consumption and want to force a 4kW charge, set it to 5000 W.
Works best without DESS, DESS has some states where it overrides the Setpoint with it’s own values and therefore then ignores that setting.
ESS mode - Keep batteries charged?
This is what I use
[
{
“id”: “4bd618242c1f7e51”,
“type”: “tab”,
“label”: “Charge Battery at Cheap rate”,
“disabled”: false,
“info”: “”,
“env”:
},
{
“id”: “2ec2f4992c864648”,
“type”: “victron-output-ess”,
“z”: “4bd618242c1f7e51”,
“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”: false,
“x”: 860,
“y”: 300,
“wires”:
},
{
“id”: “5d9ae9bfd6609e5c”,
“type”: “inject”,
“z”: “4bd618242c1f7e51”,
“name”: “SOC to 40% 4am”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “00 04 * * *”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “40”,
“payloadType”: “num”,
“x”: 210,
“y”: 180,
“wires”: [
[
“4f0d5e45b11da103”
]
]
},
{
“id”: “3c189907f6402a24”,
“type”: “inject”,
“z”: “4bd618242c1f7e51”,
“name”: “SOC to 5% 7am”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “00 07 * * *”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “5”,
“payloadType”: “num”,
“x”: 430,
“y”: 300,
“wires”: [
[
“2ec2f4992c864648”
]
]
},
{
“id”: “2b9ba75f4c6419af”,
“type”: “comment”,
“z”: “4bd618242c1f7e51”,
“name”: “State of charge to charge battery at cheap rate”,
“info”: “”,
“x”: 400,
“y”: 100,
“wires”:
},
{
“id”: “8b7d70e4e89a79a8”,
“type”: “victron-input-ess”,
“z”: “4bd618242c1f7e51”,
“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 (%)”
},
“name”: “”,
“onlyChanges”: false,
“x”: 290,
“y”: 540,
“wires”: [
[
“85f6b74092814862”
]
]
},
{
“id”: “85f6b74092814862”,
“type”: “debug”,
“z”: “4bd618242c1f7e51”,
“name”: “Min SOC%”,
“active”: true,
“tosidebar”: false,
“console”: false,
“tostatus”: true,
“complete”: “payload”,
“targetType”: “msg”,
“statusVal”: “payload”,
“statusType”: “auto”,
“x”: 590,
“y”: 540,
“wires”:
},
{
“id”: “d98f19327f5b35eb”,
“type”: “inject”,
“z”: “4bd618242c1f7e51”,
“name”: “SOC to 5% 4pm”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “58 15 * * *”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “5”,
“payloadType”: “num”,
“x”: 430,
“y”: 480,
“wires”: [
[
“2ec2f4992c864648”
]
]
},
{
“id”: “aad881c9576af08f”,
“type”: “inject”,
“z”: “4bd618242c1f7e51”,
“name”: “SOC to 60% 1pm”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “00 13 * * *”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “60”,
“payloadType”: “num”,
“x”: 210,
“y”: 360,
“wires”: [
[
“30612bb769a6b474”
]
]
},
{
“id”: “2d771a7cd3cb64d1”,
“type”: “inject”,
“z”: “4bd618242c1f7e51”,
“name”: “SOC to 60% 5am”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “00 05 * * *”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “60”,
“payloadType”: “num”,
“x”: 210,
“y”: 220,
“wires”: [
[
“67fff50a68fa0d14”
]
]
},
{
“id”: “0be21dd7c65e5467”,
“type”: “inject”,
“z”: “4bd618242c1f7e51”,
“name”: “SOC to 80% 6am”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “00 06 * * *”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “80”,
“payloadType”: “num”,
“x”: 210,
“y”: 260,
“wires”: [
[
“6c84928b627e2d63”
]
]
},
{
“id”: “6c84928b627e2d63”,
“type”: “switch”,
“z”: “4bd618242c1f7e51”,
“name”: “”,
“property”: “battery”,
“propertyType”: “flow”,
“rules”: [
{
“t”: “lt”,
“v”: “80”,
“vt”: “str”
}
],
“checkall”: “true”,
“repair”: false,
“outputs”: 1,
“x”: 390,
“y”: 260,
“wires”: [
[
“2ec2f4992c864648”
]
]
},
{
“id”: “89b9cbd8c76f4477”,
“type”: “inject”,
“z”: “4bd618242c1f7e51”,
“name”: “SOC to 80% 2pm”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “00 14 * * *”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “80”,
“payloadType”: “num”,
“x”: 210,
“y”: 400,
“wires”: [
[
“ed681b62e318856b”
]
]
},
{
“id”: “7a0c1e1caa143368”,
“type”: “inject”,
“z”: “4bd618242c1f7e51”,
“name”: “SOC to 95% 3pm”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “00 15 * * *”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “95”,
“payloadType”: “num”,
“x”: 210,
“y”: 440,
“wires”: [
[
“f2cfd94db5721bc2”
]
]
},
{
“id”: “30612bb769a6b474”,
“type”: “switch”,
“z”: “4bd618242c1f7e51”,
“name”: “”,
“property”: “battery”,
“propertyType”: “flow”,
“rules”: [
{
“t”: “lt”,
“v”: “50”,
“vt”: “str”
}
],
“checkall”: “true”,
“repair”: false,
“outputs”: 1,
“x”: 390,
“y”: 360,
“wires”: [
[
“2ec2f4992c864648”
]
]
},
{
“id”: “ed681b62e318856b”,
“type”: “switch”,
“z”: “4bd618242c1f7e51”,
“name”: “”,
“property”: “battery”,
“propertyType”: “flow”,
“rules”: [
{
“t”: “lt”,
“v”: “70”,
“vt”: “str”
}
],
“checkall”: “true”,
“repair”: false,
“outputs”: 1,
“x”: 390,
“y”: 400,
“wires”: [
[
“2ec2f4992c864648”
]
]
},
{
“id”: “f2cfd94db5721bc2”,
“type”: “switch”,
“z”: “4bd618242c1f7e51”,
“name”: “”,
“property”: “battery”,
“propertyType”: “flow”,
“rules”: [
{
“t”: “lt”,
“v”: “95”,
“vt”: “str”
}
],
“checkall”: “true”,
“repair”: false,
“outputs”: 1,
“x”: 390,
“y”: 440,
“wires”: [
[
“2ec2f4992c864648”
]
]
},
{
“id”: “67fff50a68fa0d14”,
“type”: “switch”,
“z”: “4bd618242c1f7e51”,
“name”: “”,
“property”: “battery”,
“propertyType”: “flow”,
“rules”: [
{
“t”: “lt”,
“v”: “60”,
“vt”: “str”
}
],
“checkall”: “true”,
“repair”: false,
“outputs”: 1,
“x”: 390,
“y”: 220,
“wires”: [
[
“2ec2f4992c864648”
]
]
},
{
“id”: “4f0d5e45b11da103”,
“type”: “switch”,
“z”: “4bd618242c1f7e51”,
“name”: “”,
“property”: “battery”,
“propertyType”: “flow”,
“rules”: [
{
“t”: “lt”,
“v”: “40”,
“vt”: “str”
}
],
“checkall”: “true”,
“repair”: false,
“outputs”: 1,
“x”: 390,
“y”: 180,
“wires”: [
[
“2ec2f4992c864648”
]
]
},
{
“id”: “846ae82a0de5caea”,
“type”: “victron-input-battery”,
“z”: “4bd618242c1f7e51”,
“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”: 180,
“y”: 620,
“wires”: [
[
“bb4c6dc12ac6daae”
]
]
},
{
“id”: “bb4c6dc12ac6daae”,
“type”: “change”,
“z”: “4bd618242c1f7e51”,
“name”: “Flow.Battery”,
“rules”: [
{
“t”: “set”,
“p”: “battery”,
“pt”: “flow”,
“to”: “payload”,
“tot”: “msg”
}
],
“action”: “”,
“property”: “”,
“from”: “”,
“to”: “”,
“reg”: false,
“x”: 370,
“y”: 620,
“wires”: [
]
}
]
Thanks
That’s not what i’m looking for.
I want to control the charge moments.
I have an automation in Home Assistant that calculates the moment to charge.
It’s working and now I turn on and off a light just as a test.
I have to change the light with a node to trigger the MP to start or stop charging.
Hi, you have to change the minimum SOC value. (ESS)
you can do this with node red. I run venus OS on a raspberry so i connect with modbus to set the SOC. So you can just use the logic of your homme Assitant.
my basic logic.
[
{
“id”: “0970ba5c5eddc3a0”,
“type”: “modbus-read”,
“z”: “0771a496bba31198”,
“name”: “Read SOC”,
“topic”: “”,
“showStatusActivities”: false,
“logIOActivities”: false,
“showErrors”: false,
“showWarnings”: true,
“unitid”: “100”,
“dataType”: “HoldingRegister”,
“adr”: 2901,
“quantity”: 1,
“rate”: “2”,
“rateUnit”: “m”,
“delayOnStart”: false,
“startDelayTime”: “”,
“server”: “8eb2a3d2e4dff36e”,
“useIOFile”: false,
“ioFile”: “”,
“useIOForPayload”: false,
“emptyMsgOnFail”: false,
“x”: 420,
“y”: 120,
“wires”: [
[
“3f0270fb32e1dfb6”
],
]
},
{
“id”: “3f0270fb32e1dfb6”,
“type”: “debug”,
“z”: “0771a496bba31198”,
“name”: “Display SOC”,
“active”: true,
“tosidebar”: true,
“console”: false,
“tostatus”: false,
“complete”: “payload”,
“targetType”: “msg”,
“x”: 630,
“y”: 100,
“wires”:
},
{
“id”: “82ab6394ea50ce18”,
“type”: “inject”,
“z”: “0771a496bba31198”,
“name”: “Set SOC to 80%”,
“props”: [
{
“p”: “payload”
}
],
“repeat”: “”,
“crontab”: “”,
“once”: false,
“onceDelay”: 0.1,
“topic”: “”,
“payload”: “800”,
“payloadType”: “num”,
“x”: 220,
“y”: 180,
“wires”: [
[
“8b272b37f67e1556”
]
]
},
{
“id”: “8b272b37f67e1556”,
“type”: “function”,
“z”: “0771a496bba31198”,
“name”: “Format Payload”,
“func”: “msg.payload = { value: msg.payload, ‘fc’: 100, ‘address’: 2901, ‘quantity’: 1 }; return msg;”,
“outputs”: 1,
“timeout”: “”,
“noerr”: 0,
“initialize”: “”,
“finalize”: “”,
“libs”: ,
“x”: 420,
“y”: 180,
“wires”: [
[
“4c7da3a90a7176c5”,
“23c54096e27f391e”
]
]
},
{
“id”: “23c54096e27f391e”,
“type”: “modbus-write”,
“z”: “0771a496bba31198”,
“name”: “Write SOC”,
“showStatusActivities”: false,
“showErrors”: false,
“showWarnings”: true,
“unitid”: “100”,
“dataType”: “HoldingRegister”,
“adr”: “2901”,
“quantity”: 1,
“server”: “8eb2a3d2e4dff36e”,
“emptyMsgOnFail”: false,
“keepMsgProperties”: false,
“delayOnStart”: false,
“startDelayTime”: “”,
“x”: 620,
“y”: 180,
“wires”: [
,
]
},
{
“id”: “4c7da3a90a7176c5”,
“type”: “debug”,
“z”: “0771a496bba31198”,
“name”: “debug 75”,
“active”: true,
“tosidebar”: true,
“console”: false,
“tostatus”: false,
“complete”: “false”,
“statusVal”: “”,
“statusType”: “auto”,
“x”: 620,
“y”: 260,
“wires”:
},
{
“id”: “8eb2a3d2e4dff36e”,
“type”: “modbus-client”,
“name”: "gx ",
“clienttype”: “tcp”,
“bufferCommands”: true,
“stateLogEnabled”: false,
“queueLogEnabled”: false,
“failureLogEnabled”: true,
“tcpHost”: “172.16.100.2”,
“tcpPort”: “502”,
“tcpType”: “DEFAULT”,
“serialPort”: “/dev/ttyUSB”,
“serialType”: “RTU-BUFFERD”,
“serialBaudrate”: “9600”,
“serialDatabits”: “8”,
“serialStopbits”: “1”,
“serialParity”: “none”,
“serialConnectionDelay”: “100”,
“serialAsciiResponseStartDelimiter”: “0x3A”,
“unit_id”: “”,
“commandDelay”: 1,
“clientTimeout”: 1000,
“reconnectOnTimeout”: true,
“reconnectTimeout”: 2000,
“parallelUnitIdsAllowed”: true,
“showWarnings”: true,
“showLogs”: true
}
]
one more thing : input of 800 gives a soc from 80% on my system.