Po co własny monitoring, skoro falownik ma aplikację?
Większość falowników fotowoltaicznych dostarczana jest z aplikacją mobilną lub portalem webowym. Niby wygodne – ale ile razy zdarzyło ci się, że aplikacja była niedostępna, serwer producenta leżał, albo dane były niedokładne lub opóźnione o kilka minut? Dla hobbysty technicznego, który lubi mieć dane pod kontrolą, jedynym sensownym rozwiązaniem jest własny, lokalny system monitoringu.
W tym artykule zbudujemy kompletny system oparty na Raspberry Pi, protokole MQTT, OpenDTU (dla falowników Hoymiles) oraz lokalnej bazie danych InfluxDB z dashboardem Grafana. Wszystkie komponenty działają lokalnie – bez chmury, bez zewnętrznych serwerów, z pełną kontrolą nad danymi.
Czego potrzebujemy?
- Raspberry Pi – model 3B+, 4 lub 5 (2 GB RAM wystarczy). Alternatywnie: stary laptop z Linuksem lub mini PC.
- Falownik Hoymiles – seria HM lub HMS, obsługiwana przez OpenDTU (lista kompatybilności na github.com/tbnobody/OpenDTU)
- ESP32 – do budowy własnego DTU (Data Transfer Unit) jeśli nie masz oryginalnego HM-DTU
- Karta microSD – min. 16 GB, klasa A1 lub A2
- Dostęp do sieci Wi-Fi lub Ethernet
Krok 1: Przygotowanie Raspberry Pi
Zainstaluj Raspberry Pi OS Lite (bez GUI) – to wystarczy do serwera monitoringu. Użyj Raspberry Pi Imager i skonfiguruj SSH oraz sieć Wi-Fi przed pierwszym uruchomieniem.
Po uruchomieniu zaktualizuj system:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl wget python3 python3-pip
Krok 2: Instalacja Mosquitto (broker MQTT)
MQTT to lekki protokół komunikacyjny idealny dla IoT. OpenDTU publikuje dane falownika do brokera MQTT, skąd odbiera je InfluxDB i inne systemy.
sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
Skonfiguruj podstawowe uwierzytelnianie w /etc/mosquitto/mosquitto.conf:
listener 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
Utwórz użytkownika: sudo mosquitto_passwd -c /etc/mosquitto/passwd solar
Krok 3: Instalacja InfluxDB 2.x
curl https://repos.influxdata.com/influxdata-archive.key | gpg --dearmor | sudo tee /usr/share/keyrings/influxdata-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/influxdata-archive-keyring.gpg] https://repos.influxdata.com/debian stable main" | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt update && sudo apt install influxdb2
sudo systemctl enable influxdb && sudo systemctl start influxdb
Otwórz panel InfluxDB na http://raspberry-pi-ip:8086 i skonfiguruj organizację, bucket (np. solar) oraz wygeneruj API token.
Krok 4: Telegraf – most między MQTT a InfluxDB
Telegraf to agent zbierający dane z różnych źródeł i zapisujący je do InfluxDB. Konfiguracja wejścia MQTT:
[[inputs.mqtt_consumer]]
servers = ["tcp://localhost:1883"]
topics = ["solar/#"]
username = "solar"
password = "twoje_haslo"
data_format = "json"
[[outputs.influxdb_v2]]
urls = ["http://localhost:8086"]
token = "TWOJ_API_TOKEN"
organization = "dom"
bucket = "solar"
Krok 5: OpenDTU na ESP32
OpenDTU to open-source firmware dla ESP32, który zastępuje oryginalny DTU Hoymilesa i udostępnia dane przez MQTT oraz REST API. Szczegółowy poradnik budowy OpenDTU na ESP32 opisujemy w osobnym artykule na naszym portalu.
Po wgraniu firmware OpenDTU na ESP32 i podłączeniu do sieci, skonfiguruj dane MQTT w panelu webowym OpenDTU:
- Broker: adres IP Raspberry Pi
- Port: 1883
- Login/hasło: solar / twoje_haslo
- Topic prefix: solar/
Krok 6: Instalacja Grafana
sudo apt install -y apt-transport-https software-properties-common
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt update && sudo apt install grafana
sudo systemctl enable grafana-server && sudo systemctl start grafana-server
Grafana dostępna na porcie 3000. Dodaj InfluxDB jako data source i zacznij budować dashboard z wykresami produkcji, mocy paneli i temperatury falownika.
Przykładowe zapytanie Flux do Grafany
from(bucket: "solar")
|> range(start: -24h)
|> filter(fn: (r) => r._measurement == "solar" and r._field == "power")
|> aggregateWindow(every: 5m, fn: mean)
|> yield(name: "mean")
Automatyczne uruchamianie i watchdog
Skonfiguruj systemd aby wszystkie usługi startowały automatycznie po restarcie Pi. Dodatkowo warto ustawić watchdog – jeśli Telegraf lub Mosquitto padnie, Pi je automatycznie zrestartuje.
Pro tip: Używaj UPS do zasilania Raspberry Pi – nawet tani UPS USB uchroni przed uszkodzeniem karty SD podczas przerw w zasilaniu. Karta SD to najsłabszy element tego systemu.
Podsumowanie i zasoby
Własny stos monitoringu Raspberry Pi + MQTT + InfluxDB + Grafana to potężne narzędzie, które daje pełną kontrolę nad instalacją PV bez zależności od chmury producenta. Całość można zbudować w jeden weekend. Więcej szczegółowych poradników na temat konfiguracji Linuksa, Docker i narzędzi IoT znajdziesz na iPraktyk.pl. Jeśli lubisz uczyć się praktycznie – platforma Umiej.pl oferuje kursy programowania (C/C++, PHP, SQL) w przystępnej formie.