https://github.com/jimlynchcodes/capacity-testing-sieve-stack
Math stuff for measuring solar panel performance. 📊
https://github.com/jimlynchcodes/capacity-testing-sieve-stack
Last synced: about 1 year ago
JSON representation
Math stuff for measuring solar panel performance. 📊
- Host: GitHub
- URL: https://github.com/jimlynchcodes/capacity-testing-sieve-stack
- Owner: JimLynchCodes
- License: gpl-3.0
- Created: 2023-07-16T04:39:25.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-01T03:43:52.000Z (over 2 years ago)
- Last Synced: 2025-02-04T12:01:40.693Z (over 1 year ago)
- Language: Rust
- Homepage:
- Size: 185 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Capacity Testing Data Point Sieve Stack
A function that filters data points for ASTM 2848-13 capacity and performance ratio tests!

## What's Here
Custom Types:
- CapacityTestDataPoint: All the input data from observed weather, numbers from the models, and timestamp.
Functions:
- send_through_sieve_stack: Takes a collection of one or more CapacityTestDataPoints and returns the subset of data points that should be used for the capacity performance ratio tests.
## Inputs
The CapacityTestDataPoint represents all the inputs needed for the send_through_sieve_stack logic. This includes:
- Raw data from the PVSYST model:
1. Global Horizontal (GHI) irradiance
2. Ambient temperature
3. Wind speed
4. Correction factors (relevant to calculate plane of array (POA) irradiance)
5. Timestamp
- Climate and performance data from your data acquisition system:
1. Temperature
2. Wind speed
3. Plane of array (POA) irradiance
4. Timestamp
## Filtering Logic
This is roughly how the sieve stack decides which data points keep and which to filter out.
- 50 / 15-minute points (huh?)
- Exclude data below 400w/m2
- Exclude data above the clipping point of the inverter
- Reporting condition POA should be sorted in a +/-20% range
- Temperature sorting requirements?
- Wind sorting requirements?
- Exclusions applied "because they do not correlate with the performance"?
## Running The Code
Steps for running the Rust code here.
### 0) Install
The command line tool _"cargo"_ is used for this Rust project. It can be easily installed on linux, mac, and windows via [rustup](https://rustup.rs/).
### 1) Run Unit Tests
The unit tests are sets of inputs and expected filtered outputs for different situations in order to check that send_through_sieve_stack function correctly sieves in all cases.
```sh
cargo test
```
### 2) Run Locally
Allows you to run the send_through_sieve_stack function with your own custom input data points and inspect the result.
First, edit the `input_data_points.cvs` file with your desired custom input data.
Then run the start command:
```
cargo start
```
### 3) Deploy?
Deploy the "send_through_sieve_stack" function and a Rust _library_ so that it can be used... somewhere else?
## More Info On ASTM E2848 Capacity Testing
- [ASTM E2848 Capacity Test For Beginners Blog Post](https://www.purepower.com/blog/astm-e2848-capacity-test-for-beginners)
## Other Possible Names
Here are some other potential names for this project:
- Sieve Stack 6000
- Pure Sieve Stack
- DSD Sieve Stack
- Sievester Stallone
- Sievezilla
- Keanu Sieves
- A Sieve Sieves
- Sieve City
- The Grim Siever
- Savage Sieve Stack
- Let's Sieve We Can Do This
- New Year's Sieve Stack
- Sieveral Names At Once
- Sieven Spielberg
- Sieve You Can Think Of Any!