Le canal testing sert powersync-plugin-openmeteo 1.15.2+etm1 (publié le 2026-09-08 à 09:49, avant le Contrat A). Cette version envoie les coordonnées du site sans arrondi ; l'arrondi à deux décimales n'existe que depuis etm2, et etm2 à etm16 ne sont dans aucun canal. La fiche OpenMeteo, la page Prévision PV et la FAQ (trois langues) disaient « arrondies à environ 1 km » sans condition. Elles le qualifient maintenant par version, et la fiche porte un avertissement en tête : version décrite à partir de 1.15.2+etm2. PORTING_STATUS reste `testing` : c'est exact. TODO : retirer ces avertissements quand etm16 ou suivant entre dans testing. Vérifié comme en CI : génération, --check et mkdocs build --strict passent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
104 lines
4.8 KiB
Markdown
104 lines
4.8 KiB
Markdown
# PV production forecast
|
||
|
||
<span class="badge testing">BETA</span> <span class="badge community">COMMUNITY</span>
|
||
|
||
The box forecasts the production of your panels, hour by hour, until the end of the
|
||
next day, and shows it in the app next to the measured production. It is a feature of
|
||
the **Community** edition (GPL-3.0): it relies on the energy engine and the
|
||
[OpenMeteo](../appareils/tarifs/openmeteo.md) plugin, with no ETM service involved.
|
||
|
||
!!! info "Beta"
|
||
Delivered and running on our test installation, it is not yet published in a
|
||
channel of the APT repository.
|
||
|
||
## What you see in the app
|
||
|
||
- **The expected production curve**, hour by hour until the end of the next day,
|
||
overlaid on the measured production.
|
||
- **A weather range** around this curve (see below).
|
||
- **Hour-by-hour weather** on the "Journée" card: an icon (sun, clouds, rain…), day or
|
||
night, and the temperature.
|
||
|
||
## How the forecast is computed
|
||
|
||
For each declared PV plane — tilt, orientation, peak power (kWp) and system efficiency
|
||
—, the box converts the irradiance forecast by Open-Meteo into power. It then adds up
|
||
all the planes of the site.
|
||
|
||
Two corrections apply, both **deterministic**: public physical models, parameterised
|
||
from datasheets, with no learning at all.
|
||
|
||
- **Temperature correction**: a hot module produces less. The box estimates this from
|
||
the forecast temperature, the NOCT and the temperature coefficient of the modules.
|
||
- **Inverter ceiling**: the sum of the planes never exceeds the inverter's maximum AC
|
||
power, if it has been entered.
|
||
|
||
The forecast is recomputed whenever the weather models publish a new run — at most once
|
||
an hour.
|
||
|
||
### A forecast, and an optimistic ceiling
|
||
|
||
What the box shows is a **forecast**, not a measurement. It is also an **optimistic
|
||
ceiling**: shading (trees, chimney, neighbouring buildings) and soiled panels are not
|
||
modelled. Actual production below the curve is therefore normal and does not indicate a
|
||
fault.
|
||
|
||
### An hour without data is a gap, never a zero
|
||
|
||
If an hour is missing (internet down, weather service unavailable), the curve breaks.
|
||
The box never writes "0" instead: a zero would read as "no sun expected".
|
||
|
||
## The weather range
|
||
|
||
Around the curve, the app draws a band:
|
||
**forecast × (1 ± spread of the day's models)**. The spread measures how far several
|
||
weather models disagree about the day.
|
||
|
||
This band qualifies **the weather**, and only the weather. It says nothing about the
|
||
accuracy of the production forecast: shading and soiling are not in it. On a clear,
|
||
stable day it is narrow, precisely when the error from those factors is largest. It is
|
||
therefore neither an "expected error" nor a "confidence interval".
|
||
|
||
## Commissioning
|
||
|
||
1. Install the OpenMeteo plugin and create the **site** and its **PV planes** — see
|
||
[OpenMeteo](../appareils/tarifs/openmeteo.md).
|
||
2. **Designate the forecast site** in the app. Until one is designated, the forecast
|
||
card shows a notice and offers the available sites. All planes of the designated
|
||
site are added up.
|
||
3. Optional: enter the **inverter ceiling** (maximum AC power, in W). Without it, no
|
||
ceiling is applied.
|
||
|
||
## What the forecast does not do
|
||
|
||
This is the central rule of the Community edition: **without an optimiser, control is
|
||
rule-based** (solar surplus, load shedding, priorities). The PV forecast, the
|
||
[entered tariff](../tarifs.md) and the baseload are **displayed** and **recorded
|
||
locally**, but never used to decide. An automated test checks this: the engine makes
|
||
the same decisions with and without forecast, tariff and consumption profile.
|
||
|
||
The local record is used to measure forecast accuracy over time. Validation on a real
|
||
installation is under way; no accuracy figure is published before it is complete.
|
||
|
||
## Baseload forecast <span class="badge nightly">COMING</span>
|
||
|
||
The box will compute a household consumption profile, excluding controlled loads, from
|
||
its own measurements: a median for each hour of the day, separately for working days
|
||
and weekends. A profile needs at least **7 days** of measurements. Until then nothing
|
||
is shown: an absence, never a zero.
|
||
|
||
## Your data
|
||
|
||
Only the OpenMeteo plugin connects to the internet. It sends only the **site's
|
||
coordinates** (rounded to about 1 km in the plugin versions that carry this feature; version `1.15.2+etm1` in the testing channel sends them unrounded), its **altitude** if entered, and the
|
||
**orientation of the panels** (tilt, azimuth). Measurements, recorded forecasts, the
|
||
tariff and consumption stay on the box. Remote access is disabled by default: it opens
|
||
only if you enable it yourself in the app.
|
||
|
||
## What about an optimiser?
|
||
|
||
The architecture provides an **open, documented interface** to an external optimiser,
|
||
which could use these forecasts to plan. Optimisation would run at your place, on the
|
||
box or on a machine in your local network. This connection is under development; the
|
||
Community edition works entirely without it.
|