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>
233 lines
12 KiB
Markdown
233 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`.
|
||
|
||
## 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;
|
||
- 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 -->
|