2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00
2026-05-27 08:33:45 +02:00

local-pv-forecast

Local, horizon-aware photovoltaic forecast engine for Home Assistant and standalone use.


Features

  • Fully local PV forecast calculation
  • Horizon-aware shading model
  • Open-Meteo / DWD / METAR weather integration
  • Clear-sky irradiance calculation
  • Calibration against historical production data
  • Home Assistant integration
  • CSV import/export tools
  • Plotting and diagnostics
  • Forecast comparison and horizon fitting scripts

Motivation

Most cloud-based PV forecast systems have limited knowledge of the real installation environment:

  • local horizon obstructions
  • trees and buildings
  • seasonal shading
  • module orientation differences
  • site-specific losses

This project aims to build a transparent and fully local forecasting pipeline that can be calibrated against real production data and local horizon measurements.

The long-term goal is to improve short-term PV forecast accuracy for Home Assistant energy management and battery optimization.


Architecture

Weather Data
(Open-Meteo / DWD / METAR)
          │
          ▼
Clear Sky Model
          │
          ▼
Solar Position Calculation
          │
          ▼
Local Horizon / Shading Model
          │
          ▼
PV System Model
          │
          ▼
Calibration Layer
          │
          ▼
Forecast Output
(Home Assistant / CSV / Plots)

Repository Structure

src/
├── astronomy/        Solar position & irradiance
├── shading/          Horizon and shading calculations
├── weather/          Weather providers
├── model/            PV and forecast models
├── io/               Home Assistant & CSV interfaces
└── utils/            Shared utilities

scripts/
├── fetch_weather.py
├── generate_forecast.py
├── compare_day.py
└── fit_horizon.py

tests/
└── Unit tests

Installation

Clone repository

git clone https://github.com/<your-user>/local-pv-forecast.git
cd local-pv-forecast

Create virtual environment

python3 -m venv .venv
source .venv/bin/activate

Install dependencies

pip install -r requirements.txt

Configuration

Example configuration files are located in:

config/

Typical configuration parameters:

  • latitude / longitude
  • panel azimuth
  • panel tilt
  • installed peak power
  • horizon profile
  • inverter efficiency
  • weather provider selection

Horizon Model

The forecast engine supports custom local horizon profiles.

Example:

azimuth,elevation
0,2
45,5
90,12
135,18
180,4

This allows modeling of:

  • buildings
  • trees
  • terrain
  • seasonal shading effects

Home Assistant Integration

Forecast values can be exported as Home Assistant compatible sensors.

Planned integration targets:

  • Energy Dashboard
  • Battery charging automation
  • EV charging optimization
  • Dynamic load shifting

Example Usage

Fetch weather data

python scripts/fetch_weather.py

Generate forecast

python scripts/generate_forecast.py

Compare forecast vs. measured data

python scripts/compare_day.py

Fit local horizon from historical production

python scripts/fit_horizon.py

Planned Features

  • Fully local weather fallback model
  • Automatic horizon fitting
  • Multi-array support
  • Battery-aware optimization
  • Probabilistic forecast
  • Docker container
  • Native Home Assistant Add-on
  • Web UI
  • ML-assisted calibration

Design Philosophy

  • Local-first
  • Transparent calculations
  • Reproducible results
  • No cloud dependency required
  • Easy Home Assistant integration
  • Open and inspectable models

License

MIT License


Contributing

Pull requests, issue reports and calibration datasets are welcome.

S
Description
No description provided
Readme
29 KiB