openclimatefix / PVConsumer

Consumer PV data from various sources
Apache License 2.0
3 stars 1 forks source link

PVConsumer

All Contributors

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
  2. 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
  3. 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**.

```bash
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):

Brandon Ly
Brandon Ly

💻
Simon Lemieux
Simon Lemieux

💻
Peter Dudfield
Peter Dudfield

💻

This project follows the all-contributors specification. Contributions of any kind welcome!