A private solar dashboard with live power, energy history, and individual-panel monitoring for SunPower PVS6.
Website · Live demo · Installation · Dashboard tour · Compatibility · FAQ · Documentation · Acknowledgements
SunPower Monitor helps you see what your solar system is doing now, how its energy use changes over time, and how each panel performs. It reads your PVS6 on the home network, records history, and serves a dashboard you can open on a computer or phone, including when you are away from home.
A small collector runs on your Raspberry Pi, NAS, or Linux host. Your own Cloudflare account stores the readings and hosts the dashboard; GitHub login limits access to the people you allow. Collection is read-only and does not require a SunPower cloud account.
All screenshots show the actual dashboard with simulated readings, not household data. View the mobile screenshot.
The hardware-verified configuration is SunPower PVS6 firmware 2025.10.20.61846, without a battery. The installer performs a read-only device check before starting collection. Other PVS6 builds and newer PVS5 gateways using the official varserver API are compatibility candidates: the collector accepts the documented response formats and checks available fields, without restricting collection to one firmware number. PVS5 has not been hardware-verified here. PVS2, other vendors, and battery systems remain outside the supported installation path. See compatibility evidence and the read-only check.
The collector must reach the PVS over your LAN. It handles the verified firmware's local authentication; it does not commission the system, provision devices, or change PVS settings. Home and grid readings depend on your installed consumption current transformers (CTs); see the CT coverage and calibration guide.
| You need | Purpose |
|---|---|
| A PVS6 reachable on the collector's LAN | Supplies the measurements |
| An always-on ARM64 or AMD64 Linux host with Docker | Runs the collector and installer |
| A Cloudflare account with Workers and D1 | Hosts the private dashboard and history |
| A GitHub account and OAuth App | Signs allowed users into the dashboard |
You can use Cloudflare's workers.dev address without a custom domain. Home Assistant and a separate database server on the collector host are not required.
Source code and the v0.1.0 Release installer are public. The collector image is still private, so automated installation is not available yet. Follow the manual installation guide to build or run from source.
For a published version, follow the Quick Start:
-
Download
install.shandSHA256SUMSfrom the same GitHub Release onto the collector host. -
Verify the installer and run it in that host's terminal:
sha256sum --check --ignore-missing SHA256SUMS && bash install.sh -
Follow the browser prompts to authorize Cloudflare, register the GitHub OAuth App, and verify dashboard login.
-
Enter the PVS LAN address and let the installer check the device and start the collector.
The Release installer fixes the source commit and collector image digest; Docker selects the host architecture. Keep the collector-host terminal open while completing browser tasks on your computer or phone. Your personal computer needs only a browser.
For an existing installation, follow Operations before upgrading so that credentials, queued records, and stored history are preserved.
The Live page shows solar production, estimated home load, and grid direction together. Positive grid power means import; negative grid power means export. The chart lets you inspect the last hour, day so far, daylight, or a selected time range.
Readings include freshness information. A stale or missing sample is not presented as a new reading. Optional weather and daylight context come from Open-Meteo and remain separate from measured power.
Explore a day, week, month, year, or exact time range. Switch between power in kW and energy in kWh, inspect individual windows, and see the sources and destinations of energy. History starts when your collector begins recording; the dashboard does not retrieve earlier SunPower cloud history.
Site energy totals are estimates from valid power samples. Missing intervals stay visible instead of becoming zero consumption or production. Weather overlays can help compare sunny and cloudy periods.
Select a panel or compare the array, inspect recorded five-minute samples, and view daily production for a selected panel. The display distinguishes panels producing now, finished for the day, without production, and not reporting while the rest of the array reports.
| Available diagnostic | Meaning |
|---|---|
| AC power | Microinverter output |
| DC power, voltage, and current | Panel-side readings |
| AC voltage and current | Inverter-side readings |
| Heatsink temperature | Reported inverter temperature |
| Recorded energy | Stored cumulative-counter readings and their coverage |
Diagnostics appear when the PVS supplies a valid value. A panel that stops reporting may have a device problem or a failed read; the dashboard cannot determine the cause from missing data alone.
Optional iPhone alerts with Bark. SunPower Monitor detects missing or invalid site readings; Bark delivers the phone notifications. After ten minutes of missing or invalid readings, you receive one alert for the ongoing fault. Three consecutive normal background checks trigger a recovery notification.
Notifications are off by default. Enable them after installing your dashboard:
- Install Bark on your iPhone, allow notifications, and copy your own device Key from the app.
- Sign in to your dashboard and open Settings → Phone notifications. Paste the Key (not the full push URL) and select Test and enable.
- Confirm that SunPower notification test arrives on your phone. Settings shows Enabled and, once the first scheduled check completes, Background checks: Running. Monitoring continues when you close the webpage.
The dashboard stores your Key encrypted and checks readings every minute. This optional setup adds no install.sh steps. See the Bark notification guide for Key examples, delivery limits, and the database/Worker upgrade required for existing installations.
Set the site's location and time zone for daylight and local-date views. Display calibration can correct a verified, stable grid-reading ratio after comparison with utility-meter data. It adjusts the displayed grid reading and corresponding home-load estimate, preserves raw records, and leaves solar production unchanged. See the calibration procedure before changing the ratio.
PVS6 on your LAN → Collector + local SQLite queue → Cloudflare Workers + D1
↓
Private browser dashboard
Only the collector contacts the PVS. It uploads over outbound HTTPS, so remote viewing does not require opening an inbound route to your home network. Recorded history queues locally during an Internet outage and retries when connectivity returns; live snapshots resume with current readings. The architecture guide describes the data flow and authentication boundaries.
Can I use it without installing anything first? Yes: open the read-only live demo. It uses the same dashboard code with simulated readings, without a PVS, Cloudflare deployment, account, or household data. Developers can also preview it locally.
Does it run entirely offline? PVS collection happens locally, but the hosted dashboard requires Cloudflare and an Internet connection. Historical records queue on the collector during a connection outage. Latest live snapshots are not replayed as history.
Can I view my system while away from home? Yes, through your Cloudflare-hosted dashboard after GitHub login. Access is limited by the configured GitHub user allowlist.
Why do home consumption or grid readings differ from my utility meter? CT coverage, sample timing, and the distinction between instantaneous power and interval energy can affect the comparison. A stable proportional error may be suitable for display calibration; a missing electrical branch cannot generally be recovered with one fixed ratio. Start with the CT guide.
Can I use this to identify a failed panel? Panel comparisons and history help investigate unusual output, but shading, night, device faults, and failed reads can produce similar symptoms. Check the available measurements and their timestamps before treating a display state as a diagnosis.
Do I need Home Assistant? No. This collector and dashboard work independently. Home Assistant integrations and other community approaches are listed in References.
| Looking for | Read |
|---|---|
| Directory structure and script topics | Project layout |
| Setup and first readings | Quick Start |
| Workstation deployment or a direct Python service | Manual installation, Operations |
| Updates and redeployment | Upgrade steps |
| Backups and recovery | Operations |
| Optional iPhone alerts configured from Settings | Bark phone notifications |
| Collector, cloud, and authentication design | Architecture |
| CT coverage and display calibration | CT guide |
| Simulated dashboard for local development | Preview |
The documentation index also links the bilingual introduction, comparison, and technical references.
The security review records the source review, fixes, automated checks, and their limits. GitHub Actions is configured to run dependency auditing, Semgrep, and Gitleaks on pull requests, main updates, and weekly. The release workflow requires those checks before publishing artifacts. These checks passed for the v0.1.0 release. The badge shows the latest main-branch results; passing checks are not a security certification.
Keep deployment credentials and household telemetry private. Use GitHub private vulnerability reporting when enabled, and avoid posting sensitive details in public issues.
See CONTRIBUTING.md for setup, checks, and pull requests. You can work on the dashboard using simulated readings without a PVS or production Cloudflare account.
This project benefited from the work shared by the following project owners and their contributors. Thank you for documenting local PVS access, sharing collector implementations and dashboard designs, and providing phone notification delivery.
| Project | Project owner | Contribution to this project |
|---|---|---|
| PyPVS and local API documentation | SunStrong Management | Official protocol reference for authentication, session cookies, queries and request pacing; PVS5/PVS6 field contracts and documented response formats informed the collector's compatibility handling. |
| sunpower-monitor | karak2112 | Primary reference for 61846 authentication, focused varserver queries, parser behavior and tests; also reviewed for dashboard presentation. |
| SunPower-PVS-Supervisor | steveturbek | PVS field examples, inverter AC-power interpretation and cumulative-energy readings. |
| PVS Watch | timkatz | Missing-energy semantics, nighttime behavior, session renewal and panel-chart references. |
| ha-esunpower | smcneece | Newer-firmware handling, temporary missing-inverter behavior and AC/DC field separation. |
| SunPower Web Monitor | thomastech | Newer-firmware authentication proxy and current-reading dashboard reference. |
| pvs6-liberation | jschwerdtfeger | Local API documentation and examples used for protocol checks. |
| dash-sunpower | strawtype | Historical replay and panel-layout ideas. |
| Solar Sentinel | smcneece | Panel matrix, daylight arc, time slider and individual-panel history design references. |
| SOLECTRUS | SOLECTRUS community | Additional solar-dashboard presentation reference. |
| Bark | Finb | Open-source iOS app and push API used to deliver optional alert and recovery notifications. |
See References for the detailed comparisons, reviewed source revisions and recorded licenses, and Bark's documentation for its app and push API.
Maintained by CrabTY. If the project is useful to you, you can support its development on Ko-fi.
Project code and original documentation are MIT licensed. Third-party components retain their own license notices. Optional weather data is subject to Open-Meteo's service terms.


