Skip to content

openclimatefix/PVConsumer

Repository files navigation

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
  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

  • DB_URL: The database url which the forecasts will be saved too
  • API_KEY: API key for pvoutput.org
  • SYSTEM_ID: System id for pvoutput.org
  • DATA_SERVICE_URL: data service url for pvoutput.org
  • DB_URL: Save in database to the pv database
  • DB_URL_FORECAST: Let the database not that this service has run, input_data_last_updatded table
  • DB_URL_PV_SITE: PV Site database

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!