Metadata-Version: 2.4
Name: sunpeek
Version: 0.7.11
Summary: Large Solar Thermal Monitoring Tool. Implements the Power Check Method of ISO 24194
License-Expression: LGPL-3.0-only
License-File: COPYING
License-File: COPYING.LESSER
Keywords: solarthermal,solar,energy,monitoring
Author: Philip Ohnewein, Daniel Tschopp, Lukas Emberger, Marnoch Hamilton-Jones, Jonathan Cazco, Peter Zauner
Maintainer: Marnoch Hamilton-Jones
Maintainer-email: m.hamilton-jones@sunpeek.org
Requires-Python: >=3.11, <3.14
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Provides-Extra: all
Provides-Extra: api
Provides-Extra: db
Provides-Extra: demo
Requires-Dist: alembic ; extra == "all"
Requires-Dist: alembic ; extra == "db"
Requires-Dist: coolprop
Requires-Dist: ephem
Requires-Dist: fastapi (>=0.92) ; extra == "all"
Requires-Dist: fastapi (>=0.92) ; extra == "api"
Requires-Dist: httpx ; extra == "all"
Requires-Dist: httpx ; extra == "api"
Requires-Dist: lxml
Requires-Dist: matplotlib (>=3.7)
Requires-Dist: metpy
Requires-Dist: numpy (>=2)
Requires-Dist: orjson
Requires-Dist: pandas (>=2)
Requires-Dist: parquet-datastore-utils (>=0.1.14)
Requires-Dist: pendulum (>=3.0.0)
Requires-Dist: pint (>=0.22)
Requires-Dist: pint-pandas (>=0.2)
Requires-Dist: protobuf
Requires-Dist: psycopg[binary] (>=3) ; extra == "all"
Requires-Dist: psycopg[binary] (>=3) ; extra == "api"
Requires-Dist: psycopg[binary] (>=3) ; extra == "db"
Requires-Dist: pvlib
Requires-Dist: pydantic (>=2)
Requires-Dist: pypdf (>=6)
Requires-Dist: pyperclip (>=1.8.2)
Requires-Dist: pyproj
Requires-Dist: python-dotenv
Requires-Dist: python-multipart ; extra == "all"
Requires-Dist: python-multipart ; extra == "api"
Requires-Dist: scikit-learn
Requires-Dist: scipy (>=1.16)
Requires-Dist: sqlalchemy (>=2)
Requires-Dist: sqlalchemy-utils
Requires-Dist: statsmodels
Requires-Dist: sunpeek-exampledata ; extra == "all"
Requires-Dist: sunpeek-exampledata ; extra == "demo"
Requires-Dist: timezonefinder (>=8)
Requires-Dist: trio
Requires-Dist: uvicorn[standard] ; extra == "all"
Requires-Dist: uvicorn[standard] ; extra == "api"
Requires-Dist: yamlloader
Project-URL: Documentation, https://docs.sunpeek.org
Project-URL: Repository, https://gitlab.com/sunpeek/sunpeek
Description-Content-Type: text/markdown

![Logo_Transparent_wide.svg](https://gitlab.com/sunpeek/sunpeek/-/raw/main/sunpeek/static_assets/logos/svg/SunPeek_Logo_dark.svg?inline=false)

# About SunPeek

![Supported Python](https://img.shields.io/pypi/pyversions/sunpeek)
[![Docker Image Version (latest semver)](https://img.shields.io/docker/v/sunpeek/sunpeek?label=image&logo=docker&sort=semver)](https://hub.docker.com/r/sunpeek/sunpeek)
[![PyPI](https://img.shields.io/pypi/v/sunpeek?logo=PyPi&logoColor=yellow)](https://pypi.org/project/sunpeek/)

SunPeek implements a dynamic, in situ test methodology for large solar thermal plants, packaged as an open source software application and Python library. It includes the first open source implementation of the ISO 24194 Power Check procedure for verifying the performance of solar thermal collector fields.

## What SunPeek is Used For

SunPeek can be applied to solar thermal plants *in operation* when measurement data is available. The following use cases are supported:

- **Performance Assessment**:
  SunPeek estimates the expected power output of solar thermal collector fields based on certified collector parameters (ISO 9806) and measured operating conditions. The estimated power in certain valid intervals (criteria defined in ISO 24194) is compared with measured power to assess whether the plant works as expected. This can be used for quality assurance, performance guarantees, or acceptance testing.

- **Performance Monitoring**:
  By continuously computing the ratio of measured versus estimated power over time, SunPeek enables identification of performance degradation, anomalies, and maintenance needs. This is particularly valuable for detecting the effects of collector soiling and verifying the impact of cleaning operations.

For detailed information about the Power Check methodology and workflow, see the [Power Check FAQs](https://docs.sunpeek.org/quick_start/overview/power_check_faq.html).

## Who SunPeek is For

SunPeek is designed for solar thermal plant operators, performance engineers, researchers, and equipment manufacturers. Serving as the reference software implementation of ISO 24194, it makes professional-grade solar thermal testing accessible, transparent, and auditable for everyone—from large commercial installations to smaller systems and developing markets.

## Handling Real-World Conditions

Unlike idealized lab testing, SunPeek handles real-world operational challenges including data gaps, sensor failures, diverse collector configurations, varying measurement setups, and complex plant hydraulics. The software implements comprehensive data validation, automated quality checks, and flexible sensor mapping to work with the data you actually have.

## Flexible Deployment

SunPeek is available in two complementary forms:

- **Web Application**, the [SunPeek WebUI](https://gitlab.com/sunpeek/web-ui): A complete, containerized web interface that makes configuration and ongoing monitoring of one or several solar thermal plants simple and intuitive. Designed for plant operators and engineers who need a ready-to-use solution accessible from any browser, with guided plant configuration, interactive data visualization, and automated report generation.

- **Python Library**, in this repository: Direct programmatic access to all SunPeek functionality for researchers, automation workflows, and integration into other tools. Enables custom analysis, algorithm development, and flexible data processing pipelines.

Both modes use the same underlying calculation engine, ensuring consistent and reproducible results across deployment types.

## Resources

| Resource                         | Link                                                                                          |
|----------------------------------|-----------------------------------------------------------------------------------------------|
| **Documentation & Installation** | [docs.sunpeek.org](https://docs.sunpeek.org)                                                  |
| **Website**                      | [sunpeek.org](https://sunpeek.org)                                                            |
| **SunPeek FAQs**                 | [SunPeek Overview](https://docs.sunpeek.org/quick_start/overview/sunpeek_faq.html)           |
| **Publications**                 | [Zenodo community](https://zenodo.org/communities/sunpeek)                                    |


## License and Copyright

Except where specifically noted otherwise, SunPeek is made available under the GNU Lesser General Public License. This means
that you can use the software, copy it, redistribute it and include it in other software, including commercial, proprietary
software, for free, as long as you abide by the terms of the GNU GPL, with the exceptions provided by the LGPL. In particular,
if you redistribute a modified version of the software, you must make the source code of your modifications available, and
if you include the software in another piece of software or physical product, you must give users notice that SunPeek is
used, and inform them where to obtain a copy of the SunPeek source code and license.

Note that the [SunPeek WebUI](https://gitlab.com/sunpeek/web-ui) is covered by a separate license, the BSD-3-Clause, see:
[BSD-3-Clause](https://opensource.org/licenses/BSD-3-Clause)

For copyright and license information, see:
* [AUTHORS.md](AUTHORS.md) - Copyright holders
* [NOTICES.md](NOTICES.md) - License notices and third-party attributions
* [COPYING.LESSER](COPYING.LESSER) and [COPYING](COPYING) - License text

## Contributing

Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for developer setup instructions.

