Home

Awesome

PVConsumer

<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->

All Contributors

<!-- ALL-CONTRIBUTORS-BADGE:END -->

codecov

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];
  1. 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
  1. 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
  1. 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

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!