Awesome
PVConsumer
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> <!-- ALL-CONTRIBUTORS-BADGE:END -->Consumer PV data from pvoutput.org
and SheffieldSolar
. The idea is to expand to different data sources in the future.
Live
This application pulls live data from PV output.org and stores it in a database
Dependencies
Run locally
To run the application locally
# Install the python dependencies
poetry install
poetry run pvconsumer/app.py
Logic
The app has the following high-level strucuture
graph TD;
A[1. Get PV system]-->B;
B[2. Filter PV Systems]-->C;
C[3. Pull Data]-->D[4. Save data];
- Get PV System
graph TD
A0(Start) --> A1
A0(Start) --> A2
A1[Load local PV systems] --> A3{Are all PV system in the database}
A2[Load Database PV systems] --> A3
A3 --> |No| A4[Load the extra <br/> PV systems from pvoutput.org]
A3 --> |yes| A5(Finish)
A4 --> A5
- Filter PV Systems
graph TD
B0(Start) --> B1{Is there any PV data in <br/> our database for this PV system?}
B1 --> |No| B2[Keep PV system]
B1--> |yes| B3{Is there any more PV data, <br/> from pv output.org, <br/>available for this PV system?}
B3 --> |yes| B2
B3 --> |No| B5[Dischagre PV system]
B2 --> B6(Finish)
B5 --> B6
- Pull Data
graph TD
C0(Start) --> C1[Pull Data from pvoutput.prg]
C1 --> C2{Is this data <br/> in our database already?}
C2 --> |yes| C3[Keep PV data]
C2 --> |No| C4[Dischagre PV data]
C3 --> C5(Finish)
C4 --> C5
Code style
Format the python codebase in place.
make format
Test that the codebase is formatted
make lint
🩺 Testing
Run only the unit tests
poetry run pytest tests/unittest
Run all the tests (including the "integration" tests that require credentials to call an external API)
poetry run pytest tests
Environmental Variables
- API_KEY: API key for pvoutput.org
- SYSTEM_ID: System id for pvoutput.org
- DATA_SERVICE_URL: data service url for pvoutput.org
- SS_URL: Sheffield Solar URL
- SS_API_KEY: Sheffield Solar API key
- SS_SYSTEM_ID: Sheffield Solar System ID
- DB_URL: Save in database to the pv database
Contributors ✨
Thanks goes to these wonderful people (emoji key):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tbody> <tr> <td align="center" valign="top" width="14.28%"><a href="http://lostcoding.com"><img src="https://avatars.githubusercontent.com/u/20285369?v=4?s=100" width="100px;" alt="Brandon Ly"/><br /><sub><b>Brandon Ly</b></sub></a><br /><a href="https://github.com/openclimatefix/PVConsumer/commits?author=branberry" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://lefun.fun"><img src="https://avatars.githubusercontent.com/u/1105380?v=4?s=100" width="100px;" alt="Simon Lemieux"/><br /><sub><b>Simon Lemieux</b></sub></a><br /><a href="https://github.com/openclimatefix/PVConsumer/commits?author=simlmx" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/peterdudfield"><img src="https://avatars.githubusercontent.com/u/34686298?v=4?s=100" width="100px;" alt="Peter Dudfield"/><br /><sub><b>Peter Dudfield</b></sub></a><br /><a href="https://github.com/openclimatefix/PVConsumer/commits?author=peterdudfield" title="Code">💻</a></td> </tr> </tbody> </table> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END -->This project follows the all-contributors specification. Contributions of any kind welcome!