Finding faults in residential solar systems without a site visit
3S wanted to know when a customer's PV system produces less than it should, and why, using only the power data the system already sends. We built the analytics platform that does this every night.
- Fault detection and diagnosis engine. Physical PV modelling with pvlib and horizon profiles, a clear-sky day classifier, trend analysis and stuck-value checks. Each loss is checked against weather, snow and hail data before it is reported.
- Performance Loss Rate (PLR). Multi-year, year-on-year degradation analysis, recalculated every month.
- Public REST API. Endpoints for performance, trends, outliers, hail history and daily hail risk, with scoped API keys and per-scope rate limits.
- Data pipelines. PV data arrives through AWS SQS every 30 minutes. Weather, irradiance, snow and precipitation come from several providers. Celery runs the nightly jobs.
- Regression baselines. Reference systems with pinned results, so a library upgrade or algorithm change never moves the numbers by accident.
- Python
- FastAPI
- SQLAlchemy
- PostgreSQL
- Celery
- Redis
- pvlib
- pandas
- scikit-learn
- AWS SQS · RDS · ECS
- Docker