Consumer PV data from pvoutput.org and SheffieldSolar. The idea is to expand to different data sources in the future.
This application pulls live data from PV output.org and stores it in a database
To run the application locally
# Install the python dependencies
poetry install
poetry run pvconsumer/app.pyThe 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
Format the python codebase in place.
make formatTest that the codebase is formatted
make lintRun only the unit tests
poetry run pytest tests/unittestRun all the tests (including the "integration" tests that require credentials to call an external API)
poetry run pytest tests- 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
Thanks goes to these wonderful people (emoji key):
Brandon Ly 💻 |
Simon Lemieux 💻 |
Peter Dudfield 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!