Skip to main content

Python library for Hypontech Cloud API

Project description

Hypontech Cloud API Python Library

A Python library for interacting with the Hypontech Cloud API for solar inverter monitoring.

Features

  • Async/await support using aiohttp
  • Get plant overview data (power, energy production, device status)
  • Get plant list
  • Automatic token management and refresh
  • Built-in retry logic for rate limiting
  • Type hints for better IDE support
  • Comprehensive error handling

Installation

pip install hyponcloud

Quick Start

Basic Usage

import asyncio
from hyponcloud import HyponCloud

async def main():
    # Create client with your credentials
    async with HyponCloud("your_username", "your_password") as client:
        # Connect and authenticate
        if await client.connect():
            # Get overview data
            overview = await client.get_overview()
            print(f"Current power: {overview.power}W")
            print(f"Today's energy: {overview.e_today}kWh")
            print(f"Total energy: {overview.e_total}kWh")

            # Get plant list
            plants = await client.get_list()
            print(f"Number of plants: {len(plants)}")

asyncio.run(main())

Using with Custom aiohttp Session

import aiohttp
from hyponcloud import HyponCloud

async def main():
    async with aiohttp.ClientSession() as session:
        client = HyponCloud("your_username", "your_password", session=session)

        if await client.connect():
            overview = await client.get_overview()
            print(f"Power: {overview.power}W")

asyncio.run(main())

Error Handling

from hyponcloud import (
    HyponCloud,
    AuthenticationError,
    ConnectionError,
    RateLimitError,
)

async def main():
    try:
        async with HyponCloud("username", "password") as client:
            await client.connect()
            overview = await client.get_overview()
            print(f"Power: {overview.power}W")

    except AuthenticationError as e:
        print(f"Authentication failed: {e}")
    except RateLimitError as e:
        print(f"Rate limit exceeded: {e}")
    except ConnectionError as e:
        print(f"Connection error: {e}")

asyncio.run(main())

API Reference

HyponCloud

Main client class for interacting with the Hypontech Cloud API.

Methods

__init__(username: str, password: str, session: aiohttp.ClientSession | None = None)

Initialize the client.

  • username: Your Hypontech Cloud username
  • password: Your Hypontech Cloud password
  • session: Optional aiohttp ClientSession. If not provided, one will be created automatically.
async connect() -> bool

Authenticate with the API and retrieve access token.

Returns: True if successful, False otherwise

Raises:

  • AuthenticationError: Invalid credentials
  • ConnectionError: Network error
  • RateLimitError: Too many requests
async get_overview(retries: int = 3) -> OverviewData

Get plant overview data including power generation and device status.

Parameters:

  • retries: Number of retry attempts on failure (default: 3)

Returns: OverviewData object

Raises:

  • AuthenticationError: Authentication required
  • ConnectionError: Network error
  • RateLimitError: Too many requests
async get_list(retries: int = 3) -> list[dict]

Get list of plants associated with the account.

Parameters:

  • retries: Number of retry attempts on failure (default: 3)

Returns: List of plant dictionaries

Raises:

  • AuthenticationError: Authentication required
  • ConnectionError: Network error
  • RateLimitError: Too many requests
async close() -> None

Close the aiohttp session (only if created by the library).

OverviewData

Data class containing plant overview information.

Attributes

  • capacity (float): Plant capacity
  • capacity_company (str): Capacity unit (e.g., "KW")
  • power (int): Current power generation in watts
  • company (str): Power unit (e.g., "W")
  • percent (int): Percentage value
  • e_today (float): Today's energy production in kWh
  • e_total (float): Total lifetime energy production in kWh
  • fault_dev_num (int): Number of faulty devices
  • normal_dev_num (int): Number of normal devices
  • offline_dev_num (int): Number of offline devices
  • wait_dev_num (int): Number of devices waiting
  • total_co2 (int): Total CO2 savings
  • total_tree (float): Equivalent trees planted

PlantData

Data class containing individual plant information.

Attributes

  • city (str): Plant location city
  • country (str): Plant location country
  • e_today (float): Today's energy production
  • e_total (float): Total energy production
  • eid (int): Equipment ID
  • kwhimp (int): kWh import
  • micro (int): Micro inverter count
  • plant_id (str): Unique plant identifier
  • plant_name (str): Plant name
  • plant_type (str): Plant type
  • power (int): Current power
  • status (str): Plant status

Exceptions

  • HyponCloudError: Base exception for all library errors
  • AuthenticationError: Authentication failed (invalid credentials)
  • ConnectionError: Connection to API failed
  • RateLimitError: API rate limit exceeded

Development

Setup Development Environment

# Clone the repository
git clone https://github.com/jcisio/hyponcloud.git
cd hyponcloud

# Install development dependencies
pip install -e ".[dev]"

Running Tests

pytest

Code Formatting

ruff check .
ruff format .

Type Checking

mypy hyponcloud

Requirements

  • Python 3.11+
  • aiohttp 3.8.0+

License

This project is licensed under the MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Disclaimer

This library is not officially associated with or endorsed by Hypontech. Use at your own risk.

Support

For issues, questions, or contributions, please visit the GitHub repository.

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

hyponcloud-0.1.1.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

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

hyponcloud-0.1.1-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file hyponcloud-0.1.1.tar.gz.

File metadata

  • Download URL: hyponcloud-0.1.1.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for hyponcloud-0.1.1.tar.gz
Algorithm Hash digest
SHA256 193e034a2f39aa914ab9dc937f80d7cd29e1e31fad24c2f54535f950685d7b62
MD5 e249ae98a5ac99dd7c9d08f4c89cc714
BLAKE2b-256 86030ebb5f388f672f92b94689c344232b6913e97f2cc7c0e7a7a2fa5dd53d6d

See more details on using hashes here.

File details

Details for the file hyponcloud-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hyponcloud-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for hyponcloud-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b98b66d10a81f5d83d3918761f06f410c9f2c1ed465d5ad0f7aee7719d116714
MD5 55934cacae51af95899a58e5912c8e88
BLAKE2b-256 0e2d34b640364e23fddd5ae31ab29910b9d15cf901d48999b8b58fc3c37e701d

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