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.0.tar.gz (4.2 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.0-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mijn_ista_api-0.1.0.tar.gz
  • Upload date:
  • Size: 4.2 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.0.tar.gz
Algorithm Hash digest
SHA256 e8a3301a3deb9524a002b1a9e72faebc830da08d66a10d7a41ca19fca097ec0a
MD5 48dbadf2be4543731d670069e81ec285
BLAKE2b-256 ba9721f37c7e1dd6141d2d191dbde5f38eeaebda7a9dec81df45ff40535e38ca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mijn_ista_api-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.1 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 37e3674e2486f3bd0ef874326030cf7694913469696852d5478326ca6f056061
MD5 c589cdc5ae575aa3c2af8532e8f529c0
BLAKE2b-256 517b6037e734c8ff23ef1ea2976ba4076eb97c10a4357749f8e539999835309c

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