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.2.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.2-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mijn_ista_api-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 7af09f7a9b72415ffa918436d3c7e2c122b65a96c88a6085d07a6ac0bfe58d45
MD5 12c33056d7864fedb4c9e73f3487c75b
BLAKE2b-256 1400ab9ea403573eef35e3cacf4564d350b7f744aca584c6d4bc07be22609374

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mijn_ista_api-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1731f31588b91c6201d382e6104029fd42a74ee4ff4b938fb34d27c94ca26585
MD5 639e78f6a37f894c07d734026b40b3f7
BLAKE2b-256 fcb16905b00842e5d8348ecc2912538afdc4896b8b48e99b6bdf1377d73a0577

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