Protokół Modbus w inteligentnym domu – odczyt danych z liczników, falowników i pomp ciepła
Jeśli interesujesz się automatyką domową na poważnym poziomie, wcześniej czy później trafisz na protokół Modbus. Choć pochodzi z lat 70. ubiegłego wieku i pierwotnie był projektowany do zastosowań przemysłowych, dziś stanowi jeden z fundamentów komunikacji w urządzeniach energetycznych instalowanych w domach jednorodzinnych. Liczniki energii, falowniki PV, pompy ciepła, klimatyzatory i sterowniki ładowarek EV – wszystkie te urządzenia bardzo często "mówią" właśnie Modbusem.
Czym jest protokół Modbus?
Modbus to protokół komunikacyjny typu master-slave (lub w nowszej nomenklaturze: client-server), opracowany w 1979 roku przez firmę Modicon. Jego ogromną zaletą jest prostota, otwartość (jest bezpłatny i niepatentowany) oraz niezawodność. Protokół definiuje sposób, w jaki urządzenia wymieniają dane – jedno urządzenie zadaje pytanie (master/client), a drugie odpowiada (slave/server).
W praktyce domowej automatyki najczęściej spotykamy dwa warianty:
- Modbus RTU – komunikacja przez interfejs szeregowy RS-485 (fizyczne przewody, zwykle 3-żyłowe: A, B i GND). To wariant dominujący w urządzeniach energetycznych.
- Modbus TCP – komunikacja przez sieć Ethernet/Wi-Fi. Coraz popularniejszy w nowoczesnych urządzeniach, prostszy w integracji z systemami smart home.
Istnieje również Modbus ASCII, ale w zastosowaniach domowych praktycznie go nie spotkasz.
Jak działa komunikacja Modbus RTU?
W sieci Modbus RTU mamy jeden master (np. komputer z Home Assistant, Raspberry Pi lub specjalny gateway) oraz do 247 slave'ów podłączonych na jednej magistrali RS-485. Każde urządzenie slave ma unikalny adres (1–247).
Dane w urządzeniach Modbus są przechowywane w tzw. rejestrach. Wyróżniamy kilka typów:
- Holding Registers (0x03) – rejestry 16-bitowe do odczytu i zapisu, najczęściej używane do przechowywania parametrów pomiarowych
- Input Registers (0x04) – rejestry tylko do odczytu, typowo dla danych pomiarowych
- Coils (0x01) – bity do odczytu i zapisu (np. stan włącz/wyłącz)
- Discrete Inputs (0x02) – bity tylko do odczytu
Aby odczytać np. chwilową moc z licznika energii, master wysyła ramkę zawierającą: adres urządzenia, kod funkcji (np. 0x03), adres rejestru startowego i liczbę rejestrów do odczytania. Slave odpowiada ramką z danymi i sumy kontrolnej CRC.
Modbus w licznikach energii elektrycznej
Liczniki energii z interfejsem Modbus RTU to jeden z najczęstszych przypadków użycia w domowej automatyce. Popularne modele to m.in. Eastron SDM120, SDM630, Finder 7E, Carlo Gavazzi EM24 czy tańsze zamienniki dostępne na popularnych platformach zakupowych.
Takie liczniki podłącza się do magistrali RS-485 i podaje im odpowiedni adres Modbus. Następnie, odpytując wybrane rejestry, można odczytać m.in.:
- Napięcie fazowe (V)
- Natężenie prądu (A)
- Moc czynna, bierna i pozorna (W, VAR, VA)
- Współczynnik mocy (cos φ)
- Częstotliwość sieci (Hz)
- Energię skumulowaną (kWh) – import i eksport
Dla licznika Eastron SDM120 rejestr 0x0000 zawiera napięcie, 0x0006 – moc czynną, a 0x0046 – łączną energię importowaną. Oczywiście każdy producent ma własną mapę rejestrów – znajdziesz ją w dokumentacji technicznej urządzenia.
Przykładowy schemat podłączenia licznika SDM120 do bramki RS-485:
Licznik SDM120:
Terminal A (RS-485+) → Przewód A magistrali
Terminal B (RS-485-) → Przewód B magistrali
Terminal GND → GND (ekran kabla)
Konwerter USB-RS485 lub RS485-ETH → PC / Raspberry Pi
Modbus w falownikach fotowoltaicznych
Falowniki (inwertery) fotowoltaiczne to kolejna kategoria urządzeń powszechnie obsługujących Modbus. Producenci tacy jak Fronius, SMA, Huawei, Solis, Growatt, Sofar Solar czy GoodWe implementują Modbus RTU lub TCP (lub oba) w swoich urządzeniach.
Dzięki odczytowi danych z falownika przez Modbus możesz w czasie rzeczywistym monitorować:
- Aktualną produkcję energii słonecznej (W)
- Napięcia i prądy na wejściach MPPT (z poszczególnych stringów paneli)
- Temperaturę falownika
- Dzienny i skumulowany uzysk energii (kWh)
- Stan pracy (grid-tied, off-grid, alarm itp.)
- Parametry magazynu energii (SOC akumulatora, kierunek przepływu mocy)
W przypadku falownika Huawei SUN2000 Modbus TCP jest dostępny po aktywacji w konfiguracji urządzenia (domyślnie port 502). Falowniki Solis i Growatt obsługują Modbus RTU przez złącze RS-485 dostępne na listwie zaciskowej.
Warto zwrócić uwagę, że część producentów stosuje niestandardowe rozszerzenia protokołu lub wymaga specyficznej kolejności bajtów (big-endian vs. little-endian) przy odczycie wartości 32-bitowych (Float lub Long Integer) przechowywanych w dwóch kolejnych rejestrach 16-bitowych.
Modbus w pompach ciepła
Pompy ciepła to urządzenia, w których integracja przez Modbus daje wyjątkowo dużo możliwości. Producenci tacy jak Daikin, Mitsubishi Electric, Vaillant, Viessmann, Atlantic, Panasonic Aquarea czy NIBE oferują opcję komunikacji Modbus (często jako opcjonalny moduł do dokupienia).
Poprzez Modbus można odczytywać i ustawiać:
- Aktualną moc pobieraną przez pompę ciepła (W)
- Temperatury: zasilania, powrotu, zewnętrzną, cwu
- COP (Coefficient of Performance) – współczynnik efektywności
- Tryb pracy (ogrzewanie, chłodzenie, CWU, tryb eco)
- Zadane temperatury (setpointy)
- Stany alarmów i błędów
- Godziny pracy sprężarki
Integracja pompy ciepła z systemem automatyki domowej przez Modbus otwiera możliwość zarządzania popytem energetycznym – np. automatyczne zwiększanie produkcji CWU gdy falownik PV produkuje nadwyżkę energii, albo obniżanie temperatury zasilania w godzinach wysokich cen energii (integracja z taryfą dynamiczną).
Jak zintegrować Modbus z Home Assistant?
Home Assistant to najpopularniejsza platforma open-source do automatyki domowej, która posiada wbudowaną integrację Modbus. Konfiguracja odbywa się przez plik configuration.yaml lub (w nowszych wersjach) częściowo przez interfejs graficzny.
Przykładowa konfiguracja integracji Modbus TCP w Home Assistant dla falownika PV:
modbus:
- name: "Falownik PV"
type: tcp
host: 192.168.1.100
port: 502
sensors:
- name: "Moc AC falownika"
slave: 1
address: 32080
input_type: holding
data_type: int32
scale: 1
unit_of_measurement: W
device_class: power
- name: "Energia dzienna PV"
slave: 1
address: 32114
input_type: holding
data_type: uint32
scale: 0.01
unit_of_measurement: kWh
device_class: energy
Dla Modbus RTU potrzebujesz konwertera USB-RS485 (np. chip CH340 lub FTDI) lub konwertera RS485-Ethernet (np. Waveshare RS485 TO ETH, USR-W630). Konwertery sieciowe są wygodniejsze – pozwalają umieścić "bramkę" blisko urządzeń i komunikować się z nią przez sieć lokalną.
Inne platformy i narzędzia
Poza Home Assistant, Modbus jest obsługiwany przez wiele innych systemów i narzędzi:
- Node-RED – węzły
node-red-contrib-modbusumożliwiają tworzenie przepływów odczytujących i zapisujących dane Modbus - ioBroker – adapter Modbus dostępny w oficjalnym repozytorium
- openHAB – binding Modbus z szerokim wsparciem dla RTU i TCP
- MQTT + skrypt Python – własny skrypt używający biblioteki
pymodbusmoże publikować dane na broker MQTT, skąd odbierają je dowolne systemy - Loxone, KNX – via bramki protokołowe
Praktyczne wskazówki i pułapki
Praca z Modbusem bywa kapryśna – zwłaszcza w środowiskach z wieloma urządzeniami. Oto kilka praktycznych zasad:
- Terminatory magistrali RS-485 – na obu końcach magistrali RS-485 powinny być rezystory terminujące 120 Ω. Wiele urządzeń ma wbudowany przełącznik terminatora.
- Długość kabla i topologia – RS-485 obsługuje do ~1200 m przy prędkości 100 kbps. Stosuj topologię magistrali (łańcuch), nie gwiazdy. Kabel skrętka (najlepiej ekranowana) – np. LIYCY 2×0,5 mm².
- Prędkość transmisji i parzystość – domyślnie wiele urządzeń pracuje z 9600 baud, 8N1. Upewnij się, że wszystkie urządzenia na magistrali mają identyczne ustawienia.
- Unikalne adresy slave – każde urządzenie musi mieć inny adres. Sprawdź i ustaw adresy przed podłączeniem do wspólnej magistrali.
- Timeouty i interwały odpytywania – nie odpytuj urządzeń zbyt często (minimalny odstęp to zwykle 1–2 sekundy dla urządzenia). Zbyt częste zapytania mogą powodować błędy lub zawieszenie urządzenia.
- Dokumentacja techniczna – mapa rejestrów jest kluczowa. Szukaj dokumentu "Modbus Register Map" lub "Communication Protocol" na stronie producenta lub w serwisach takich jak GitHub.
Podsumowanie
Protokół Modbus, mimo swoich lat, pozostaje jednym z najważniejszych standardów komunikacji w domowych instalacjach energetycznych. Jego otwartość, prostota i powszechność sprawiają, że jest niezastąpionym narzędziem dla każdego, kto chce mieć pełną kontrolę nad przepływami energii w swoim domu – od produkcji przez panele PV, przez magazynowanie w bateriach, aż po zużycie przez pompę ciepła czy ładowarkę samochodu elektrycznego.
Inwestycja w interfejs Modbus i czas poświęcony na konfigurację integracji zwraca się wielokrotnie – w postaci precyzyjnych danych, możliwości optymalizacji i pełnej wizualizacji zużycia energii w czasie rzeczywistym. Jeśli planujesz rozbudowę instalacji elektrycznej o licznik Modbus, falownik PV lub pompę ciepła, warto już na etapie zakupu upewnić się, że wybrane urządzenie obsługuje ten protokół.