Skip to content

EVWorth/solaredge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SolarEdge Client (Monitoring API)

Documentation Status Test coverage percentage

UV Ruff pre-commit

PyPI Version Supported Python versions License

A Python client for the SolarEdge Monitoring API, providing both synchronous and asynchronous interfaces for accessing solar energy data.

See https://www.solaredge.com/sites/default/files/se_monitoring_api.pdf

Table of Contents

Features

  • Sync & Async Support: Choose between MonitoringClient (sync) and AsyncMonitoringClient (async)
  • Full API Coverage: All monitoring endpoints supported
  • Type Hints: Complete type annotations for better IDE support
  • Rate Limiting: Built-in awareness of API limits (3 concurrent requests)
  • Context Manager Support: Automatic resource cleanup

Installation

pip install solaredge
poetry add solaredge
uv add solaredge

Quick Start

Synchronous Usage

from solaredge import MonitoringClient

# Basic usage
client = MonitoringClient(api_key="YOUR_API_KEY")
sites = client.get_site_list()
client.close()

# Context manager (recommended)
with MonitoringClient("YOUR_API_KEY") as client:
    site_details = []
    sites = client.get_site_list()
    for site in sites['sites']['list']:
        site_details.append(
            client.get_site_details(
                site_id=site['id'],
            )
        )

Asynchronous Usage

import asyncio
from solaredge import AsyncMonitoringClient

async def main():
    async with AsyncMonitoringClient(api_key="YOUR_API_KEY") as client:
        sites = await client.get_site_list()
        
        # Concurrent requests (respecting 3 concurrent limit)
        tasks = []
        for site in sites['sites']['list']:  
            task = client.get_site_details(site_id=site['id'])
            tasks.append(task)
        
        site_details = await asyncio.gather(*tasks)

asyncio.run(main())

Rate Limiting & Best Practices

  • Daily limit: 300 requests per API Key and per site ID
  • Concurrency: Maximum 3 concurrent requests from same IP
  • Bulk operations: Up to 100 site IDs per bulk request

for more information see page 8 of the api documentation

Development

# Install development dependencies
uv sync
uv run pre-commit install -t commit-msg
# Commiting changes
uv run cz c

API Documentation

For detailed API documentation including all parameters and response formats, see:

About

API Client for SolarEdge monitoring API, build on httpx.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Languages