# OpenMeteo
TESTING ETM CONSUMER
Aktuelle Wetterdaten für Ihren Standort abrufen.
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 ETM-PowerSync-App zeigt diese Prognosen neben den Messwerten an (erwartete
Erzeugung in den Diagrammen, Wetter Stunde für Stunde).
## 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 oder die Leistungsbegrenzung des Wechselrichters. 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
!!! 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 | — |