Home Assistant · REST sensors · keyless

Verifiable live data in Home Assistant.

Point a Home Assistant REST sensor at Dynamic Feed and every value arrives inside an Ed25519-signed envelope with its own provenance and freshness — so your automations act on data they can attribute and check the age of, not a bare number. Read-only: it surfaces data, it never controls a device or makes a safety decision.

● live demo — grid carbon · NSWkeyless · POST /v1/batch · grid_carbon
querying the live feed…
Read straight into a Home Assistant REST sensor. AU figures are DERIVED from live AEMO dispatch \u2014 the tool says so in its own fields.

The call

No custom component, no key. Use built-in REST sensors against the keyless POST /v1/batch endpoint, and expose the freshness/provenance block as sensor attributes.

# A keyless Home Assistant REST sensor — paste into configuration.yaml.
# The value lives at results[0].data.; provenance/freshness ride along as attributes.
rest:
  - resource: https://dynamicfeed.ai/v1/batch
    method: POST
    headers: {"Content-Type": application/json}
    payload: '{"calls":[{"tool":"grid_carbon","args":{"region":"nsw"}}]}'
    scan_interval: 600
    sensor:
      - name: "Dynamic Feed Grid Carbon Intensity"
        value_template: "{{ value_json.results[0].data.carbon_intensity_g_per_kwh }}"
        unit_of_measurement: "gCO2/kWh"
        json_attributes_path: "$.results[0].data"
        json_attributes: ["provenance", "freshness", "method", "derived"]

Sample response

{ "carbon_intensity_g_per_kwh": 624, "region": "nsw", "derived": true,
  "method": "live AEMO dispatch weighted by AEMO CDEII emission factors",
  "provenance": { "source": "AEMO NEMWEB", "measured_at": "2026-06-14T14:55:06+10:00" },
  "freshness": { "state": "live", "age_seconds": 90, "max_age_seconds": 600 },
  "signature": { "alg": "Ed25519", "key_id": "df-ed25519-6ca0de29113b", "sig": "..." } }

Why live data

You could point a Home Assistant REST sensor straight at a weather or grid API and get a bare number. Dynamic Feed adds provenance, explicit freshness state and, on supported paths, an Ed25519 signature that an auditor can re-check out-of-band. Home Assistant's Jinja cannot verify Ed25519 itself, so the reference config exposes the signature block rather than claiming to verify. It is a read-only bridge: it surfaces evidence and never actuates a device. A valid signature establishes integrity and attribution, not objective truth or independent time; your automations own every decision.

Use it for

FAQ

Do I need a custom component or an API key?

No. It uses Home Assistant's built-in REST sensor platform against the keyless POST /v1/batch endpoint. There is nothing to install and no secret to store. Copy the rest: block into configuration.yaml (or a package file), edit the city/region, and restart.

Does it control my devices?

No. It is strictly read-only — it pulls values into sensors. It never switches, dims, locks or actuates anything and makes no safety decision. Whether to act on a reading is your automation's call, on your hardware.

Can Home Assistant verify the Ed25519 signature?

Not in a value_template — Jinja can't do Ed25519. The reference config exposes the signature block so you can verify it out-of-band (e.g. a shell_command or AppDaemon app mirroring scripts/verify_awareness.py). The canonicalization is json-sorted-compact; the public key is at /.well-known/keys.

Related live feeds