Własny stos monitoringu PV – dlaczego warto?
Gdy zbudujesz lub kupisz instalację fotowoltaiczną, naturalnym krokiem jest chęć śledzenia jej pracy. Aplikacje producentów falowników oferują podstawowe dane, ale mają ograniczenia: zależność od chmury, brak historii długoterminowej, niemożliwość korelacji z innymi danymi domowymi. Grafana + InfluxDB to open-source stack, który rozwiązuje wszystkie te problemy i daje nieograniczone możliwości wizualizacji.
Architektura systemu
Typowy stos monitoringu PV składa się z:
- Źródła danych: falownik (Modbus/MQTT), Shelly 3EM (MQTT), czujniki temperatury (DS18B20 na GPIO Raspberry Pi)
- Broker MQTT: Mosquitto – zbiera dane ze wszystkich źródeł
- Agent zbierający: Telegraf – czyta MQTT i zapisuje do InfluxDB
- Baza danych: InfluxDB 2.x – baza szeregów czasowych zoptymalizowana pod dane pomiarowe
- Wizualizacja: Grafana – dashboardy, alerty, raporty
Całość można uruchomić na Raspberry Pi 4 (2 GB RAM) lub w Dockerze na dowolnym serwerze Linux.
Instalacja z Dockerem (zalecane)
Najwygodniejsza metoda to Docker Compose. Utwórz plik docker-compose.yml:
version: "3"
services:
influxdb:
image: influxdb:2.7
ports:
- "8086:8086"
volumes:
- influxdb-data:/var/lib/influxdb2
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=admin
- DOCKER_INFLUXDB_INIT_PASSWORD=haslo123
- DOCKER_INFLUXDB_INIT_ORG=dom
- DOCKER_INFLUXDB_INIT_BUCKET=solar
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
volumes:
- grafana-data:/var/lib/grafana
depends_on:
- influxdb
telegraf:
image: telegraf:latest
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
depends_on:
- influxdb
volumes:
influxdb-data:
grafana-data:
Uruchom: docker compose up -d
Konfiguracja Telegraf dla falownika Modbus
Falowniki z obsługą Modbus RTU/TCP (Deye, Growatt, Sofar) można odpytywać bezpośrednio przez wtyczkę inputs.modbus Telegrafa. Przykład dla falownika Deye przez adapter RS485-USB:
[[inputs.modbus]]
name = "deye_inverter"
controller = "/dev/ttyUSB0"
baud_rate = 9600
data_bits = 8
parity = "N"
stop_bits = 1
slave_id = 1
[[inputs.modbus.metric]]
name = "production"
slave_id = 1
byte_order = "ABCD"
data_format = "FLOAT32-IEEE"
measurement = "solar"
[[inputs.modbus.metric.field]]
name = "total_power"
address = [0x0485]
[[inputs.modbus.metric.field]]
name = "pv1_voltage"
address = [0x04A7]
Tworzenie dashboardu w Grafanie
Po skonfigurowaniu data source (InfluxDB z tokenem API i organizacją dom), utwórz nowy dashboard. Polecane panele:
Panel 1: Moc produkcji w czasie rzeczywistym
- Typ: Time series
- Zapytanie Flux: dane z pola
total_power - Zakresy czasu: ostatnie 24h z odświeżaniem co 30 s
Panel 2: Bilans energii dzienny
- Typ: Bar chart
- Serie: produkcja, zużycie własne, eksport, import z sieci
- Agregacja: dzień (sum z 1h windowing)
Panel 3: Wydajność względem napromieniowania
- Jeśli masz czujnik napromieniowania lub dane z API meteo – korelacja z produkcją PV pozwoli wykryć problemy (zabrudzenie, uszkodzenie paneli)
Panel 4: Temperatura falownika i baterii
- Typ: Gauge / Time series
- Alerty gdy temperatura falownika przekroczy 70°C lub baterii 45°C
Alerty w Grafanie
Grafana pozwala skonfigurować alerty wysyłane przez e-mail, Telegram lub Slack. Przydatne reguły alertów dla instalacji PV:
- Produkcja = 0 w godzinach 10:00–16:00 (możliwa awaria falownika)
- Moc ujemna przez ponad 1 h w nocy (zużycie standby powyżej normy)
- SoC baterii poniżej 10% przez więcej niż 30 minut
- Temperatura falownika powyżej 75°C
Długoterminowe przechowywanie i retention policy
InfluxDB 2.x pozwala ustawić Retention Policy (RP) per bucket. Zalecana konfiguracja:
- Bucket solar_raw: dane surowe co 5 s, RP = 30 dni
- Bucket solar_1min: agregaty minutowe, RP = 1 rok
- Bucket solar_1h: agregaty godzinowe, RP = bezterminowo
Automatyczne downsampling konfiguruje się przez Zadania (Tasks) w InfluxDB. Skrypt Flux do agregacji minutowej:
option task = {name: "downsample_1min", every: 1m}
from(bucket: "solar_raw")
|> range(start: -2m)
|> filter(fn: (r) => r._measurement == "solar")
|> aggregateWindow(every: 1m, fn: mean)
|> to(bucket: "solar_1min")
Zasoby i społeczność
Dokumentację Grafany i InfluxDB znajdziesz na ich oficjalnych stronach. Gotowe dashboardy do pobrania są na grafana.com/dashboards (wyszukaj "solar" lub "photovoltaic"). Polskie poradniki konfiguracyjne dla Grafany i narzędzi DevOps dostępne są na iPraktyk.pl – szczególnie przydatne jeśli dopiero zaczynasz przygodę z Linuksem i kontenerami Docker.
Podsumowanie
Grafana + InfluxDB to przemysłowy standard monitoringu szeregów czasowych, dostępny za darmo i łatwy do uruchomienia nawet na tanim Raspberry Pi. Raz skonfigurowany system działa latami bez ingerencji, zbierając cenne dane o pracy instalacji PV. To inwestycja w wiedzę o własnej energetyce – i jedna z największych satysfakcji dla technicznie zaawansowanego właściciela paneli. Jeśli chcesz pogłębić umiejętności z zakresu baz danych i wizualizacji danych, zajrzyj na Umiej.pl gdzie znajdziesz strukturyzowane kursy z SQL i programowania – podstaw każdego projektu z danymi.