There is a documentation bug with swapped labels for states 1 and 2 in the Victron Node-RED ‘restrictions’ nodes.
Actual behavior from dbus-systemcalc-py/delegates/dynamicess.py:
Restrictions is an IntFlag:
0 = NONE → No restrictions
1 = BAT2GRID → No exporting from battery to grid (discharge limited to PV + local consumption)
2 = GRID2BAT → No importing from grid to battery (charge limited to AC-coupled PV only)
3 = BAT2GRID | GRID2BAT → No energy flow between battery and grid
This matches the dynamic-ess README and Node-RED library docs:
0 = No restrictions
1 = No exporting from battery to grid
2 = No importing from grid to battery
The same logic applies to per-timeslot restrictions: /Settings/DynamicEss/Schedule/*/Restrictions) and global overrides per-timeslot.
The documentation bugs are located in the Victron nodes (node-red-contrib-victron) that expose the enum with swapped labels for 1/2, visible in the node dropdown/help and flow JSON:
0: “No restrictions between battery and the grid”
1: “Grid to battery energy flow is restricted” ← should be 2
2: “Battery to grid energy flow is restricted” ← should be 1
3: “No energy flow between battery and grid”
This may also appears in Modbus-TCP register lists and other places.
Practical impact:
The code respects the numeric values correctly but if you set values via Victron nodes using the displayed labels, you get the opposite restriction for 1/2.