Monitoring i automatyka

Monitoring produkcji energii z Raspberry Pi i OpenDTU – krok po kroku

👁 5 wyświetleń

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.

Powiązane artykuły