Skip to content

Expose IEEE 2030.5 data #234

@Foggy2

Description

@Foggy2

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
      }
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions