Zum Inhalt springen

Umstellung auf pvnode

Diese Anleitung beschreibt die Umstellung des Forecast-Collectors von einem anderen Anbieter (Forecast.Solar oder Solcast) auf pvnode.

  1. Erstelle einen kostenlosen Account bei pvnode.com
  2. Nach der Anmeldung navigiere zu API Keys
  3. Erstelle einen neuen API-Key und kopiere ihn
.env
# Alt:
# FORECAST_PROVIDER=forecast.solar
# Neu:
FORECAST_PROVIDER=pvnode
.env
PVNODE_APIKEY=pvn_dein-api-key-hier

pvnode verwendet ein anderes Koordinatensystem für die Dachausrichtung: Grad von Nord (0-360) statt Grad von Süd (-180 bis 180). Die Werte müssen daher umgerechnet werden:

HimmelsrichtungForecast.Solarpvnode
Süd0180
Ost-9090
West90270
Nord180 / -1800

Formel: pvnode = (alter_wert + 180) mod 360

.env (Beispiel für zwei Dachflächen)
# Alt (Forecast.Solar):
# FORECAST_0_AZIMUTH=10
# FORECAST_1_AZIMUTH=-90
# Neu (pvnode):
FORECAST_0_AZIMUTH=190
FORECAST_1_AZIMUTH=90

Der Forecast-Collector schreibt in ein eigenes InfluxDB-Measurement, standardmäßig heißt dieses Forecast. Eine Umstellung auf pvnode erfordert keine Anpassung der InfluxDB-Einstellungen, da die Daten im selben Measurement bleiben. Prüfe aber, ob bei dir ggfs. ein anderes Measurement in der .env eingetragen ist:

.env
INFLUX_MEASUREMENT_FORECAST=Forecast

Der Forecast-Collector schreibt die erhaltenen in Prognosen in folgende Fields von InfluxDB:

FeldnameBeschreibung
wattPrognostizierte Leistung (Watt)
watt_clearskyClearsky-Prognose (Watt)
tempAußentemperatur (°C)

Um die zusätzlichen Daten von pvnode im Dashboard anzuzeigen, müssen zwei neue Sensoren in der .env definiert werden:

.env
# Bereits vorhanden
INFLUX_SENSOR_INVERTER_POWER_FORECAST=Forecast:watt
# Neu hinzuzufügen
INFLUX_SENSOR_INVERTER_POWER_FORECAST_CLEARSKY=Forecast:watt_clearsky
INFLUX_SENSOR_OUTDOOR_TEMP_FORECAST=Forecast:temp

Wichtig: Achte auf die korrekte Groß-/Kleinschreibung des Measurements, hier Forecast - InfluxDB ist case-sensitive. Wenn der Collector z.b. nach forecast schreibt, das Dashboard aber Forecast abfragt, werden keine Daten angezeigt!

.env
# Bei kostenpflichtigem Account:
# PVNODE_PAID=true
# Optionale zusätzliche Parameter:
# PVNODE_EXTRA_PARAMS=diffuse_radiation_model=perez

Damit die neuen Variablen aus der .env auch in die Container übernommen werden, müssen sie in der compose.yaml eingetragen werden.

Beim forecast-collector-Service müssen die pvnode-spezifischen Variablen ergänzt werden:

compose.yaml (Auszug)
services:
forecast-collector:
# ...
environment:
# ...
- PVNODE_APIKEY # NEU
- PVNODE_PAID # NEU
- PVNODE_EXTRA_PARAMS # NEU
- PVNODE_0_EXTRA_PARAMS # NEU
- PVNODE_1_EXTRA_PARAMS # NEU
- PVNODE_2_EXTRA_PARAMS # NEU
- PVNODE_3_EXTRA_PARAMS # NEU
# ...

Beim dashboard-Service müssen die neuen Sensor-Variablen ergänzt werden:

compose.yaml (Auszug)
services:
dashboard:
# ...
environment:
# ...
- INFLUX_SENSOR_INVERTER_POWER_FORECAST
- INFLUX_SENSOR_INVERTER_POWER_FORECAST_CLEARSKY # NEU
- INFLUX_SENSOR_OUTDOOR_TEMP_FORECAST # NEU
# ...

Nach dem Speichern der Dateien müssen die Container aktualisiert und neu gestartet werden:

Terminal-Fenster
docker compose pull
docker compose up -d

Prüfe anschließend das Protokoll des Forecast-Collectors:

Terminal-Fenster
docker compose logs -f forecast-collector

Bei erfolgreicher Konfiguration sollten nach kurzer Zeit die ersten Prognosen abgerufen werden und mit “OK” quittiert werden.

pvnode speichert Standorte auf 5 Nachkommastellen genau. Bei einer Änderung wird ein neuer Standort angelegt, was im kostenlosen Tarif zur Fehlermeldung “Site limit has been exceeded” führen kann.

Daraus folgt: Nach dem ersten Abruf dürfen FORECAST_LATITUDE und FORECAST_LONGITUDE für eine Weile nicht mehr geändert werden! Sorge also dafür, dass die Koordinaten bereits vor dem ersten Abruf korrekt und genau eingetragen sind.

Im pvnode Studio kannst du unter “Standort auswählen” → “Bereits verwendeten Standort auswählen” deine gespeicherten Standorte einsehen.

Wenn der Forecast-Collector Daten erfolgreich abruft, diese aber nicht im Dashboard erscheinen:

  1. Prüfe, ob die Sensor-Variablen in der .env korrekt definiert sind
  2. Prüfe, ob die Variablen auch in der compose.yaml beim Dashboard-Service eingetragen sind
  3. Achte auf die korrekte Groß-/Kleinschreibung des Measurements (InfluxDB ist case-sensitive)