Automated scraper and reporting tool that collects solar energy data from Solax Cloud and CEZ Distributor portals and sends periodic email summaries.
SolaxStatistics logs into the Solax Cloud portal and the CEZ Distributor PND portal to pull energy production, consumption, and grid exchange data. It fetches quarter-hour spot electricity prices from spotovaelektrina.cz, calculates costs and earnings, and sends scheduled email reports. Complements SolaxAutomation, which handles real-time inverter control.
- Scrapes Solax Cloud for production and consumption history
- Pulls import/export meter readings from CEZ Distributor
- Fetches quarter-hour (15-minute) spot electricity prices from spotovaelektrina.cz
- Calculates energy costs, earnings, and net balance per quarter hour
- Exports an Excel summary with Quarterly, Hourly, Daily, Monthly and Yearly sheets
- Sends email reports via SMTP in English or Czech, including the 10 best export days of the month
- Daily log rotation with compression
- Java 21+
- Maven 3.x
- Google Chrome (the Solax and CEZ portals are scraped with Selenium)
- Solax Cloud account
- CEZ Distributor account
- SMTP server for outbound email
-
Clone the repository:
git clone https://github.com/Firestone82/SolaxStatistics.git cd SolaxStatistics -
Fill in your credentials and SMTP settings in
src/main/resources/application.yml(Solax Cloud login, CEZ login, meter ID, tariff prices, email sender/recipient). Setemail.enabled: trueto send the summary email (off by default);email.recipientslists each address with the template it gets,energy-report.html(English) orenergy-report-cs.html(Czech).solax.headlessandcez.headlesschoose whether Chrome runs without a window. When a scraper fails, it logs the page it stopped on and saves a screenshot next to its downloads. -
Build the project:
mvn clean package -DskipTests
-
Run:
java -jar target/*.jarDownloaded data and summaries are stored in the
datadirectory, in a folder per year (e.g.data/summary/2025/summary_2025-09.xlsx); files left directly indata/<source>/by older versions are moved there on startup.On startup it processes the previous month. To process other months, set
summary.from/summary.to(yyyy-MM) inapplication.ymlor pass them as arguments, e.g.java -jar target/*.jar --summary.from=2025-09 --summary.to=2025-12.
This project is provided as-is for personal use. No warranty is offered.