Skip to main content

energyid-webhooks

Python package for interfacing with EnergyID Webhooks (supports both V1 and V2 APIs)

Installation

pip install energyid-webhooks

Features

  • V2 API support with device provisioning and claiming
  • Authentication with automatic token renewal
  • Smart sensor bundling for efficient data transmission
  • Async support
  • Full type hints

Type Checking

This package is fully type-hinted and checked with strict mypy settings.

The V2 API includes device provisioning, authentication, and smart bundling:

import asyncio
from energyid_webhooks import WebhookClient

# Create the client
client = WebhookClient(
    client_id="your_provisioning_key",
    client_secret="your_provisioning_secret",
    device_id="unique_device_id",
    device_name="My Device",
    reauth_interval=24  # Hours between token refresh
)

async def main():
    # Authenticate with EnergyID
    is_claimed = await client.authenticate()

    if not is_claimed:
        # Device needs to be claimed
        claim_info = client.get_claim_info()
        print(f"Claim your device at {claim_info['claim_url']} with code {claim_info['claim_code']}")
        # Wait for claiming...
        return

    # Add and update sensors
    client.update_sensor("el", 1250.5)  # Electricity consumption
    client.update_sensor("pv", 3560.2)  # Solar production

    # Synchronize with EnergyID
    await client.synchronize_sensors()

    # Or enable automatic synchronization
    client.start_auto_sync(interval_seconds=300)  # Every 5 minutes

    # Don't forget to close when done
    await client.close()

asyncio.run(main())

V1 API Usage (Legacy)

The original API is still available for backward compatibility:

from energyid_webhooks import WebhookClientV1, WebhookPayload

url = "https://app.energyid.eu/integrations/WebhookIn/..."

client = WebhookClientV1(url)

# Post some data to the webhook
data = {
    'remoteId': 'my-solar-inverter',
    'remoteName': 'My Solar Panels',
    'metric': 'solarPhotovoltaicProduction',
    'metricKind': 'total',
    'unit': 'kWh',
    'interval': 'P1D',
    'data': [['2022-10-05T08:00+0200', 0.004]]
}

client.post(data)

V1 Async Usage (Legacy)

import asyncio
from energyid_webhooks import WebhookClientAsyncV1

url = "https://app.energyid.eu/integrations/WebhookIn/..."

client = WebhookClientAsyncV1(url)

async def main():
    data = {
        'remoteId': 'my-solar-inverter',
        'remoteName': 'My Solar Panels',
        'metric': 'solarPhotovoltaicProduction',
        'metricKind': 'total',
        'unit': 'kWh',
        'interval': 'P1D',
        'data': [['2022-10-05T08:00+0200', 0.004]]
    }

    await client.post(data)

asyncio.run(main())

Demos

See the demos folder for cURL, Python notebook, Node-RED, and Apache NiFi examples.

Node-RED examples include:

Development

Setup

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Metadata

Release files for energyid-webhooks 0.0.16

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for energyid-webhooks 0.0.16
File Size Uploaded
energyid_webhooks-0.0.16.tar.gz 121.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for energyid-webhooks 0.0.16
File Interpreter ABI Platform
energyid_webhooks-0.0.16-py3-none-any.whl Python 3 none any Details

Total release size: 135.7 kB

Release files / energyid_webhooks-0.0.16.tar.gz

Download URL energyid_webhooks-0.0.16.tar.gz
Size 121.5 kB
Tags Source
SHA-256 checksum
How to use checksums
66ccd18e78a6de032a9b6d42a9b0f4df2a3740cb7ad62dbc009c004d57eeee9f
BLAKE2b-256 checksum
How to use checksums
1346a7534dce976ff48f686a3cf1ebcd0f0e1c3bc687d6928af29da0635b6064
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Release files / energyid_webhooks-0.0.16-py3-none-any.whl

Download URL energyid_webhooks-0.0.16-py3-none-any.whl
Size 14.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
122dd0a82ef2015fb49671f55665a92d701dbc99923d44f9ee52f84bd3418ce5
BLAKE2b-256 checksum
How to use checksums
2485a4d8b7ee4a8d2941e81ea7f848b2f2cb79e3b9afe20ad57210fef5c510bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 31, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.16 This release

2 release files

0.0.15

2 release files

0.0.12

2 release files

0.0.10

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page