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.
V2 API Usage (Recommended)
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:
- nodered_flow.json: generic incoming webhook flow.
- nodered_mqtt_bridge_flow.json: MQTT-to-EnergyID bridge flow with per-device claiming, buffering, and upload policy handling.
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)
| File | Size | Uploaded | |
|---|---|---|---|
| energyid_webhooks-0.0.16.tar.gz | 121.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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