# 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 | — |