Skip to main content

Async Python client for the mijn.ista.nl energy portal

Project description

mijn-ista-api

Async Python client for the mijn.ista.nl energy monitoring portal.

Installation

pip install mijn-ista-api

Requirements

  • Python 3.12+
  • aiohttp 3.9+

Usage

import asyncio
import aiohttp
from mijn_ista_api import MijnIstaAPI, MijnIstaAuthError, MijnIstaConnectionError

async def main():
    async with aiohttp.ClientSession() as session:
        api = MijnIstaAPI(session, "you@example.com", "your-password", lang="nl-NL")

        # Authenticate (obtains JWT)
        await api.authenticate()

        # Fetch account + annual comparison data
        user_data = await api.get_user_values()
        for cus in user_data.get("Cus", []):
            cuid = cus["Cuid"]
            print(cus.get("Adress"), cus.get("City"))

            # Full monthly history (polls until all shards are loaded)
            month_data = await api.get_month_values(cuid)

            # Building averages for the current billing year
            periods = cus.get("curConsumption", {}).get("BillingPeriods", [])
            if periods:
                p = sorted(periods, key=lambda x: x["y"], reverse=True)[0]
                avg_data = await api.get_consumption_averages(
                    cuid, p["s"][:10], p["e"][:10]
                )

asyncio.run(main())

API overview

Method Endpoint Description
authenticate() POST /api/Authorization/Authorize Obtain JWT
get_user_values() POST /api/Values/UserValues Account info, annual comparison
get_month_values(cuid) POST /api/Consumption/MonthValues Full monthly history (auto-polls shards)
get_consumption_values(cuid, billing_period) POST /api/Values/ConsumptionValues Meter totals for one billing year
get_consumption_averages(cuid, start, end) POST /api/Values/ConsumptionAverages Building-wide normalised averages

Error handling

from mijn_ista_api import MijnIstaAuthError, MijnIstaConnectionError

try:
    await api.authenticate()
except MijnIstaAuthError:
    # Bad credentials
    ...
except MijnIstaConnectionError:
    # Network error or API unavailable
    ...

Notes

  • The JWT is passed in the request body, not as an Authorization header.
  • Every API response returns a refreshed JWT; the client handles this automatically.
  • get_month_values polls until the server has loaded all data shards (the API streams results).
  • Transient 425 Too Early / 503 Service Unavailable responses are retried with exponential backoff.

Home Assistant integration

This library powers the ista Nederland Home Assistant custom integration.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mijn_ista_api-0.1.3.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mijn_ista_api-0.1.3-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file mijn_ista_api-0.1.3.tar.gz.

File metadata

  • Download URL: mijn_ista_api-0.1.3.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mijn_ista_api-0.1.3.tar.gz
Algorithm Hash digest
SHA256 76764178e0e763ac1a971a6d1b9a976999548b95aca99332ff6f6faacd1d1f8c
MD5 f71f3bfc6851d8fbb867fc9f744115af
BLAKE2b-256 6fbebb0478b1800457a2613ca37f46df693265f0bb2624ea6fe3fa2d459c69af

See more details on using hashes here.

File details

Details for the file mijn_ista_api-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: mijn_ista_api-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mijn_ista_api-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 14a503ca34b8914cfd1cd960290a018acfcae9b01f8ca082f05f24e1b34a2c57
MD5 20c1b5743b103f41c453ae34892f59fc
BLAKE2b-256 3063edfdc2f63e7719fcd1ae6995e762e6c9aed573797a5b6368450d72c8ca9c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page