What is this?
NEM Flex Telemetry is an open-data community project that collects 5-minute interval telemetry from household energy optimisers (specifically HAEO running inside Home Assistant) and publishes it as an open dataset under CC-BY-4.0.
The goal is to build the demand-side equivalent of OpenElectricity: a community-maintained, publicly accessible picture of how much flexible load exists in the National Electricity Market, where it is, and how it responds to price signals.
This data is framed as a community-data complement to AEMO's IPRR Reporting Track. See docs/IPRR-SUBMISSION.md for the full framing.
The 12-field schema
Every 5 minutes, each participating household pushes one record. Full specification: SCHEMA.md. Machine-readable: schema/telemetry.schema.json.
| Field | Type | Units | Description |
|---|---|---|---|
schema_version | string | literal "2.0" | Schema version guard, rejects v1.x records |
interval_start_utc | string | ISO8601 UTC | Interval start timestamp |
region | string | NEM code | NSW1, QLD1, VIC1, SA1, TAS1 |
postcode_prefix | string | 3 digits | First 3 digits of postcode only (privacy boundary) |
net_import_kw | number | kW, signed | Net grid import (+) or export (-) |
price_signal_seen | number | $/kWh | Buy price or tariff signal seen by HAEO optimiser |
price_export_seen | number | $/kWh | Export (FiT) price seen by HAEO optimiser |
buy_sell_spread | number | $/kWh | Derived spread: price_signal_seen minus price_export_seen |
optimiser_setpoint_kw | number | kW, signed | Setpoint commanded by HAEO |
flex_available_up_kw | number | kW, ≥0 | Additional load the household could absorb now |
flex_available_down_kw | number | kW, ≥0 | Load reduction or export increase available now |
storage_soc_pct | number | %, 0-100 | Battery state of charge |
envelope_import_limit_kw | number | kW, ≥0 | Max allowed import (DNSP or firmware constraint) |
envelope_export_limit_kw | number | kW, ≥0 | Max allowed export |
shadow_price_import | number | null | $/kWh | LP dual on import envelope constraint |
shadow_price_export | number | null | $/kWh | LP dual on export envelope constraint |
shadow_price_soc_min | number | null | $/kWh | LP dual on minimum SOC constraint |
shadow_price_soc_max | number | null | $/kWh | LP dual on maximum SOC constraint |
naive_baseline_kw | number | kW, signed | Estimated consumption without optimisation (the receipts field) |
assets[] | array | Per-asset records (battery, EV chargers). See SCHEMA.md. | |
deferrable_loads[] | array | Shiftable appliance loads reported by HAEO |
IPRR framing
AEMO's Integrating Price-Responsive Resources (IPRR) program, and its associated Price Responsive Reporting Guidelines, require aggregators to report available capacity, price responsiveness, and envelope constraints.
This project is not a registered aggregator. It is the open-data complement: a community dataset that demonstrates what distributed household optimisers can measure and report, using only open tools and a standard schema, with no central intermediary.
Project Edith (Ausgrid, Dec 2025)
identified envelope constraints as a critical missing data layer for locational DER planning.
The envelope_import_limit_kw and envelope_export_limit_kw fields
in this schema are a direct response to that finding.
How to join
Requirements: Home Assistant with HAEO installed and configured for your household.
-
1
Create a fine-grained GitHub PAT
In your GitHub account, create a fine-grained PAT scoped to
purcell-lab/nem-flex-telemetrywithContents: Read and write. -
2
Add HACS custom repository
In HACS, add
https://github.com/purcell-lab/nem-flex-telemetryas a custom Integration repository. -
3
Install and configure
Install "NEM Flex Telemetry" from HACS, restart HA, then go to Settings → Devices & Services → Add Integration. Enter your PAT, household ID, postcode prefix, region, and HAEO entity mappings.
-
4
Opt in and verify
Agree to the CC-BY-4.0 data licence, opt in to cohort participation, and verify data is flowing at
github.com/purcell-lab/nem-flex-telemetry/tree/main/data/raw/<your-id>.