Monitoring i automatyka

DIY telemetria dla instalacji PV i offgrid – Raspberry Pi, MQTT, Node-RED i Grafana krok po kroku

👁 5 wyświetleń

Dobra telemetria to podstawa świadomego zarządzania energią. Bez danych nie wiesz kiedy Twoja bateria jest przeciążona, ile energii tracisz w konwersji ani kiedy warto włączyć pralkę. Ten artykuł pokazuje jak zbudować kompletny system monitorowania od zera, bez subskrypcji i chmury zewnętrznej.

Architektura systemu telemetrycznego

Panel PV + MPPT Victron
    |
    | VE.Direct USB
    v
Raspberry Pi 4 (Venus OS)
    |
    | MQTT publish (lub REST API)
    v
Mosquitto Broker (lokalnie na RPi lub osobnym serwerze)
    |
    | Subscribe
    v
Node-RED (transformacja danych)
    |
    | HTTP/InfluxDB line protocol
    v
InfluxDB (baza szeregów czasowych)
    |
    | Query
    v
Grafana (dashboardy, alerty)

Krok 1 – Venus OS na Raspberry Pi

Venus OS to system operacyjny Victron Energy na RPi, który integruje wszystkie urządzenia Victron przez VE.Direct lub VE.Bus:

# Pobierz Venus OS:
# https://github.com/victronenergy/venus/wiki/raspberrypi-install

# Wgraj na kartę SD (min. 8GB):
sudo dd if=venus-image-raspberrypi4.wic.gz | gunzip | sudo dd of=/dev/sdX bs=4M

# Po uruchomieniu: Venus OS jest dostępne pod adresem IP RPi
# Interfejs webowy: http://IP_RPi:80

W Venus OS włącz MQTT on LAN: Settings → Services → MQTT on LAN → Enabled. Broker publikuje dane w czasie rzeczywistym na localhost:1883.

Krok 2 – Instalacja Mosquitto MQTT Broker

sudo apt-get install mosquitto mosquitto-clients -y
sudo systemctl enable mosquitto
sudo systemctl start mosquitto

# Test – sprawdź czy MPPT publikuje dane:
mosquitto_sub -h localhost -t "N/+/solarcharger/+/Dc/0/#" -v
# Powinieneś zobaczyć:
# N/abc123/solarcharger/257/Dc/0/Voltage {"value": 52.4}
# N/abc123/solarcharger/257/Dc/0/Current {"value": 18.2}

Krok 3 – Node-RED – transformacja danych

# Instalacja Node-RED:
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
sudo systemctl enable nodered
sudo systemctl start nodered
# Dostępne pod: http://IP_RPi:1880

W Node-RED tworzymy przepływ:

  1. MQTT in node → subskrybuje topic Venus OS
  2. Function node → parsuje JSON, oblicza moc (P = U × I)
  3. InfluxDB out node → zapisuje do bazy

Przykładowy kod Function node:

// Parsuj dane z Venus OS MQTT
const topic = msg.topic;
const value = msg.payload.value;

if (topic.includes("Voltage")) {
    flow.set("voltage", value);
} else if (topic.includes("Current")) {
    flow.set("current", value);
    const voltage = flow.get("voltage") || 0;
    msg.payload = {
        measurement: "solar",
        fields: {
            voltage: voltage,
            current: value,
            power: Math.round(voltage * value * 10) / 10
        },
        timestamp: new Date()
    };
    return msg;
}
return null;

Krok 4 – InfluxDB 2.x

# Instalacja InfluxDB na Raspberry Pi 4:
curl https://repos.influxdata.com/influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo "deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main" | sudo tee /etc/apt/sources.list.d/influxdata.list
sudo apt-get update && sudo apt-get install influxdb2 -y
sudo systemctl enable influxdb && sudo systemctl start influxdb

# Konfiguracja (przez przeglądarkę http://IP_RPi:8086):
# Utwórz organizację, bucket "solar" z retention 365 days
# Wygeneruj API token dla Node-RED

Krok 5 – Grafana – dashboardy

# Instalacja Grafana:
sudo apt-get install -y apt-transport-https software-properties-common
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt-get update && sudo apt-get install grafana -y
sudo systemctl enable grafana-server && sudo systemctl start grafana-server
# Dostępne pod: http://IP_RPi:3000 (admin/admin)

W Grafanie podłącz InfluxDB jako datasource i stwórz dashboard z panelami:

  • Gauge: aktualny SOC baterii
  • Time series: produkcja PV dzień/tydzień/miesiąc
  • Stat: energia dzisiaj (kWh), oszczędności (zł)
  • Bar chart: produkcja per godzina (Heat map)

Alternatywa: Home Assistant z integracją Victron

Jeśli już masz Home Assistant, możesz zainstalować oficjalną integrację Victron przez HACS. Wszystkie dane pojawiają się jako encje HA – możesz tworzyć automatyzacje (np. włącz pralkę gdy SOC > 80%) i mieć dashboardy w HA Lovelace.

Alerty i powiadomienia

W Grafanie konfiguruj alerty email/Telegram gdy:

  • SOC < 15% – bateria krytycznie niska
  • Temperatura baterii > 45°C – przegrzanie
  • Produkcja PV = 0 przez > 4h w dzień – możliwe zacienienie lub awaria
  • Prąd ładowania > 110% max BMS – problem z regulatorem
# Telegram bot alert (curl przykład):
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" 
  -d "chat_id=${CHAT_ID}" 
  -d "text=⚠️ SOC baterii: ${SOC}% – sprawdź instalację!"

Koszty całego systemu telemetrycznego

  • Raspberry Pi 4 2GB: 200–300 zł
  • Karta SD 32GB Class 10: 30 zł
  • Kabel VE.Direct do USB: 60–100 zł
  • Obudowa + zasilacz: 50 zł
  • Razem: ok. 380–480 zł
  • Oprogramowanie: wszystko bezpłatne i open-source

Powiązane artykuły