solaredge-web
A python client library for SolarEdge Web. Fetches energy data for each inverter/string/module via the web API and not via the official API which doesn't expose this data.
Usage
import aiohttp
from solaredge_web import SolarEdgeWeb
async with aiohttp.ClientSession() as session:
client = SolarEdgeWeb(username, password, site_id, session)
# --- site facts (all cached until the next login) ---
equipment = await client.async_get_equipment() # inverters, strings, optimizers
components = await client.async_get_site_components() # hasConsumptionAndGrid, hasStorage, ...
information = await client.async_get_site_information() # peakPower, siteTimeZone, ...
availability = await client.async_get_data_availability()
details = await client.async_get_site_details()
summary = await client.async_get_site_equipment_summary()
communication = await client.async_get_communication_status()
# --- energy ---
# Hourly per optimizer/string/inverter/site, derived from playback power.
energy = await client.async_get_energy_data()
# Measured totals per device over a date range, no time series.
totals = await client.async_get_energy_totals()
# Measured site energy per slot: hours, days, months or years.
site_energy = await client.async_get_site_energy(resolution="days")
site_total = await client.async_get_site_energy_total()
# Measured energy per slot for specific optimizers (one request per optimizer).
optimizer_energy = await client.async_get_optimizer_energy(["7A012345-CA"])
inverter_energy = await client.async_get_inverter_energy_totals()
comparative = await client.async_get_comparative_energy("monthly")
# --- production and consumption ---
# quarter-hours, hours, days, months or years.
consumption = await client.async_get_consumption_data(resolution="hours")
storage = await client.async_get_storage_energy_distribution()
# --- power ---
live = await client.async_get_live_power()
site_power = await client.async_get_site_power()
inverter_power = await client.async_get_inverter_power()
# --- per-device diagnostics ---
optimizers = await client.async_get_optimizer_data() # live W, V, A per optimizer
inverters = await client.async_get_inverter_data() # live readings and firmware
temperatures = await client.async_get_optimizer_temperatures() # max degrees C
# --- everything else ---
weather = await client.async_get_weather()
benefits = await client.async_get_environmental_benefits()
alerts = await client.async_get_alerts()
All energy values are in Wh, power in W, temperatures in degrees Celsius.
Timestamps are naive datetimes in the site's local time, whose IANA name is
siteTimeZone from async_get_site_information. The one exception is
last_measurement on OptimizerData and InverterData, which is an aware UTC
datetime because those endpoints report a real UTC instant.
Consumption, grid import and grid export require a consumption meter: without
one (hasConsumptionAndGrid is false) those fields are None rather than zero.
Each resolution has its own range limit, and the API answers HTTP 400 beyond it. The library warns before making such a request; see the method docstrings for the limits.
Endpoints that report a payload with no fixed shape - site details, weather, alerts and similar - are returned as-is rather than modelled, since their fields vary by account type, storage and metering.
Development environment
python3 -m venv .venv
source .venv/bin/activate
# for Windows CMD:
# .venv\Scripts\activate.bat
# for Windows PowerShell:
# .venv\Scripts\Activate.ps1
# Install dependencies
python -m pip install --upgrade pip
python -m pip install -e .
# Run pre-commit
python -m pip install pre-commit
pre-commit install
pre-commit run --all-files
# Run tests
python -m pip install -e ".[test]"
pytest
# Build package
python -m pip install build
python -m build
Release files for solaredge-web 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| solaredge_web-0.5.0.tar.gz | 41.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| solaredge_web-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 72.5 kB
Release files / solaredge_web-0.5.0.tar.gz
| Download URL | solaredge_web-0.5.0.tar.gz |
|---|---|
| Size | 41.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
110d442a88939721f9cfa3da462b235457bdb82430ecfc892c046f6bf8a690ed
|
|
BLAKE2b-256 checksum How to use checksums |
11e80ccd22db5234f8c240f6b77912826859d0c4a145c4cd1d01398c80ad98bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logRelease files / solaredge_web-0.5.0-py3-none-any.whl
| Download URL | solaredge_web-0.5.0-py3-none-any.whl |
|---|---|
| Size | 30.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a7723982d595581afe9404da4e78a29e9ab4f0f0294119cb3f132ca8c2d5c07b
|
|
BLAKE2b-256 checksum How to use checksums |
172a6ec0fb869d0bd73813dd6d20eea4448cfe38264411e18a57e9eaddcdfb85
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency log