Poll SolaxCloud and upload the latest inverter data to PVOutput.
PVOutput API: https://pvoutput.org/help.html#api-addstatus
SolaxCloud API: https://www.solaxcloud.com/#/api
- Create and activate a virtual environment.
- Install the project in editable mode:
pip install -e .[dev]- Copy
config.example.ymlto one of these locations:
%APPDATA%\\SolaxToPVOutput\\config.ymlon Windows~/.config/solaxtopvoutput/config.ymlon Linux and macOS./config.ymlin the repo as a local fallback
- Fill in your real values or provide the secrets through environment variables.
- Run a single sync for validation:
solaxtopvoutput --once- Run the long-lived polling process:
solaxtopvoutputYou can always override the config path explicitly:
solaxtopvoutput --config path/to/config.ymlThe app checks config files in this order:
SOLAXTOPVOUTPUT_CONFIGif set- the per-user config file
./config.yml
SolaxToPVOutput:
logLevel: "WARNING"
pollIntervalSeconds: 300
logFile: "solaxtopvoutput.log"
SolaxCloud:
apiUrl: "https://global.solaxcloud.com"
tokenId: "your-solax-token"
registrationNr: "your-wifi-registration-number"
PVOutput:
systemid: 123456
apikey: "your-pvoutput-api-key"
SunWindow:
enabled: false
latitude: 52.1326
longitude: 5.2913
timezone: "Europe/Amsterdam"
startEvent: "sunrise"
endEvent: "sunset"Relative logFile paths are resolved relative to the selected config file.
Issue #3 requested limiting checks to solar-active hours. When SunWindow
is enabled, the app only polls between the configured start and end solar
markers using astral.
Supported events:
startEvent:dawnorsunriseendEvent:sunsetordusk
Outside the active window, the app skips API calls and sleeps until the next window opens.
Successful polls run at the configured interval. Repeated failures back off progressively up to 5x the configured interval, then return to the normal cadence after a successful sync.
These environment variables override YAML values when set:
SOLAXTOPVOUTPUT_CONFIGSOLAXTOPVOUTPUT_LOG_LEVELSOLAXTOPVOUTPUT_POLL_INTERVAL_SECONDSSOLAXTOPVOUTPUT_LOG_FILESOLAXCLOUD_API_URLSOLAXCLOUD_TOKEN_IDSOLAXCLOUD_REGISTRATION_NRPVOUTPUT_SYSTEM_IDPVOUTPUT_API_KEY
For normal operation, keep non-secret defaults in YAML and provide secrets through environment variables.
On Linux the default user config path is:
~/.config/solaxtopvoutput/config.ymlThe long-running process now handles SIGTERM cleanly, so it behaves well
under systemd, Docker, and other service managers.
Typical Linux setup:
python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
pytest
solaxtopvoutput --onceRun formatting, linting, and tests with:
black src tests
ruff check src tests
pytest