← Dashboard

About NEM Flex Telemetry

OpenNEM for the demand side

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_versionstringliteral "2.0"Schema version guard, rejects v1.x records
interval_start_utcstringISO8601 UTCInterval start timestamp
regionstringNEM codeNSW1, QLD1, VIC1, SA1, TAS1
postcode_prefixstring3 digitsFirst 3 digits of postcode only (privacy boundary)
net_import_kwnumberkW, signedNet grid import (+) or export (-)
price_signal_seennumber$/kWhBuy price or tariff signal seen by HAEO optimiser
price_export_seennumber$/kWhExport (FiT) price seen by HAEO optimiser
buy_sell_spreadnumber$/kWhDerived spread: price_signal_seen minus price_export_seen
optimiser_setpoint_kwnumberkW, signedSetpoint commanded by HAEO
flex_available_up_kwnumberkW, ≥0Additional load the household could absorb now
flex_available_down_kwnumberkW, ≥0Load reduction or export increase available now
storage_soc_pctnumber%, 0-100Battery state of charge
envelope_import_limit_kwnumberkW, ≥0Max allowed import (DNSP or firmware constraint)
envelope_export_limit_kwnumberkW, ≥0Max allowed export
shadow_price_importnumber | null$/kWhLP dual on import envelope constraint
shadow_price_exportnumber | null$/kWhLP dual on export envelope constraint
shadow_price_soc_minnumber | null$/kWhLP dual on minimum SOC constraint
shadow_price_soc_maxnumber | null$/kWhLP dual on maximum SOC constraint
naive_baseline_kwnumberkW, signedEstimated consumption without optimisation (the receipts field)
assets[]arrayPer-asset records (battery, EV chargers). See SCHEMA.md.
deferrable_loads[]arrayShiftable 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. 1

    Create a fine-grained GitHub PAT

    In your GitHub account, create a fine-grained PAT scoped to purcell-lab/nem-flex-telemetry with Contents: Read and write.

  2. 2

    Add HACS custom repository

    In HACS, add https://github.com/purcell-lab/nem-flex-telemetry as a custom Integration repository.

  3. 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. 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>.