Modbus Home Assistant – jak sterować roletami i integrować urządzenia przez Modbus?

Feliks Nitkowski
9 min czytania

Autor: Ekspert Smart Home | Data publikacji: 7 maja 2026

W erze inteligentnych domów Modbus stał się jednym z najbardziej niezawodnych protokołów do integracji urządzeń przemysłowych i automatyki z systemami takimi jak Home Assistant (HA). Jeśli chcesz sterować roletami za pomocą sterownika PLC, integrować silniki rolek czy inne urządzenia wyposażone w interfejs Modbus TCP/RTU, ten poradnik jest dla Ciebie. Przeprowadzimy Cię krok po kroku przez konfigurację – od podstawowej instalacji po zaawansowane automatyzacje i sceny.

Artykuł opiera się na praktycznych przykładach z forów społeczności HA, dokumentacji oficjalnej oraz polskich blogów specjalizujących się w automatyce domowej. Dowiesz się, jak uniknąć typowych błędów, zabezpieczyć system i zoptymalizować sterowanie roletami pod kątem czasu podróży, sun trackingu oraz integracji z Node-RED.

Czym jest Modbus i dlaczego warto go używać w Home Assistant?

Modbus to otwarty protokół komunikacyjny stworzony w 1979 roku przez Modicon (obecnie Schneider Electric). W smart home służy do odczytu/zapisu rejestrów (coils, discrete inputs, holding/input registers) w urządzeniach jak sterowniki PLC, inwertery, silniki czy przekaźniki.

Najważniejsze plusy w kontekście Home Assistant są następujące:

  • lokalna komunikacja – bez chmury i z niską latencją;
  • szerokie wsparcie – współpraca z PLC (np. Codesys, Siemens, WAGO) oraz tanimi modułami (np. ESP32 z Modbusem);
  • sterowanie roletami – idealne dla silników z krańcówkami, bez konieczności inwestowania w drogie moduły Zigbee/Z‑Wave;
  • skalowalność – obsługa wielu urządzeń na jednej magistrali RS485 lub po Ethernet (TCP).

Integracja Modbus w Home Assistant jest natywna i można ją skonfigurować w configuration.yaml lub przez interfejs użytkownika.

Wymagania sprzętowe i oprogramowanie

Zanim zaczniesz, przygotuj następujące elementy:

  • serwer HA – Raspberry Pi 4/5, NUC, maszyna wirtualna lub PLC z Linuxem (np. z Codesys Runtime);
  • sterownik PLC – np. WAGO, Siemens, Delta lub symulator Codesys;
  • urządzenia Modbus – silnik rolety z Modbusem lub przekaźniki NC/NO podłączone do PLC;
  • oprogramowanie – Home Assistant (najnowsza wersja), dodatek Node-RED do wizualnych przepływów, Codesys Development System do programowania PLC;
  • sieć – Modbus TCP (Ethernet) lub RTU (RS485 z konwerterem).

Koszt startowy: ~200–500 zł (PLC + moduł rolety).

Krok 1 – instalacja i konfiguracja Modbus w Home Assistant

1.1 Podstawowa integracja Modbus w pliku configuration.yaml

Edytuj plik configuration.yaml i dodaj przykładową konfigurację połączenia oraz encji dla rolety:

modbus:
- type: tcp
host: 192.168.1.100 # IP twojego PLC
port: 502
timeout: 5
close_comm_on_error: false

# Definicja sensora i switchy dla rolety
sensors:
- name: Roleta_Poziom
slave: 1
address: 40001 # Holding register dla pozycji (0-100%)
input_type: holding
count: 1
data_type: int16
precision: 0
unit_of_measurement: "%"

switches:
- name: Roleta_Gora
slave: 1
address: 00001 # Coil 1: UP
command_on: true
command_off: false

- name: Roleta_Dol
slave: 1
address: 00002 # Coil 2: DOWN

Po zapisaniu zmian zrestartuj HA (Developer Tools > Restart), a następnie sprawdź w: Ustawienia > Urządzenia i usługi > Modbus.

Uwaga: przed integracją przetestuj rejestry narzędziami takimi jak Modbus Poll/Explorer, aby potwierdzić adresy i typy rejestrów.

1.2 Modbus przez Node-RED (dla zaawansowanych przepływów)

Wykonaj poniższe kroki, aby dodać obsługę Modbus w Node-RED:

  1. Zainstaluj dodatek Node-RED w Home Assistant.
  2. W Node-RED przejdź do: Manage Palette > Install i zainstaluj paczkę node-red-contrib-modbus.
  3. Utwórz przepływ, który zapisze rozkaz do cewki (UP/DOWN) i połączy go z encjami HA.

Przykład: użyj przycisku Inject połączonego z węzłem Modbus Flex Write (slave ID: 1, FC: 5/6/16, adres: 1, wartość: 1 dla komendy UP), a następnie steruj encją HA (np. switch.roleta_gora).

Przykładowy przepływ JSON do importu w Node-RED:

[
{
"id": "roleta_up",
"type": "modbus-flex-write",
"server": "plc_server",
"fc": 5,
"address": 1,
"value": 1
}
]

W konfiguracji serwera wskaż IP PLC (również w przypadku symulatora – sprawdzisz je poleceniem ipconfig lub odpowiednikiem w swoim systemie).

Krok 2 – programowanie PLC dla sterowania roletami (Codesys)

Poniżej znajdziesz skrócony workflow w Codesys (na podstawie polskich tutoriali):

  1. Dodaj adapter Ethernet w projekcie Codesys: kliknij prawym przyciskiem myszy na urządzeniu > Add Device > Ethernet.

  2. Dodaj Modbus TCP Slave: PPM > Fieldbuses > Modbus TCP Slave Device.

  3. Mapowanie rejestrów dla rolety (przykład):

    Rejestr Typ Funkcja
    00001 Coil UP (włączenie)
    00002 Coil DOWN (włączenie)
    40001 Holding Pozycja % (RO)
    40002 Holding Czas podróży (s)
  4. Przykładowy kod ST (Structured Text) do obsługi kierunków i blokad:

PROGRAM Roleta_Control
VAR
UP_cmd AT %QX0.0 : BOOL; // Modbus Coil 1
DOWN_cmd AT %QX0.1 : BOOL; // Coil 2
Position AT %QW40001 : INT; // 0-100%
Moving : BOOL;
END_VAR

IF UP_cmd AND NOT Moving THEN
// Start UP, timer 25s (czas podróży)
Position := Position + 1; // Symulacja
Moving := TRUE; // Po czasie: stop i reset
ELSIF DOWN_cmd AND NOT Moving THEN
Position := Position - 1;
Moving := TRUE;
END_IF

// Zabezpieczenie: blokada obu kierunków
IF UP_cmd AND DOWN_cmd THEN
UP_cmd := FALSE;
DOWN_cmd := FALSE;
END_IF;

  1. Integracja z HA – w Node-RED dodaj konfigurację encji HA (np. button.roleta_gora) i powiąż ją z zapisami do cewek.

Krok 3 – tworzenie cover entity dla rolety (Cover Time Based Synced)

Aby uzyskać natywne sterowanie (otwórz/zamknij/stop/pozycja), skorzystaj z HACS i komponentu cover_time_based_synced:

  1. Zainstaluj w HACS integrację cover_time_based_synced.
  2. Dodaj helpery (input_boolean), które będą sterować komendami UP/DOWN:

input_boolean:
roleta_up:
name: "Roleta UP"
roleta_down:
name: "Roleta DOWN"

  1. Skonfiguruj cover w configuration.yaml wskazując czasy ruchu i encje helperów:

cover:
- platform: cover_time_based_synced
devices:
salon_roleta:
name: "Roleta Salon"
travelling_time_up: 26 # sekundy na pełne otwarcie
travelling_time_down: 24 # sekundy na pełne zamknięcie
open_switch_entity_id: input_boolean.roleta_up
close_switch_entity_id: input_boolean.roleta_down
send_stop_at_ends: false

  1. Automatyzacja – połącz helpery z przełącznikami Modbus (UP/DOWN) przez automatyzacje HA lub przepływy w Node-RED.

Krok 4 – zaawansowane automatyzacje i sceny

Śledzenie słońca

Przykładowa automatyzacja YAML, która domyka rolety 30 minut przed zachodem słońca:

automation:
- alias: "Rolety na zachód słońca"
trigger:
- platform: sun
event: sunset
offset: "-00:30:00"
action:
- service: cover.close_cover
target:
entity_id: cover.salon_roleta

Zabezpieczenia

Amperometria: odczytaj prąd z rejestru Modbus (np. holding 40003) i zatrzymaj napęd po wykryciu wzrostu ponad próg, aby chronić mechanikę.

Blokada kierunków: wymuś logikę w PLC lub w Node-RED (np. if up then down=off), by uniknąć jednoczesnej pracy obu kierunków.

Sceny

Prosty przykład sceny otwierającej rolety rano:

scene:
- name: Poranne rolety
entities:
cover.salon_roleta: open

Typowe problemy i rozwiązania

Najczęstsze trudności i szybkie propozycje naprawy:

Problem Rozwiązanie
Brak połączenia Sprawdź firewall, ping do IP PLC oraz czy port 502 jest otwarty.
Rejestry nieodczytywane Zweryfikuj adresy w Modbus Poll/Explorer; Holding=4xxxx, Coils=0xxxx.
Roleta nie zatrzymuje Skalibruj czasy travelling_time_* i dodaj timer/limit w PLC.
Wydajność Dodaj niewielkie opóźnienie odczytów (np. delay: 100ms) i retry przy błędach.

Bezpieczeństwo: trzymaj Modbus w odseparowanej sieci (VLAN), zabezpiecz dostęp do PLC hasłem i nie wystawiaj urządzeń na WAN.

Alternatywy dla Modbus

Jeśli szukasz prostszej lub innej ścieżki integracji, rozważ:

  • Shelly 2.5PM – Wi‑Fi, natywna integracja HA, wbudowany pomiar prądu;
  • Zigbee/Z‑Wave – np. Tuya, Aqara; proste wdrożenie, choć zwykle wyższy koszt jednostkowy;
  • ESPHome – własny gateway Modbus na ESP32 z pełną kontrolą konfiguracji.

Źródła i dalsza lektura

Polecane materiały do pogłębienia tematu:

  • Oficjalna dokumentacja Home Assistant – Modbus, https://www.home-assistant.io/integrations/modbus/;
  • Polski tutorial PLC + HA (Controlbyte), https://www.controlbyte.pl/blog/jak-sterowac-roletami-w-domu-sterownikiem-plc-i-home-assistant/;
  • Forum Home Assistant: sterowanie roletami przez Modbus, https://www.smartnydom.pl/forum/main-category-home-assistant/ha-sterowanie-silnikiem-rolet-przez-modbus/.

Masz pytania? Zostaw komentarz i zasubskrybuj, aby nie przegapić kolejnych poradników smart home.

Udostępnij ten artykuł
Brak komentarzy

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *