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>
236 lines
12 KiB
Markdown
236 lines
12 KiB
Markdown
# OpenMeteo
|
||
|
||
<!-- BEGIN GENERATED: __badges_openmeteo__ -->
|
||
<span class="badge testing">TESTING</span> <span class="badge origin-etm">ETM</span> <span class="badge consumer">CONSUMER</span>
|
||
|
||
Obtenir les données météo courantes pour votre site.
|
||
|
||
<!-- END GENERATED -->
|
||
|
||
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](https://open-meteo.com), interrogé directement par la box, **sans compte
|
||
ni clé d'API** et sans passer par un service ETM.
|
||
|
||
Paquet : `powersync-plugin-openmeteo`.
|
||
|
||
!!! warning "Version décrite : à partir de `1.15.2+etm2`"
|
||
La version publiée dans le canal **testing** est aujourd'hui `1.15.2+etm1`, antérieure.
|
||
Elle envoie les coordonnées du site **sans arrondi**, et une partie des fonctions
|
||
décrites ici n'y figure pas. Les versions qui les portent sont en beta et ne sont
|
||
pas encore publiées dans un canal du dépôt APT.
|
||
|
||
## 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](../../fonctionnalites/prevision-pv.md).
|
||
|
||
## 2. Ajouter le site
|
||
|
||
En mode installateur, ajoutez un appareil **Open-Meteo site** (voir
|
||
[Ajouter un appareil](../../installation/application.md)) 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. ⚠️ Arrondi présent à
|
||
partir de `1.15.2+etm2` ; la version `1.15.2+etm1` du canal testing envoie les
|
||
coordonnées telles que saisies ;
|
||
- 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](https://open-meteo.com) sous licence CC-BY 4.0.
|
||
|
||
---
|
||
|
||
## Référence
|
||
|
||
<!-- BEGIN GENERATED: integrationpluginopenmeteo.json -->
|
||
!!! 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 | — |
|
||
|
||
<!-- END GENERATED -->
|