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.2.tar.gz (12.4 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.2-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hyponcloud-0.1.2.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hyponcloud-0.1.2.tar.gz
Algorithm Hash digest
SHA256 6306390541417b87bc0d644d9fe4b2d6a6b327814676a9e1663183f48a71c11b
MD5 5dff46ddacbc10b32642b4b78674097a
BLAKE2b-256 2980181c1614aa6553c8c93f9c0d32803936de15dd977f3a170ead51ae0f5806

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyponcloud-0.1.2.tar.gz:

Publisher: publish.yml on jcisio/hyponcloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: hyponcloud-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hyponcloud-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9fced557261e4fb7a39a71d37a6f1199884c15eec9082f66546f171698317187
MD5 52bb6fd55dfc493b1c0a778aad95d744
BLAKE2b-256 03c37e999398713ef081100a51ad0216f733ca440211fa735e0bd14f69366d54

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyponcloud-0.1.2-py3-none-any.whl:

Publisher: publish.yml on jcisio/hyponcloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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