Skip to main content

Python client for the Sol-Ark Cloud API

Project description

pysolark

pysolark is a Python client for the Sol-Ark Cloud API.

This library is intentionally validation-first and currently optimized for near-real-time visibility. Sol-Ark publishes very little public API documentation, so the current framework focuses on endpoints confirmed by direct login tests against https://api.solarkcloud.com and by inspecting the mysolark.com frontend bundle.

Validated API areas in the current near-real-time-focused cut:

  • POST /oauth/token
  • GET /api/v1/user
  • GET /api/v1/plant/{id}
  • GET /api/v1/plant/{id}/realtime
  • GET /api/v1/plant/energy/{id}/flow
  • GET /api/v1/plant/energy/{id}/generation/use
  • POST /api/v1/plant/{id}/contacts
  • GET /api/v1/plants/map
  • GET /api/v1/version/latest
  • GET /api/v1/batteries/count
  • GET /api/v1/inverters/count

Additionally, the library exposes raw_get() so we can continue exploring undocumented endpoints safely while still surfacing Sol-Ark envelope errors as SolArkAPIError.

Install

pip install pysolark

Quick start

from pysolark import SolArkClient

client = SolArkClient(username="you@example.com", password="***")
client.login()

plant_id = 123456  # replace with your Sol-Ark plant ID
plant = client.get_plant(plant_id)
realtime = client.get_plant_realtime(plant_id)
flow = client.get_plant_energy_flow(plant_id)
usage = client.get_plant_generation_use(plant_id)
contacts = client.get_plant_contacts(plant_id)
plants_map = client.get_plants_map()
latest_version = client.get_latest_version()
battery_count = client.get_batteries_count()
inverter_count = client.get_inverters_count()

print(plant.name)
print(realtime.pac)
print(flow.soc)
print(usage.grid_sell)
print(contacts.updated_at)
print(plants_map[0].plant_id if plants_map else None)
print(latest_version.version)
print(battery_count.total, inverter_count.total)

Live smoke check

SOLARK_ENV_FILE=/path/to/solark-cloud.env ./examples/live_authenticated_smoke.sh

Expected output is JSON summarizing a real authenticated pass across the currently validated near-real-time endpoints.

Notes

Observed authentication behavior:

  • login succeeds with JSON body fields grant_type=password, username=<email>, and password=<password>
  • the API returns a JSON envelope with code, msg, data, and often success
  • nonzero code values should be treated as API-level failures even when the HTTP status is 200

Observed documentation gap:

  • some endpoints referenced by the frontend still returned 400, 404, or No Permissions during exploration
  • this repo should expand only as additional endpoints are actually validated against live responses

Development

uv venv .venv
. .venv/bin/activate
uv pip install -e '.[dev]'
python -m pytest -q

PyPI-ready validation

. .venv/bin/activate
python -m build
python -m twine check dist/*

Roadmap

  • Keep the client centered on near-real-time plant, flow, battery, and device-status visibility
  • Add convenience helpers for exporter-friendly near-real-time telemetry shaping
  • Revisit historical/day-month-year data pulls later, after the near-real-time surface is stable

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

pysolark-0.1.0.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

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

pysolark-0.1.0-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file pysolark-0.1.0.tar.gz.

File metadata

  • Download URL: pysolark-0.1.0.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pysolark-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a4bc72bea35ad3ddc82b5d450cbb0b0331e1f906751e33230e756d3346569fce
MD5 21aaa73a901133100d9ffa633af45388
BLAKE2b-256 5d50ba81fa789e8a37da9ed618a2b46020834259faa531a33cc025bb19b77fd3

See more details on using hashes here.

File details

Details for the file pysolark-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pysolark-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pysolark-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4504dee75b869f331fb170c303d1780c5728623b9d3d5b88269cc9b699acf1b6
MD5 a5940fa79b6fec6fe83527e2b5a46826
BLAKE2b-256 323de9989f26626b4f015150c5da324b86434178b71a1a59e2100bc26f2c65c4

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