- Replace Pflugerville with SITER in SVG files - Remove outdated -k option reference from README 🤖 Generated with [Crush](https://crush.cli.software) Assisted-by: GLM-5 via Crush <crush@charm.land>
181 lines
5.4 KiB
Markdown
181 lines
5.4 KiB
Markdown
# SITER Solar Installation Project
|
||
|
||
A solar energy installation proposal using NREL PVWatts API for production estimates and analysis of actual billing data.
|
||
|
||
## Overview
|
||
|
||
This project provides tools for analyzing solar panel installation economics, including:
|
||
|
||
- NREL PVWatts API integration for production estimates
|
||
- Financial analysis with ROI and payback calculations
|
||
- Multiple system size scenario comparisons
|
||
- Integration with Base Power battery backup systems
|
||
|
||
## Quick Start
|
||
|
||
### Prerequisites
|
||
|
||
- Docker (recommended)
|
||
- Or: bash, curl, jq, bc
|
||
|
||
### Run Analysis
|
||
|
||
```bash
|
||
# Build and run in Docker (recommended)
|
||
docker build -f Dockerfile.test -t siter-solar-test .
|
||
docker run --rm siter-solar-test /app/solar-analysis/siter-solar-analysis.sh
|
||
|
||
# Or run directly (if dependencies are installed)
|
||
./solar-analysis/siter-solar-analysis.sh
|
||
```
|
||
|
||
### Examples
|
||
|
||
```bash
|
||
# Basic analysis with defaults
|
||
./solar-analysis/siter-solar-analysis.sh
|
||
|
||
# Compare different system sizes
|
||
./solar-analysis/siter-solar-analysis.sh --scenarios
|
||
|
||
# Custom configuration
|
||
./solar-analysis/siter-solar-analysis.sh -p 20 -w 400 --lat 30.5 --lon -97.7
|
||
|
||
# JSON output for programmatic use
|
||
./solar-analysis/siter-solar-analysis.sh --json
|
||
|
||
# With your NREL API key (avoids rate limits)
|
||
NREL_API_KEY=your_key ./solar-analysis/siter-solar-analysis.sh --scenarios
|
||
```
|
||
|
||
## Configuration
|
||
|
||
### Environment Variables
|
||
|
||
| Variable | Default | Description |
|
||
|----------|---------|-------------|
|
||
| `NREL_API_KEY` | `DEMO_KEY` | Your NREL API key |
|
||
| `SITER_LAT` | `30.44` | Site latitude |
|
||
| `SITER_LON` | `-97.62` | Site longitude |
|
||
|
||
### Command Line Options
|
||
|
||
```
|
||
Usage: siter-solar-analysis.sh [OPTIONS]
|
||
|
||
Options:
|
||
--lat VALUE Site latitude (default: 30.44)
|
||
--lon VALUE Site longitude (default: -97.62)
|
||
-p, --panels NUM Number of panels (default: 16)
|
||
-w, --watts WATTS Watts per panel (default: 250)
|
||
-t, --tilt DEGREES Array tilt in degrees (default: 30)
|
||
-a, --azimuth DEGREES Array azimuth (default: 180)
|
||
-l, --losses PERCENT System losses percent (default: 14)
|
||
--scenarios Run multiple system size scenarios
|
||
--json Output as JSON
|
||
--verbose Enable verbose output
|
||
-h, --help Show help message
|
||
-v, --version Show version
|
||
```
|
||
|
||
## Testing
|
||
|
||
Run the test suite inside Docker:
|
||
|
||
```bash
|
||
docker build -f Dockerfile.test -t siter-solar-test .
|
||
docker run --rm siter-solar-test
|
||
```
|
||
|
||
Tests use [BATS (Bash Automated Testing System)](https://github.com/bats-core/bats-core).
|
||
|
||
## Project Structure
|
||
|
||
```
|
||
siter-solar/
|
||
├── README.md # This file
|
||
├── AGENTS.md # Agent documentation (SDLC rules)
|
||
├── .env.example # Environment template
|
||
├── .gitignore # Excludes private data
|
||
├── Dockerfile.test # Test environment
|
||
├── v2-siter-solar-plan.md # Main proposal document
|
||
├── images/ # SVG diagrams
|
||
│ ├── v2-image-1.svg # System architecture
|
||
│ ├── v2-image-2.svg # Monthly production chart
|
||
│ ├── v2-image-3.svg # ROI/payback timeline
|
||
│ └── v2-image-4.svg # System size comparison
|
||
└── solar-analysis/ # Analysis tools
|
||
├── siter-solar-analysis.sh # Main bash script
|
||
├── tests/ # BATS test suite
|
||
│ └── siter-solar-analysis.bats
|
||
├── solar_estimate.py # DEPRECATED
|
||
├── solar_optimal.py # DEPRECATED
|
||
├── solar_optimized.py # DEPRECATED
|
||
├── Dockerfile # Production image
|
||
└── run-analysis.sh # Docker wrapper
|
||
```
|
||
|
||
## Key Parameters
|
||
|
||
| Parameter | Value | Notes |
|
||
|-----------|-------|-------|
|
||
| System Capacity | 4.0 kW DC | 16 × 250W panels |
|
||
| Array Type | Fixed Open Rack | Ground mount |
|
||
| Tilt | 30° | Optimal for latitude |
|
||
| Azimuth | 180° | South-facing |
|
||
| Losses | 14% (default) | Can optimize to 8% |
|
||
|
||
## Financial Model
|
||
|
||
The analysis uses the following assumptions:
|
||
|
||
- **Self-consumption:** 60% of production (avoids $0.085/kWh)
|
||
- **Grid export:** 40% of production (credits $0.04/kWh)
|
||
- **Base Power contract:** Fixed rate through Oct 2028
|
||
- **Solar buyback:** Credits apply to entire bill
|
||
|
||
### ROI Calculation
|
||
|
||
1. Annual production from NREL PVWatts (kWh/year)
|
||
2. Self-consumption value: 60% × production × $0.085/kWh
|
||
3. Export value: 40% × production × $0.04/kWh
|
||
4. Total annual value = self-consumption + export
|
||
5. Payback = Total investment / annual value
|
||
|
||
## NREL API
|
||
|
||
This project uses the [NREL PVWatts API](https://developer.nrel.gov/docs/solar/pvwatts/v6/).
|
||
|
||
Get your free API key at: https://developer.nrel.gov/signup/
|
||
|
||
**Rate Limits:**
|
||
- DEMO_KEY: 1 request/second, 1000 requests/hour
|
||
- Personal key: Higher limits
|
||
|
||
## Development
|
||
|
||
See [AGENTS.md](AGENTS.md) for development guidelines, including:
|
||
|
||
- SDLC requirements (Docker-only development)
|
||
- Testing requirements
|
||
- Privacy requirements
|
||
- Commit conventions
|
||
|
||
## License
|
||
|
||
See [LICENSE](LICENSE) file.
|
||
|
||
## Contributing
|
||
|
||
1. Fork the repository
|
||
2. Create a feature branch
|
||
3. Make changes following SDLC rules in AGENTS.md
|
||
4. Ensure all tests pass
|
||
5. Submit a pull request
|
||
|
||
## Resources
|
||
|
||
- [NREL PVWatts API Documentation](https://developer.nrel.gov/docs/solar/pvwatts/v6/)
|
||
- [Base Power Solar Integration](https://www.basepowercompany.com/with-solar)
|
||
- [Sol-Ark Inverters](https://www.ecodirect.com/)
|