I have set the Scheduled charge levels to charge the battery every weekday from 14.30.
The schedule say inactive and also not taken into account, battery being charged whenever there is PV surplus.
What am I missing ?
I have set the Scheduled charge levels to charge the battery every weekday from 14.30.
The schedule say inactive and also not taken into account, battery being charged whenever there is PV surplus.
What am I missing ?
As I could not find a manual for Venus OS, a mention in Venus GX manual says that schedule is intended for charging from grid.
For future versions, posibility of choosing the schedule intend, grid / PV surplus / any, might be useful.
![]()
I recently had to remove pv panels from the roof to carry out repairs to the roof. This necessitated me placing a few panels at gound level with a 10 degree slant. Shading occurs much sooner than it would on the roof, so I opted to use the Scheduled Charge Level. The aim was to try increase the SOC by at least 5% every day until a 100% SOC could be achieved, considering that there are fewer panels connected and longer more frequent periods of heavy clouds and rain. This is only until the weather is clear enough so that roof tiles can be removed to fit the roof hooks and mounting rails. I discovered that when the SOC% difference between the battery SOC% and the Schedule Charge Level SOC Limit is around the 5% mark, nothing happens, it simply keeps it at the SOC% level that the battery was at when Scheduled charging is initiated.
@Nickdb mentioned in a post I read some time ago that:
What is the SOC state of your battery that you want to get to 100% SOC?
My intent use for schedule charge was only to enable charging after a specified hour, not particulary interested in SOC level but keep it 40-50%.
This system is UPS like for communications/networking, computers, printers and surveillance, with some ESS due to the presence of Fronius PV.
Installation place is in the office and charging is noisy.
After hours charging is desired and hoped to use the schedule. Maybe a future VenusOS will implement a more flexible schedule.
I think some of that might be out of context.
The hysteresis applies to normal ESS operation.
Schedules are solely to charge from grid and to block/limit battery discharge, it will by default charge from solar when it is available and there is surplus.
It is also easy to customise grid charging via nodered.
Using NodeRed, is it also possible to control charge schedule, independent from source grid/solar ?
Any start point documentation is highly appreciated.
Yes, one can programatically configure the Scheduled Charge Level using the ESS node.
Easy to do. Go have a dig around the nodered section, plenty of info to get you going.
Great, thank you all for directions.
Will get back after results.
This is my first Node-RED experience, quite a pleasant one after understanding the basic concepts and some terms “slang”.
Did not found a simple timer function/node so had to install a third-party (node-red-contrib-cron-plus), any thoughts on that ?
It could be made simpler, timer node having a capacity of multiple cron jobs but for a beginner flow is easy to follow. The “Charge current limit“ node is only for monitoring.
[
{
"id": "7abcfc5e6f0a3f1d",
"type": "tab",
"label": "Flow 2",
"disabled": false,
"info": "",
"env": []
},
{
"id": "c1ccce94a9cdbbe0",
"type": "victron-output-ess",
"z": "7abcfc5e6f0a3f1d",
"service": "com.victronenergy.settings",
"path": "/Settings/SystemSetup/MaxChargeCurrent",
"serviceObj": {
"service": "com.victronenergy.settings",
"name": "Venus settings",
"communityTag": "ess"
},
"pathObj": {
"path": "/Settings/SystemSetup/MaxChargeCurrent",
"type": "float",
"name": "DVCC Charge current limit (A)",
"mode": "both"
},
"initial": 25,
"name": "Set charge current 25A",
"onlyChanges": false,
"roundValues": "no",
"rateLimit": 0,
"outputs": 0,
"conditionalMode": false,
"condition1Operator": ">",
"condition2Enabled": false,
"condition2Service": "",
"condition2Path": "",
"condition2Operator": ">",
"logicOperator": "AND",
"outputTrue": "true",
"outputFalse": "false",
"outputOnChange": false,
"debounce": 2000,
"x": 510,
"y": 100,
"wires": []
},
{
"id": "b11fe7ad10ef105d",
"type": "cronplus",
"z": "7abcfc5e6f0a3f1d",
"name": "Weekdays-morning",
"outputField": "payload",
"timeZone": "",
"storeName": "",
"commandResponseMsgOutput": "output1",
"defaultLocation": "45.49710705753418 24.78515625",
"defaultLocationType": "fixed",
"outputs": 1,
"options": [
{
"name": "schedule1",
"topic": "topic1",
"payloadType": "num",
"payload": "25",
"expressionType": "cron",
"expression": "0 0 8 ? * MON,TUE,WED,THU,FRI *",
"location": "",
"offset": "0",
"solarType": "all",
"solarEvents": "sunrise,sunset"
}
],
"x": 170,
"y": 100,
"wires": [
[
"c1ccce94a9cdbbe0",
"9425f29d74d05e45"
]
]
},
{
"id": "943376caa7942007",
"type": "cronplus",
"z": "7abcfc5e6f0a3f1d",
"name": "Weekdays-afternoon",
"outputField": "payload",
"timeZone": "",
"storeName": "",
"commandResponseMsgOutput": "output1",
"defaultLocation": "45.6201852957278 24.960937499999996",
"defaultLocationType": "fixed",
"outputs": 1,
"options": [
{
"name": "schedule1",
"topic": "topic1",
"payloadType": "num",
"payload": "65",
"expressionType": "cron",
"expression": "0 30 14 ? * MON,TUE,WED,THU,FRI *",
"location": "",
"offset": "0",
"solarType": "all",
"solarEvents": "sunrise,sunset"
}
],
"x": 180,
"y": 160,
"wires": [
[
"6ce097a8b242c29e",
"9425f29d74d05e45"
]
]
},
{
"id": "6ce097a8b242c29e",
"type": "victron-output-ess",
"z": "7abcfc5e6f0a3f1d",
"service": "com.victronenergy.settings",
"path": "/Settings/SystemSetup/MaxChargeCurrent",
"serviceObj": {
"service": "com.victronenergy.settings",
"name": "Venus settings",
"communityTag": "ess"
},
"pathObj": {
"path": "/Settings/SystemSetup/MaxChargeCurrent",
"type": "float",
"name": "DVCC Charge current limit (A)",
"mode": "both"
},
"initial": 65,
"name": "Set charge current 65A",
"onlyChanges": false,
"roundValues": "no",
"rateLimit": 0,
"outputs": 0,
"conditionalMode": false,
"condition1Operator": ">",
"condition2Enabled": false,
"condition2Service": "",
"condition2Path": "",
"condition2Operator": ">",
"logicOperator": "AND",
"outputTrue": "true",
"outputFalse": "false",
"outputOnChange": false,
"debounce": 2000,
"x": 510,
"y": 160,
"wires": []
},
{
"id": "7a6abe80b1f543e3",
"type": "victron-input-ess",
"z": "7abcfc5e6f0a3f1d",
"service": "com.victronenergy.settings",
"path": "/Settings/SystemSetup/MaxChargeCurrent",
"serviceObj": {
"service": "com.victronenergy.settings",
"name": "Venus settings",
"communityTag": "ess"
},
"pathObj": {
"path": "/Settings/SystemSetup/MaxChargeCurrent",
"type": "float",
"name": "DVCC Charge current limit (A)",
"mode": "both"
},
"name": "Charge current limit",
"onlyChanges": false,
"roundValues": "no",
"rateLimit": 0,
"outputs": 1,
"conditionalMode": false,
"outputTrue": "true",
"outputFalse": "false",
"debounce": "2000",
"x": 490,
"y": 300,
"wires": [
[]
]
},
{
"id": "9425f29d74d05e45",
"type": "debug",
"z": "7abcfc5e6f0a3f1d",
"name": "debug 1",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 460,
"y": 240,
"wires": []
},
{
"id": "6a64a09fd4c8ef47",
"type": "global-config",
"env": [],
"modules": {
"@victronenergy/node-red-contrib-victron": "1.6.63",
"node-red-contrib-cron-plus": "2.2.4"
}
}
]