Problem
In Australia some network providers require that all grid connected solar/batteries be configured for network control. At times of too much energy in the grid, for example lots of solar on sunny days. This allows network providers to remotely command customer solar/batteries to curtail the energy being exported to prevent destabilizing the grid.
If I am understanding the documentation correctly Australia's implementation of this is called Common Smart Inverter Profile (CSIP) and is based on standard IEEE 2030.5.
I would be surprised if other jurisdictions don't start using their own implementation of IEEE 2030.5 as time goes on.
Enhancement
While viewing the tedapi/controller endpoint from the pypowerwall proxy, I found an object with name ieee20305 which appears to show the status of the function.
It would be great if that could be exposed in pypowerwall with a convenience function to select just that object, or even merging the controls child object into suitable existing functions.
Ultimately if it could also be included in the default Powerwall-Dashboard config, that would be amazing!
Additional context
The functionality works by the solar/battery device regularly polling a remote server. The server responds with the current limits, which are then applied by the solar/battery device.
If the remote server becomes unavailable the default limit is applied by the solar/battery device until connectivity is restored.
Excerpt from /tedapi/controller
{
"ieee20305": {
"controls": {
"activeControls": {
"opModEnergize": null,
"opModExpLimW": 10000,
"opModGenLimW": null,
"opModImpLimW": null,
"opModLoadLimW": null,
"opModMaxLimW": null
},
"defaultControl": {
"mRID": "<ID>",
"opModEnergize": null,
"opModExpLimW": 1500,
"opModGenLimW": null,
"opModImpLimW": null,
"opModLoadLimW": null,
"opModMaxLimW": null,
"setGradW": 28
}
},
"longFormDeviceID": "<siteID>",
"polledResources": [
{
"lastPolledTimestamp": "2025-11-19T14:51:04+10:30",
"name": "EndDeviceList",
"pollRateSeconds": 900,
"url": "https://prd.sapowernetworksdso.com.au:443/edev"
},
{
"lastPolledTimestamp": "2025-11-19T14:51:19+10:30",
"name": "Registration",
"pollRateSeconds": 900,
"url": "https://prd.sapowernetworksdso.com.au:443/edev/<siteID>/rg"
},
{
"lastPolledTimestamp": "2025-11-19T14:51:19+10:30",
"name": "FunctionSetAssignmentsList",
"pollRateSeconds": 900,
"url": "https://prd.sapowernetworksdso.com.au:443/edev/<siteID>/fsa"
},
{
"lastPolledTimestamp": "2025-11-19T14:54:35+10:30",
"name": "DERList",
"pollRateSeconds": 900,
"url": "https://prd.sapowernetworksdso.com.au:443/edev/<siteID>/der"
},
{
"lastPolledTimestamp": "2025-11-19T15:03:37+10:30",
"name": "DERProgramList",
"pollRateSeconds": 300,
"url": "https://prd.sapowernetworksdso.com.au:443/edev/<siteID>/derp"
},
{
"lastPolledTimestamp": "2025-11-19T14:51:19+10:30",
"name": "DeviceCapability",
"pollRateSeconds": 900,
"url": "https://prd.sapowernetworksdso.com.au:443/dcap"
},
{
"lastPolledTimestamp": "2025-11-19T14:49:24+10:30",
"name": "MirrorUsagePointList",
"pollRateSeconds": 900,
"url": "https://prd.sapowernetworksdso.com.au:443/mup"
},
{
"lastPolledTimestamp": "2025-11-19T14:51:18+10:30",
"name": "Time",
"pollRateSeconds": 900,
"url": "https://prd.sapowernetworksdso.com.au:443/tm"
}
],
"registration": {
"dateTimeRegistered": "2025-10-01T13:29:36+09:30",
"pin": 123456
}
}
}
Problem
In Australia some network providers require that all grid connected solar/batteries be configured for network control. At times of too much energy in the grid, for example lots of solar on sunny days. This allows network providers to remotely command customer solar/batteries to curtail the energy being exported to prevent destabilizing the grid.
If I am understanding the documentation correctly Australia's implementation of this is called
Common Smart Inverter Profile (CSIP)and is based on standardIEEE 2030.5.I would be surprised if other jurisdictions don't start using their own implementation of
IEEE 2030.5as time goes on.Enhancement
While viewing the
tedapi/controllerendpoint from the pypowerwall proxy, I found an object with nameieee20305which appears to show the status of the function.It would be great if that could be exposed in pypowerwall with a convenience function to select just that object, or even merging the
controlschild object into suitable existing functions.Ultimately if it could also be included in the default Powerwall-Dashboard config, that would be amazing!
Additional context
The functionality works by the solar/battery device regularly polling a remote server. The server responds with the current limits, which are then applied by the solar/battery device.
If the remote server becomes unavailable the default limit is applied by the solar/battery device until connectivity is restored.
Excerpt from
/tedapi/controller{ "ieee20305": { "controls": { "activeControls": { "opModEnergize": null, "opModExpLimW": 10000, "opModGenLimW": null, "opModImpLimW": null, "opModLoadLimW": null, "opModMaxLimW": null }, "defaultControl": { "mRID": "<ID>", "opModEnergize": null, "opModExpLimW": 1500, "opModGenLimW": null, "opModImpLimW": null, "opModLoadLimW": null, "opModMaxLimW": null, "setGradW": 28 } }, "longFormDeviceID": "<siteID>", "polledResources": [ { "lastPolledTimestamp": "2025-11-19T14:51:04+10:30", "name": "EndDeviceList", "pollRateSeconds": 900, "url": "https://prd.sapowernetworksdso.com.au:443/edev" }, { "lastPolledTimestamp": "2025-11-19T14:51:19+10:30", "name": "Registration", "pollRateSeconds": 900, "url": "https://prd.sapowernetworksdso.com.au:443/edev/<siteID>/rg" }, { "lastPolledTimestamp": "2025-11-19T14:51:19+10:30", "name": "FunctionSetAssignmentsList", "pollRateSeconds": 900, "url": "https://prd.sapowernetworksdso.com.au:443/edev/<siteID>/fsa" }, { "lastPolledTimestamp": "2025-11-19T14:54:35+10:30", "name": "DERList", "pollRateSeconds": 900, "url": "https://prd.sapowernetworksdso.com.au:443/edev/<siteID>/der" }, { "lastPolledTimestamp": "2025-11-19T15:03:37+10:30", "name": "DERProgramList", "pollRateSeconds": 300, "url": "https://prd.sapowernetworksdso.com.au:443/edev/<siteID>/derp" }, { "lastPolledTimestamp": "2025-11-19T14:51:19+10:30", "name": "DeviceCapability", "pollRateSeconds": 900, "url": "https://prd.sapowernetworksdso.com.au:443/dcap" }, { "lastPolledTimestamp": "2025-11-19T14:49:24+10:30", "name": "MirrorUsagePointList", "pollRateSeconds": 900, "url": "https://prd.sapowernetworksdso.com.au:443/mup" }, { "lastPolledTimestamp": "2025-11-19T14:51:18+10:30", "name": "Time", "pollRateSeconds": 900, "url": "https://prd.sapowernetworksdso.com.au:443/tm" } ], "registration": { "dateTimeRegistered": "2025-10-01T13:29:36+09:30", "pin": 123456 } } }