powersync-docs/docs/fonctionnalites/prevision-pv.en.md
Patrick Schurig bba9c87608 docs: prévision PV et tarif saisi de la version Community, FAQ alignée
Nouvelle page fonctionnalites/prevision-pv (FR/DE/EN, dans la nav) : courbe
horaire jusqu'à la fin du lendemain par plan, correction de température et
plafond onduleur (modèles déterministes publics, aucun apprentissage),
« plafond optimiste », « une heure sans donnée est un trou, jamais un zéro »,
fourchette météo (qualifie la météo seulement), météo horaire, mise en
service, règle centrale de la Community (affiché et enregistré localement,
jamais utilisé pour décider), consommation de base « à venir », données qui
sortent, optimiseur seulement comme interface prévue.

Tarifs (3 langues) : section BETA « tarif saisi », exposé et non utilisé pour
décider ; les tarifs dynamiques restent en roadmap.

FAQ (3 langues) : réponse « données » réécrite avec la liste de ce qui sort ;
« Predict AI », `optimizer-plugin` et « socket Unix » retirés ; la prévision
physique passe dans Community, Pro garde les prévisions apprises.
Accueil : « sans dépendance au cloud ». Tableau des fonctionnalités : trois
lignes. Fiche OpenMeteo : lien vers la page, plafond appliqué par le moteur.

Sources : INTERFACE.md et DESIGN_PREVISION_PV.md (feature/forecast-protocol-1.1),
CONTRACT_A v4, CONSIGNE-app-etm66-prevision.md. Aucune donnée du banc.
Vérifié comme en CI : génération, --check et mkdocs build --strict passent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 22:29:53 +02:00

104 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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), 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.