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

12 KiB
Raw Blame History

OpenMeteo

TESTING ETM CONSUMER

Obtenir les données météo courantes pour votre site.

Le plugin OpenMeteo fournit à la box les prévisions météo et solaires de votre site : météo du jour et du lendemain, et production photovoltaïque prévue pour chaque orientation de toiture. Les données viennent du service public Open-Meteo, interrogé directement par la box, sans compte ni clé d'API et sans passer par un service ETM.

Paquet : powersync-plugin-openmeteo.

1. Ce que le plugin publie

Le plugin crée deux types d'objets :

  • un site (Open-Meteo site) : météo de l'emplacement (température, nuages, vent, humidité…), irradiance solaire prévue, lever et coucher du soleil, et une observation satellite de l'heure écoulée ;
  • un ou plusieurs plans PV (Open-Meteo PV plane), rattachés au site : un par orientation de toiture. Chaque plan publie l'irradiance prévue sur ses panneaux et la production prévue qui en découle, pour l'heure courante, les 3, 6 et 12 heures à venir, le reste de la journée et le lendemain.

Le moteur d'énergie additionne les plans du site désigné et l'application affiche la courbe obtenue à côté des mesures, avec la météo heure par heure — voir Prévision de production PV.

2. Ajouter le site

En mode installateur, ajoutez un appareil Open-Meteo site (voir Ajouter un appareil) et renseignez :

Champ Contenu
Latitude, Longitude Position du site, en degrés décimaux
Elevation (m, optional) Altitude du site en mètres. Facultative : laissée à 0, Open-Meteo utilise l'altitude de son propre modèle de terrain. À renseigner en montagne ou en vallée encaissée, où la température prévue en dépend.

Le site n'est pas découvert automatiquement : on le crée à la main, une fois par emplacement.

3. Ajouter les plans PV

Une fois le site créé, ajoutez un appareil Open-Meteo PV plane : la découverte propose un plan pour chaque site existant. Créez un plan par orientation — une toiture est-ouest donne deux plans.

Champ Contenu
Tilt (deg, 0=horizontal) Inclinaison des panneaux, en degrés : 0 = à plat, 90 = vertical
Azimuth (deg geographic, 180=South) Orientation, en convention géographique : 180 = sud, 90 = est, 270 = ouest
Peak power kWp Puissance crête des panneaux de ce plan
Performance ratio (declared, not learned) Rendement global de l'installation, déclaré par l'installateur (il n'est pas appris par la box). Laissé à 1.0, la production prévue est surestimée.

Selon la version du plugin, deux champs issus de la fiche technique des modules complètent le plan : Power temperature coefficient (%/K, declared, not learned) (par défaut −0,37 %/K) et NOCT (°C, declared, not learned) (par défaut 45 °C). Ils servent à corriger la production prévue quand les modules chauffent.

!!! warning "Attention à l'azimut" D'autres outils comptent l'azimut à partir du sud (0 = sud). Ici, 0 est le nord : un azimut de 0 saisi pour une toiture plein sud donne une production prévue fortement sous-estimée.

4. Une prévision, jamais une mesure

Tout ce que publie ce plugin est une prévision météo convertie en production, ou une observation satellite datant d'environ une heure. Ce n'est jamais une mesure de votre installation : la production réelle se lit sur l'onduleur ou le compteur.

C'est pourquoi les grandeurs sont nommées forecast… (prévision) ou observed… (observation satellite) : il n'existe pas de pvPower dans ce plugin, seulement forecastPvPower.

La production prévue est calculée simplement : irradiance prévue × puissance crête × rendement déclaré. Elle ne tient pas compte de l'ombrage, de l'encrassement des panneaux ni, au niveau du plugin, de l'écrêtage de l'onduleur (le moteur applique le plafond onduleur à la somme des plans, s'il est renseigné). L'écart va donc toujours dans le même sens : la prévision est optimiste. 4 kW prévus ne sont pas 4 kW produits.

La dispersion météo publiée pour aujourd'hui et demain (en %) dit à quel point la météo elle-même est incertaine. Elle ne dit rien de la justesse de la production prévue : par grand beau temps stable, elle est faible alors que la surestimation, elle, est à son maximum.

5. Rafraîchissement et coupure internet

Les modèles météo ne publient pas plus souvent que cela : la prévision et l'observation satellite sont relues toutes les heures, la dispersion toutes les 3 heures. L'action Refresh du site force les trois.

Si Open-Meteo ne répond pas, le plugin réessaie après 5 minutes, puis 10, 20, 40… sans dépasser le rythme normal de la source, et reprend son rythme dès la première réponse. Après 3 heures sans prévision reçue, l'état Forecast valid passe à faux.

Une coupure internet ne bloque rien : la box continue de piloter avec ses mesures, la sécurité reste assurée, et seules les prévisions se dégradent jusqu'au retour de la connexion.

6. Ce qui quitte la box

Pour obtenir ses prévisions, la box envoie à Open-Meteo uniquement :

  • les coordonnées du site, arrondies à deux décimales (environ 1 km) : assez précises pour la météo, trop floues pour désigner une adresse ;
  • l'altitude du site, si vous l'avez renseignée ;
  • l'inclinaison et l'azimut de chaque plan PV.

Aucune mesure, aucune consommation et aucune donnée d'usage n'est transmise. La puissance crête et le rendement restent sur la box : la conversion en production se fait localement.

7. Usage commercial : instance Open-Meteo dédiée

L'API publique d'Open-Meteo est réservée à un usage non commercial. Pour un déploiement commercial, les réglages du plugin permettent de pointer vers une instance Open-Meteo auto-hébergée (Base URL (forecast), Base URL (satellite radiation), Base URL (ensemble spread)) ou de renseigner une clé pour l'offre commerciale d'Open-Meteo (API key (commercial endpoint, optional)). Sans modification, le plugin interroge l'API publique.

8. Sources des données

Données météo de Météo-France, rayonnement satellite d'EUMETSAT, fournis par Open-Meteo sous licence CC-BY 4.0.


Référence

!!! info "Libellés de l'application" Les clés et libellés ci-dessous sont ceux affichés par l'application, en anglais. Ils sont laissés tels quels pour que vous les retrouviez à l'identique à l'écran.

Fabricant : Open-Meteo
Plugin : OpenMeteo

Modèles pris en charge

Modèle Rôle Transport Ajout Grandeurs
Open-Meteo site weather, daylightsensor — Manual 29
Open-Meteo PV plane — — Auto-discovery 15

Détail par modèle

??? abstract "Open-Meteo site — openMeteoSite" Réglages :

| Clé | Libellé | Type | Plage | Défaut | Lecture seule |
| --- | --- | --- | --- | --- | --- |
| `name` | Name | QString | — | — | non |
| `latitude` | Latitude | double | — | `48.9` | non |
| `longitude` | Longitude | double | — | `7.85` | non |
| `elevation` | Elevation (m, optional) | double | — | `0` | non |

_Grandeurs mesurées :_

| Clé | Grandeur | Type | Unité |
| --- | --- | --- | --- |
| `weatherDescription` | Weather description | QString | — |
| `weatherCondition` | Weather condition | QString | — |
| `updateTime` | Last update | int | UnixTime |
| `temperature` | Temperature | double | DegreeCelsius |
| `temperatureMin` | Minimum temperature (today) | double | DegreeCelsius |
| `temperatureMax` | Maximum temperature (today) | double | DegreeCelsius |
| `humidity` | Humidity | int | Percentage |
| `pressure` | Pressure | double | HectoPascal |
| `windSpeed` | Wind speed | double | MeterPerSecond |
| `windDirection` | Wind direction | int | Degree |
| `cloudiness` | Cloudiness | int | Percentage |
| `snowfall` | Snowfall (preceding hour) | double | CentiMeter |
| `forecastGhi` | GHI forecast (W/m²) | double | — |
| `forecastDni` | DNI forecast (W/m²) | double | — |
| `forecastDhi` | DHI forecast (W/m²) | double | — |
| `terrestrialRadiation` | TOA radiation (W/m2) | double | — |
| `forecastGhiSumToday` | GHI sum forecast today (kWh/m²) | double | — |
| `observedGhi` | GHI observed, satellite (W/m²) | double | — |
| `observedClearSkyGhi` | Clear-sky GHI observed, satellite (W/m²) | double | — |
| `observedClearSkyIndex` | Clear-sky index kt (observed) | double | — |
| `sunriseTime` | Sunrise time | int | UnixTime |
| `sunsetTime` | Sunset time | int | UnixTime |
| `daylight` | Daylight | bool | — |
| `forecastModel` | Forecast model that answered | QString | — |
| `forecastValid` | Forecast valid | bool | — |
| `forecastTendencyToday` | Sky tendency forecast today | QString | — |
| `observedTime` | Satellite sample time | int | UnixTime |
| `forecastIssuedAt` | Model run initialisation — revision key | int | UnixTime |
| `forecastAvailableAt` | Model run publication — informational, never a revision key | int | UnixTime |

??? abstract "Open-Meteo PV plane — openMeteoPvPlane" Réglages :

| Clé | Libellé | Type | Plage | Défaut | Lecture seule |
| --- | --- | --- | --- | --- | --- |
| `name` | Name | QString | — | — | non |
| `tilt` | Tilt (deg, 0=horizontal) | double | 0–90 | `30` | non |
| `azimuth` | Azimuth (deg geographic, 180=South) | double | 0–360 | `180` | non |
| `kwp` | Peak power kWp | double | — | `0` | non |
| `performanceRatio` | Performance ratio (declared, not learned) | double | 0.1–1.0 | `1.0` | non |

_Grandeurs mesurées :_

| Clé | Grandeur | Type | Unité |
| --- | --- | --- | --- |
| `forecastGtiSource` | GTI forecast, source quantity (W/m²) | double | — |
| `updateTime` | Last update | int | UnixTime |
| `forecastPvPower` | PV power forecast | double | Watt |
| `forecastEnergyNext3h` | PV energy forecast, next 3 h (rolling, may cross midnight) | double | KiloWattHour |
| `forecastEnergyNext6h` | PV energy forecast, next 6 h (rolling, may cross midnight) | double | KiloWattHour |
| `forecastEnergyNext12h` | PV energy forecast, next 12 h (rolling, may cross midnight) | double | KiloWattHour |
| `forecastEnergyRestOfDay` | PV energy forecast, now until sunset | double | KiloWattHour |
| `forecastEnergyTomorrow` | PV energy forecast, tomorrow | double | KiloWattHour |
| `forecastPeakTime` | Forecast peak irradiance time today | int | UnixTime |
| `observedGti` | GTI observed, satellite (W/m²) | double | — |
| `observedGtiTime` | Satellite sample time | int | UnixTime |
| `forecastWeatherSpreadTodayPercent` | GTI weather spread today — qualifies weather only, not PV accuracy | double | Percentage |
| `forecastWeatherSpreadTomorrowPercent` | GTI weather spread tomorrow — qualifies weather only, not PV accuracy | double | Percentage |
| `forecastSpreadModel` | Ensemble model used for spread | QString | — |
| `forecastCurveTransport` | Forecast curve — transport channel, not a value | QVariantMap | — |