Authority: SunStrong Management's maintained pypvs repository and
doc/LocalAPI.md, reviewed 2026-07-23.
Example tested firmware family: modern PVS6 Varserver firmware.
GET http://<private-ip>/vars?name=/sys/info/sw_revGET https://<private-ip>/auth?login
Authorization: Basic <ssm_owner:last-five-serial-characters>Successful login returns a session cookie. Logout is
GET /auth?logout. Authenticated reads use the cookie.
/vars?name=<absolute-var-paths>
/vars?match=<substring>&fmt=obj
/vars?tag=<tag>&fmt=obj
/vars?cache=<cache-id>&fmt=obj
Repeated match/tag reads should create and then reuse cache identifiers. Polling must not be faster than every few seconds. HelioSlate defaults to ten seconds.
Discovery starts with:
match=livedatamatch=metermatch=inverter
The tested modern firmware exposes meter data as flattened
variables such as /sys/devices/meter/0/p3phsumkw, rather than the object-valued
/sys/devices/<id>/meter/data shape in the published example. It also returns
HTTP 400 when a match has no results. HelioSlate supports both shapes and treats
an empty optional device match as an empty device collection.
Device identifiers and field meanings are not assumed. Raw values are retained until daylight/nighttime and energy-balance evidence establishes units and sign semantics.
| Raw path/field | Unit | Normalized meaning | Confidence | Evidence |
|---|---|---|---|---|
/sys/info/sw_rev |
text | firmware | verified | Public gateway response |
/sys/livedata/pv_p |
unknown pending capture | solar power candidate | documented, unverified locally | SunStrong sample |
/sys/livedata/site_load_p |
unknown pending capture | home load candidate | documented, unverified locally | SunStrong sample |
/sys/livedata/net_p |
unknown pending capture | grid exchange candidate | documented, sign unknown | SunStrong sample |
No production meter, consumption meter, or grid sign has been assigned yet.