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>
241 lines
12 KiB
Markdown
241 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>
|
||
|
||
Aktuelle Wetterdaten für Ihren Standort abrufen.
|
||
|
||
<!-- END GENERATED -->
|
||
|
||
Das OpenMeteo-Plugin liefert der Box die **Wetter- und Solarprognosen** für Ihren
|
||
Standort: das Wetter für heute und morgen sowie die erwartete PV-Erzeugung für jede
|
||
Dachausrichtung. Die Daten stammen vom öffentlichen Dienst
|
||
[Open-Meteo](https://open-meteo.com), den die Box direkt abfragt – **ohne Konto, ohne
|
||
API-Schlüssel** und ohne Umweg über einen ETM-Dienst.
|
||
|
||
Paket: `powersync-plugin-openmeteo`.
|
||
|
||
!!! warning "Beschriebene Version: ab `1.15.2+etm2`"
|
||
Im Kanal **testing** ist derzeit `1.15.2+etm1` veröffentlicht, eine ältere Version.
|
||
Sie sendet die Koordinaten des Standorts **ungerundet**, und ein Teil der hier
|
||
beschriebenen Funktionen fehlt ihr. Die Versionen, die sie enthalten, sind in der
|
||
Beta und noch in keinem Kanal des APT-Repositorys veröffentlicht.
|
||
|
||
## 1. Was das Plugin bereitstellt
|
||
|
||
Das Plugin legt zwei Arten von Objekten an:
|
||
|
||
- einen **Standort** (`Open-Meteo site`): Wetter am Standort (Temperatur, Bewölkung,
|
||
Wind, Luftfeuchtigkeit …), prognostizierte Einstrahlung, Sonnenauf- und -untergang
|
||
sowie eine Satellitenbeobachtung der vergangenen Stunde;
|
||
- eine oder mehrere **PV-Flächen** (`Open-Meteo PV plane`), die dem Standort
|
||
zugeordnet sind – eine pro Dachausrichtung. Jede Fläche liefert die prognostizierte
|
||
Einstrahlung auf ihre Module und die daraus abgeleitete erwartete Erzeugung: für die
|
||
laufende Stunde, die nächsten 3, 6 und 12 Stunden, den Rest des Tages und den
|
||
Folgetag.
|
||
|
||
Die Energie-Engine addiert die Flächen des bestimmten Standorts, und die App zeigt die
|
||
resultierende Kurve neben den Messwerten an, zusammen mit dem Wetter Stunde für Stunde –
|
||
siehe [PV-Erzeugungsprognose](../../fonctionnalites/prevision-pv.md).
|
||
|
||
## 2. Standort hinzufügen
|
||
|
||
Fügen Sie im Installateurmodus ein Gerät **Open-Meteo site** hinzu (siehe
|
||
[Gerät hinzufügen](../../installation/application.md)) und tragen Sie ein:
|
||
|
||
| Feld | Inhalt |
|
||
| --- | --- |
|
||
| `Latitude`, `Longitude` | Position des Standorts in Dezimalgrad |
|
||
| `Elevation (m, optional)` | Höhe des Standorts in Metern. Optional: Bei `0` verwendet Open-Meteo die Höhe aus seinem eigenen Geländemodell. In den Bergen oder in engen Tälern eintragen, denn die prognostizierte Temperatur hängt davon ab. |
|
||
|
||
Der Standort wird nicht automatisch gefunden: Er wird von Hand angelegt, einmal pro
|
||
Standort.
|
||
|
||
## 3. PV-Flächen hinzufügen
|
||
|
||
Sobald der Standort angelegt ist, fügen Sie ein Gerät **Open-Meteo PV plane** hinzu:
|
||
Die Suche schlägt für jeden vorhandenen Standort eine Fläche vor. Legen Sie **eine
|
||
Fläche pro Ausrichtung** an – ein Ost-West-Dach ergibt zwei Flächen.
|
||
|
||
| Feld | Inhalt |
|
||
| --- | --- |
|
||
| `Tilt (deg, 0=horizontal)` | Neigung der Module in Grad: `0` = flach, `90` = senkrecht |
|
||
| `Azimuth (deg geographic, 180=South)` | Ausrichtung in **geografischer Konvention**: `180` = Süden, `90` = Osten, `270` = Westen |
|
||
| `Peak power kWp` | Spitzenleistung der Module dieser Fläche |
|
||
| `Performance ratio (declared, not learned)` | Gesamtwirkungsgrad der Anlage, vom Installateur **angegeben** (die Box lernt ihn nicht). Bleibt er auf `1.0`, wird die erwartete Erzeugung überschätzt. |
|
||
|
||
Je nach Plugin-Version ergänzen zwei Werte aus dem Moduldatenblatt die Fläche:
|
||
`Power temperature coefficient (%/K, declared, not learned)` (Standard −0,37 %/K) und
|
||
`NOCT (°C, declared, not learned)` (Standard 45 °C). Sie korrigieren die erwartete
|
||
Erzeugung, wenn sich die Module erwärmen.
|
||
|
||
!!! warning "Achtung beim Azimut"
|
||
Andere Werkzeuge zählen den Azimut ab Süden (`0` = Süden). Hier ist `0`
|
||
**Norden**: Ein Azimut von `0` für ein reines Süddach ergibt eine stark
|
||
unterschätzte Erzeugungsprognose.
|
||
|
||
## 4. Eine Prognose, niemals eine Messung
|
||
|
||
Alles, was dieses Plugin bereitstellt, ist eine in Erzeugung umgerechnete
|
||
**Wetterprognose** oder eine etwa eine Stunde alte **Satellitenbeobachtung**. Es ist
|
||
nie eine Messung Ihrer Anlage: Die tatsächliche Erzeugung liefert der Wechselrichter
|
||
oder der Zähler.
|
||
|
||
Deshalb heißen die Werte `forecast…` (Prognose) oder `observed…`
|
||
(Satellitenbeobachtung): Es gibt in diesem Plugin kein `pvPower`, nur
|
||
`forecastPvPower`.
|
||
|
||
Die erwartete Erzeugung wird einfach berechnet: prognostizierte Einstrahlung ×
|
||
Spitzenleistung × angegebener Wirkungsgrad. Sie **berücksichtigt nicht** Verschattung,
|
||
Verschmutzung der Module und, auf Ebene des Plugins, die Leistungsbegrenzung des
|
||
Wechselrichters (die Engine wendet die Wechselrichtergrenze auf die Summe der Flächen
|
||
an, sofern sie angegeben ist). Die
|
||
Abweichung geht daher immer in dieselbe Richtung: **Die Prognose ist optimistisch.**
|
||
4 kW Prognose sind nicht 4 kW Erzeugung.
|
||
|
||
Die für heute und morgen angegebene **Wetterstreuung** (in %) sagt, wie unsicher das
|
||
Wetter selbst ist. Über die Genauigkeit der erwarteten Erzeugung sagt sie nichts: Bei
|
||
stabilem Sonnenwetter ist sie gering, während die Überschätzung gerade dann am größten
|
||
ist.
|
||
|
||
## 5. Aktualisierung und Internetausfall
|
||
|
||
Die Wettermodelle veröffentlichen nicht häufiger: Prognose und Satellitenbeobachtung
|
||
werden **stündlich** abgerufen, die Streuung **alle 3 Stunden**. Die Aktion `Refresh`
|
||
des Standorts erzwingt alle drei.
|
||
|
||
Antwortet Open-Meteo nicht, versucht es das Plugin nach 5 Minuten erneut, dann nach
|
||
10, 20, 40 … – nie seltener als im normalen Takt der Quelle – und kehrt mit der ersten
|
||
Antwort zu seinem Takt zurück. Nach **3 Stunden** ohne empfangene Prognose wechselt
|
||
`Forecast valid` auf falsch.
|
||
|
||
Ein Internetausfall blockiert nichts: Die Box steuert mit ihren Messwerten weiter, die
|
||
Sicherheit bleibt gewährleistet, und nur die Prognosen verschlechtern sich, bis die
|
||
Verbindung zurück ist.
|
||
|
||
## 6. Was die Box verlässt
|
||
|
||
Für ihre Prognosen sendet die Box an Open-Meteo **ausschließlich**:
|
||
|
||
- die Koordinaten des Standorts, **auf zwei Nachkommastellen gerundet** (etwa 1 km):
|
||
genau genug für das Wetter, zu ungenau, um eine Adresse zu bezeichnen. ⚠️ Rundung
|
||
ab `1.15.2+etm2`; die Version `1.15.2+etm1` im Kanal testing sendet die Koordinaten
|
||
so, wie sie eingegeben wurden;
|
||
- die Höhe des Standorts, sofern eingetragen;
|
||
- Neigung und Azimut jeder PV-Fläche.
|
||
|
||
Es werden keine Messwerte, kein Verbrauch und keine Nutzungsdaten übertragen.
|
||
Spitzenleistung und Wirkungsgrad bleiben auf der Box: Die Umrechnung in Erzeugung
|
||
erfolgt lokal.
|
||
|
||
## 7. Gewerbliche Nutzung: eigene Open-Meteo-Instanz
|
||
|
||
Die öffentliche API von Open-Meteo ist der **nicht gewerblichen Nutzung** vorbehalten.
|
||
Für einen gewerblichen Einsatz lassen sich in den Plugin-Einstellungen eine selbst
|
||
betriebene Open-Meteo-Instanz eintragen (`Base URL (forecast)`,
|
||
`Base URL (satellite radiation)`, `Base URL (ensemble spread)`) oder ein Schlüssel für
|
||
das kommerzielle Angebot von Open-Meteo (`API key (commercial endpoint, optional)`).
|
||
Ohne Änderung fragt das Plugin die öffentliche API ab.
|
||
|
||
## 8. Datenquellen
|
||
|
||
Wetterdaten von Météo-France, Satellitenstrahlung von EUMETSAT, bereitgestellt über
|
||
[Open-Meteo](https://open-meteo.com) unter der Lizenz CC-BY 4.0.
|
||
|
||
---
|
||
|
||
## Referenz
|
||
|
||
<!-- BEGIN GENERATED: integrationpluginopenmeteo.json -->
|
||
!!! info "Bezeichnungen der Anwendung"
|
||
Die Schlüssel und Bezeichnungen unten sind die der Anwendung,
|
||
**auf Englisch**. Sie bleiben unverändert, damit Sie sie auf dem
|
||
Bildschirm wortgleich wiederfinden.
|
||
|
||
**Hersteller:** Open-Meteo
|
||
**Plugin:** `OpenMeteo`
|
||
|
||
#### Unterstützte Modelle
|
||
| Modell | Rolle | Transport | Einbindung | Messwerte |
|
||
| --- | --- | --- | --- | --- |
|
||
| **Open-Meteo site** | weather, daylightsensor | — | Manual | 29 |
|
||
| **Open-Meteo PV plane** | — | — | Auto-discovery | 15 |
|
||
|
||
#### Detail je Modell
|
||
??? abstract "Open-Meteo site — `openMeteoSite`"
|
||
_Einstellungen:_
|
||
|
||
| Schlüssel | Bezeichnung | Typ | Bereich | Standard | Nur lesen |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| `name` | Name | QString | — | — | nein |
|
||
| `latitude` | Latitude | double | — | `48.9` | nein |
|
||
| `longitude` | Longitude | double | — | `7.85` | nein |
|
||
| `elevation` | Elevation (m, optional) | double | — | `0` | nein |
|
||
|
||
_Gemessene Größen:_
|
||
|
||
| Schlüssel | Größe | Typ | Einheit |
|
||
| --- | --- | --- | --- |
|
||
| `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`"
|
||
_Einstellungen:_
|
||
|
||
| Schlüssel | Bezeichnung | Typ | Bereich | Standard | Nur lesen |
|
||
| --- | --- | --- | --- | --- | --- |
|
||
| `name` | Name | QString | — | — | nein |
|
||
| `tilt` | Tilt (deg, 0=horizontal) | double | 0–90 | `30` | nein |
|
||
| `azimuth` | Azimuth (deg geographic, 180=South) | double | 0–360 | `180` | nein |
|
||
| `kwp` | Peak power kWp | double | — | `0` | nein |
|
||
| `performanceRatio` | Performance ratio (declared, not learned) | double | 0.1–1.0 | `1.0` | nein |
|
||
|
||
_Gemessene Größen:_
|
||
|
||
| Schlüssel | Größe | Typ | Einheit |
|
||
| --- | --- | --- | --- |
|
||
| `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 -->
|