Zigbee2MQTT vs ZHA: który stos w Home Assistant wybrać i dlaczego

0
79
3/5 - (1 vote)

Cel: mądrze wybrać między Zigbee2MQTT a ZHA, bez żalu po instalacji

Wybór stosu Zigbee w Home Assistant to decyzja na lata. Od niej zależy stabilność czujników, responsywność automatyzacji i łatwość utrzymania całego smart domu.

Brief decyzji: pytania, na które chcesz dostać jasne odpowiedzi

  • Czy Zigbee2MQTT obsłuży więcej „egzotycznych” urządzeń niż ZHA i czy to naprawdę ma znaczenie?
  • Który stos lepiej nadaje się na start dla osoby bez doświadczenia z MQTT?
  • Jakie są praktyczne różnice w codziennym użytkowaniu (parowanie, aktualizacje OTA, grupy, sceny, binding)?
  • Jaki koordynator USB wybrać do ZHA, a jaki do Zigbee2MQTT? Czy da się korzystać z multiprotokołu (Thread + Zigbee) bez strat?
  • Co, jeśli będę chciał zmienić stos w przyszłości – czy muszę parować wszystko od nowa?
  • Jak uniknąć problemów z zasięgiem i utratą połączeń, zwłaszcza przy bateriowych czujnikach Aqara i Tuya?
  • Jakie są realne granice skali (liczba urządzeń) i kiedy rozważyć drugi koordynator?

Szybka odpowiedź: ZHA czy Zigbee2MQTT? Decyzja w 60 sekund

Jeśli spełniasz większość z poniższych – wybierz ZHA

  • Chcesz maksymalnej prostoty (bez zewnętrznego brokera MQTT) i integracji „prosto w HA”.
  • Używasz koordynatora na bazie Silicon Labs (np. Home Assistant SkyConnect, Sonoff ZBDongle-E) i planujesz multiprotocol/Thread w przyszłości.
  • Stawiasz na stabilną podstawę i urządzenia Zigbee 3.0 znanych marek (IKEA, Sonoff, Philips Hue, Aeotec, Tuya).
  • Wolisz konfigurować grupy, binding i OTA w UI Home Assistant, bez dodatkowych narzędzi.

Jeśli spełniasz większość z poniższych – wybierz Zigbee2MQTT

  • Masz mieszankę różnych, także niszowych urządzeń i chcesz największej szansy wsparcia „od ręki”.
  • Nie przeszkadza Ci posiadanie brokera MQTT (Mosquitto) i podoba Ci się debugowanie przez tematy MQTT.
  • Chcesz łatwo tworzyć własne „konwertery” dla niestandardowych funkcji urządzeń.
  • Twój koordynator bazuje na TI CC2652/CC1352 (np. Sonoff ZBDongle-P), a Ty lubisz kontrolę i rozbudowane logi.

Mit vs rzeczywistość #1

Mit: Zigbee2MQTT jest zawsze stabilniejszy od ZHA. Rzeczywistość: Stabilność sieci w 80% zależy od koordynatora, jakości routerów (zasilanych z sieci) i poprawnej konfiguracji kanału, a nie od tego, czy użyjesz ZHA czy Zigbee2MQTT.

Krok po kroku: procedura podjęcia decyzji

Krok 1: Inwentaryzacja urządzeń i plan wzrostu

Spisz listę urządzeń, które masz i które planujesz dołożyć w 6–12 miesięcy. Oznacz:

Zigbee2MQTT vs ZHA: który stos w Home Assistant wybrać i dlaczego
Źródło: Pexels | Autor: Jakub Zerdzicki
  • Urządzenia sieciowe (routery Zigbee) – wszystko na 230 V: gniazdka, przekaźniki, żarówki, wzmacniacze sygnału.
  • Czujniki na baterie – końcowe (end devices), często „kapryśne” w doborze routera, np. Aqara.
  • Urządzenia o nietypowych funkcjach – np. przyciski z zaawansowanymi kombinacjami, zamki, rolety z niestandardowymi klastrami.

Jeśli masz sporo egzotycznych czujników i elementów sterujących (głównie no-name z marketplace), Zigbee2MQTT zwiększy szanse pełnej obsługi funkcji. Jeśli większość to Zigbee 3.0 od większych marek, ZHA sprawdzi się świetnie.

Krok 2: Wybór warstwy sprzętowej (koordynator i routery)

Dobór koordynatora determinuje wygodę pracy i stabilność. Dla ZHA świetnie sprawdzają się:

  • Home Assistant SkyConnect (EFR32MG21) – naturalny wybór pod ZHA oraz multiprotocol (Thread + Zigbee) w HA OS.
  • Sonoff ZBDongle-E (EFR32MG21, EZSP) – bardzo dobry do ZHA, także do multiprotokołu; współpracuje również z Zigbee2MQTT.

Dla Zigbee2MQTT popularny i bezproblemowy jest:

  • Sonoff ZBDongle-P (TI CC2652P, Z-Stack) – mocny nadajnik i dojrzałe wsparcie w Zigbee2MQTT i ZHA.

Obsługa ConBee II w Zigbee2MQTT bywa ograniczona – generalnie nie rekomendowana na start. W ZHA ConBee/RaspBee działa przez bibliotekę zigpy-deconz, choć dziś częściej wybiera się TI lub Silicon Labs.

Krok 3: Określenie wymagań funkcjonalnych

  • Binding i grupy: w obu dostępne; ZHA świetnie integruje to w natywnym UI Home Assistant, Z2M ma własne UI i MQTT.
  • OTA: w obu obsługiwane, ale zakres dostępnych firmware różni się zależnie od producenta; sprawdź listę wsparcia dla kluczowych urządzeń.
  • Mapa sieci i logi: w Zigbee2MQTT masz czytelną mapę i strumień przez MQTT; ZHA oferuje mapę, logi i narzędzia w HA.
  • Konwertery/quirks: Z2M – konwertery społeczności na bieżąco; ZHA – quirks w zha-device-handlers, tempo rozwoju jest wysokie.

Krok 4: Plan radiowy i wybór kanału Zigbee

Zanim cokolwiek sparujesz, ustaw docelowy kanał Zigbee. Zmiana po fakcie oznacza konieczność ponownego parowania wielu urządzeń.

  • Przeskanuj pasmo 2,4 GHz (aplikacja w telefonie lub interfejs routera Wi‑Fi). Zanotuj kanały Wi‑Fi 2,4 GHz i szerokości (20/40 MHz).
  • Dobierz kanał Zigbee tak, by minimalizować nakładanie z Wi‑Fi:
    • Gdy Wi‑Fi używa kanału 1 (20 MHz) – Zigbee 15 lub 20 są zwykle bezkolizyjne.
    • Gdy Wi‑Fi używa kanału 6 – Zigbee 11/15/25 rozważ jako priorytet.
    • Gdy Wi‑Fi używa kanału 11 – Zigbee 15 lub 20 sprawdzają się najlepiej.
    • Unikaj Zigbee 26 przy mieszance starszych urządzeń – bywa ograniczany lub nieobsługiwany.
  • Ustal kanał w konfiguracji koordynatora przed pierwszym parowaniem.
  • Jeśli planujesz multiprotocol (Thread + Zigbee na jednym donglu) – ustaw Zigbee na 15/20 i Thread tak, by nie nachodził na szczyt pasma (sprawdź domyślny kanał Thread dla Twojej instalacji).

Mit: „Kanał 25 jest zawsze najlepszy”. Rzeczywistość: bywa świetny w zatłoczonych blokach, ale część urządzeń ogranicza na nim moc lub ma gorszą czułość. Bez skanu to loteria.

Krok 5: Konfiguracja minimalna – ZHA i Zigbee2MQTT

Cel: postawić stos z bezpiecznym kluczem sieci, właściwym kanałem i jasnymi zasadami parowania.

  • ZHA (Integracja w Home Assistant):
    • Dodaj integrację „Zigbee Home Automation”. Wskaż port USB koordynatora.
    • Wybierz kanał Zigbee (z Krok 4). Pozostaw wygenerowany klucz sieci (lub wklej własny, zapisany w menedżerze haseł).
    • Jeśli używasz SkyConnect/Sonoff-E i chcesz multiprotocol – skonfiguruj go w dodatku firmware HA OS, nie mieszaj trybów w trakcie parowania.
    • Wyłącz globalne „permit join” po testach. Paruj urządzenia świadomie, w krótkich oknach.
  • Zigbee2MQTT (Add-on + Mosquitto):
    • Zainstaluj Mosquitto Broker i Zigbee2MQTT (add-on lub kontener). Włącz autostart brokera.
    • W konfiguracji Z2M ustaw:
      • serial.port (ścieżka do dongla) i adapter (znp/ezsp – zgodnie z chipem).
      • advanced.channel (z Krok 4), pan_id, ext_pan_id i network_key – zapisz je w bezpiecznym miejscu.
      • frontend: true, homeassistant: true, permit_join: false (domyślnie zamknięte).
    • Po starcie sprawdź logi – brak błędów „Network started” i poprawny kanał/kontroler.

Mit: „Domyślne ustawienia wystarczą”. Rzeczywistość: domyślny kanał często koliduje z Wi‑Fi, a niezapisany klucz sieci utrudnia migrację i odzysk po awarii.

Zigbee2MQTT vs ZHA: który stos w Home Assistant wybrać i dlaczego
Źródło: Pexels | Autor: Jakub Zerdzicki

Krok 6: Parowanie w poprawnej kolejności

Kolejność ma znaczenie dla stabilności tras i żywotności baterii.

  • Najpierw zasilane z sieci (routery Zigbee): gniazdka, przekaźniki, wzmacniacze, żarówki. Rozmieść je piętrowo i w korytarzach.
  • Krok 6: Kolejność parowania w praktyce

  • Najpierw wszystkie urządzenia zasilane z sieci (routery): gniazdka, przekaźniki, sterowniki rolet, wzmacniacze. Zaczynaj od tych najbliżej koordynatora i „idź na zewnątrz”/po piętrach.
  • Żarówki paruj tylko wtedy, gdy będą stale pod napięciem (ścienny włącznik w pozycji „ON” na stałe). Jeśli ktoś w domu odcina im prąd przełącznikiem – nie licz ich jako kluczowe routery.
  • Po dodaniu pierwszej partii routerów daj sieci „oddychnąć” – 10–30 minut w małej sieci, do kilku godzin przy kilkudziesięciu urządzeniach. Sprawdź mapę i siłę sygnału (LQI/RSSI).
  • Dopiero potem czujniki na baterie. Paruj je jak najbliżej docelowego routera (nie pod samym koordynatorem, jeśli finalnie są w innym skrzydle domu). Przy Aqara często pomaga dłuższe przytrzymanie przycisku, by wymusić pełne dołączenie do rodzica.
  • Otwieraj „permit join” na krótkie okna (3–5 minut), po 1–3 urządzenia. Po każdej serii zamknij i sprawdź logi/telemetrię.
  • Na koniec skonfiguruj grupy i ewentualny binding (np. przycisk → grupa lamp), żeby odciążyć HA i sieć.

Mit: najlepiej parować wszystko obok koordynatora, a potem przenieść na miejsce. Rzeczywistość: urządzenie wybiera rodzica przy dołączaniu; przenosiny daleko od rodzica często kończą się niestabilnością i rejoinami.

Krok 7: Weryfikacja stabilności i szybkie korekty

  • Mapa i sygnał: każdy czujnik powinien mieć rodzica 1–2 ściany dalej, nie „na końcu świata”. LQI stabilne i bez gwałtownych spadków.
  • Obciążenie routerów: rozłóż dzieci między kilka punktów 230 V zamiast „pchać” wszystko w jedno gniazdko w korytarzu.
  • Opóźnienia i straty: szybki test – 10 włączeń/wyłączeń lamp i obserwacja logów. Brak dubletów i timeoutów to dobry znak.
  • Raportowanie energii/częstotliwości: jeśli masz „gadulskie” mierniki/gniazdka, zwiększ interwały raportów (Z2M: state/reporting w konfiguracji urządzenia; ZHA: ustawienia raportowania w UI na klastrach).
  • Rejoiny: sporadyczne są normalne. Cykliczne co kilka minut oznaczają złego rodzica lub zakłócenia – dołóż router pośredni albo zmień miejsce.

Mit: po każdej zmianie trzeba uruchomić „heal sieci”. Rzeczywistość: Zigbee samoczynnie przebudowuje trasy; daj czas. Pomaga też krótkie odłączenie/przywrócenie zasilania wybranym routerom, ale bez „wyciągania wtyczki” wszystkim naraz.

Zigbee2MQTT vs ZHA: który stos w Home Assistant wybrać i dlaczego
Źródło: Pexels | Autor: Jakub Zerdzicki

Krok 8: Bezpieczne aktualizacje OTA (ZHA i Zigbee2MQTT)

Cel: podnieść wersje firmware bez rozjechania sieci i „uceglenia” lamp czy czujników.

  • Przygotowanie:
    • Stabilne zasilanie dla routerów (lampy nie mogą być wyłączane ściennym włącznikiem w trakcie OTA).
    • Jedno urządzenie testowe na początek; dopiero potem reszta z tej samej serii.
    • Sprawdź listę dostępnych firmware dla danego modelu (release notes producenta lub lista w Z2M/ZHA).
  • ZHA:
    • W panelu urządzenia sprawdź sekcję aktualizacji (OTA/cluster „OTA Upgrade”).
    • Uruchom aktualizację dla jednego egzemplarza i monitoruj postęp w logach Zigbee.
    • Gdy zakończy się poprawnie, zaktualizuj pozostałe w oknach po kilka sztuk.
  • Zigbee2MQTT:
    • W frontendzie Z2M wejdź w urządzenie → zakładka OTA (lub Tools → OTA dla wybranych).
    • Włącz OTA tylko na czas aktualizacji; kontroluj logi i temperaturę dongla.
    • Nie aktualizuj kilkunastu urządzeń naraz – sieć i koordynator mają ograniczony bufor.
  • Kryteria „zielonego światła”: brak restartów urządzenia w trakcie, stabilny LQI do rodzica, poprawna wersja po restarcie, urządzenie odpowiada na polecenia.

Mit: „OTA zawsze poprawia stabilność”. Rzeczywistość: zdarzają się regresje; najpierw test na jednym egzemplarzu z tej samej partii.

Krok 9: Automatyzacje lokalne – binding i grupy bez obciążania HA

Cel: skrócić opóźnienia i uniezależnić kluczowe akcje od Home Assistanta.

  • Scenariusz: przycisk na ścianie → grupa lamp w salonie.
    • ZHA: utwórz grupę Zigbee, następnie w urządzeniu przycisku dodaj powiązanie (bind) do tej grupy. Przetestuj pojedynczy i podwójny klik, jeśli wspierane.
    • Z2M: utwórz grupę w frontendzie (lub w pliku groups), a w zakładce Bind przypisz przycisk do grupy. Zapisz i sprawdź w logach, czy binding został potwierdzony.
  • Po wykonaniu: wyłącz na moment automatyzacje HA i sprawdź, czy sterowanie lokalne nadal działa (klik → światło reaguje w ułamku sekundy).
  • Jeśli przycisk ma zaawansowane akcje (hold, triple), część zdarzeń możesz dalej obsłużyć w HA, a podstawowe ON/OFF zostawić w bindzie.

Mit: „Binding jest zbędny, bo automatyzacje w HA wystarczą”. Rzeczywistość: lokalny bind skraca opóźnienia, ratuje sterowanie przy niedostępności HA i odciąża sieć.

Krok 10: Kopie zapasowe i odzysk po awarii

Cel: odtworzyć sieć bez ponownego parowania po utracie systemu lub wymianie urządzenia.

Zigbee2MQTT vs ZHA: który stos w Home Assistant wybrać i dlaczego
Źródło: Pexels | Autor: Jakub Zerdzicki
  • Co musisz mieć zapisane:
    • network_key, pan_id, ext_pan_id i kanał Zigbee – to „tożsamość” sieci.
    • Zawartość NVRAM koordynatora (backup adaptera).
    • Baza urządzeń: ZHA – pliki konfiguracji/DB integracji; Z2M – katalog data (m.in. state, konfiguracja, mapowania).
  • ZHA – procedura:
    • Regularny pełny backup HA (snapshot). Dodatkowo zanotuj network_key i kanał z ustawień ZHA.
    • Przy odtwarzaniu: przywróć backup HA, upewnij się, że port USB koordynatora ma tę samą ścieżkę, uruchom ZHA i sprawdź, czy urządzenia są dostępne.
  • Zigbee2MQTT – procedura:
    • Wykonuj backup z frontendu (Tools/Backup) – pobierz kopię NVRAM koordynatora i plik bazy.
    • Przy odtwarzaniu: wgraj backup NVRAM, przywróć katalog data, ustaw identyczne parametry sieci (kanał/pan_id/network_key) i uruchom usługę.
  • Po starcie: routery zasilane z 230 V zwykle wrócą same. Czujniki bateryjne wybudź przyciskiem (krótkie kliknięcie lub długie przytrzymanie wg instrukcji).

Ostrzeżenie: zmiana network_key lub kanału po awarii = parowanie od zera u większości urządzeń.

Krok 11: Migracja między ZHA a Zigbee2MQTT bez ponownego parowania

Cel: przejść na drugi stos, zachowując istniejącą sieć.

  • Warunki powodzenia:
    • Ten sam koordynator lub adapter z tym samym zbiorem parametrów i kompatybilnym firmware (np. TI Z-Stack ↔ TI Z-Stack).
    • Identyczne: kanał, pan_id, ext_pan_id, network_key.
  • Procedura krok po kroku:
    • Zapisz parametry sieci ze stosu źródłowego. Zrób pełny backup (Z2M: NVRAM + baza; ZHA: snapshot HA).
    • Wyłącz i odinstaluj/wyłącz integrację źródłową, aby tylko jeden stos miał dostęp do portu USB.
    • Skonfiguruj stos docelowy na identyczne parametry sieci. Jeśli to Z2M – wgraj NVRAM koordynatora (jeśli dostępny) i ustaw adapter type.
    • Uruchom nowy stos. Poczekaj kilka minut; wybudź czujniki bateryjne.
    • Zweryfikuj encje i nazwy – w ZHA/Z2M mogą być inne. Napraw odwołania w automatyzacjach.
  • Wyjątki i pułapki:
    • Zmiana rodziny chipu (np. z EZSP na Z-Stack) bywa kłopotliwa – część urządzeń może wymagać rejoinu.
    • Niestandardowe funkcje oparte o konwertery (Z2M) lub quirks (ZHA) mogą różnić się mapowaniem encji.

Kiedy wybrać ZHA, a kiedy Zigbee2MQTT

Nie ma jednej odpowiedzi „lepszy/gorszy”. Wybór można zawęzić kilkoma pytaniami. Jeśli większość „tak” pada przy jednym z poniższych zestawów, decyzja zwykle staje się oczywista.

  • ZHA – wybór naturalny, gdy:
    • Chcesz jak najmniej elementów do utrzymania (bez brokera MQTT i osobnej usługi).
    • Preferujesz pełną integrację z UI Home Assistanta, prosty onboarding i jednolity model encji.
    • Masz głównie popularne urządzenia (IKEA, Philips, Sonoff, Aqara, Tuya mainstream) i nie gonisz za nowinkami dzień po premierze.
    • Nie potrzebujesz niestandardowych konwerterów ani ręcznych obejść – wystarczą funkcje dostępne prosto z pudełka.
    • Najczęściej zadawane pytania (FAQ)

      ZHA czy Zigbee2MQTT – co wybrać na start?

      Jeśli zależy Ci na prostocie i integracji „prosto w Home Assistant”, wybierz ZHA. Nie wymaga osobnego brokera MQTT, ma spójne UI, dobrze dogaduje się z koordynatorami na bazie Silicon Labs (np. Home Assistant SkyConnect, Sonoff ZBDongle-E) i naturalnie pasuje do planów z Thread/Matter.

      Gdy masz mieszankę mniej typowych urządzeń (w tym no-name z marketplace) lub chcesz pełniejszego dostępu do logów i debugowania przez tematy MQTT, postaw na Zigbee2MQTT. Z2M częściej „od ręki” wspiera egzotyczne funkcje dzięki konwerterom społeczności.

      Mit: „Z2M jest zawsze stabilniejszy”. Rzeczywistość: stabilność w największym stopniu zależy od koordynatora, dobrych routerów zasilanych z sieci i prawidłowego kanału radiowego, a nie od samego stosu.

      Jakie są praktyczne różnice w codziennym użyciu (parowanie, OTA, grupy, binding)?

      Parowanie i OTA są w obu stosach. W ZHA większość zrobisz w natywnym UI Home Assistant, włącznie z grupami, binding i aktualizacjami OTA dla popularnych producentów. Z2M oferuje wygodny frontend i pełny wgląd w ruch przez MQTT, co ułatwia diagnozę niestandardowych urządzeń.

      Różnice czuć przy „nietypach”: w Z2M łatwo dodać własny konwerter, gdy urządzenie wysyła niestandardowe klastery. W ZHA rolę tę pełnią „quirks” (zha-device-handlers) – tempo rozwoju jest wysokie, ale pełne wsparcie egzotyki nadal częściej pojawia się szybciej w Z2M.

      Jaki koordynator USB wybrać? Czy multiprotocol (Thread + Zigbee) ma sens?

      Bezpieczne wybory:

      • ZHA: Home Assistant SkyConnect (EFR32MG21) lub Sonoff ZBDongle-E (EFR32, EZSP) – świetne do ZHA i gotowe pod multiprotocol.
      • Z2M: Sonoff ZBDongle-P (TI CC2652P, Z-Stack) – mocny nadajnik, bardzo dojrzałe wsparcie; działa też z ZHA.

      Multiprotocol ma sens, jeśli chcesz w jednym donglu Zigbee i Thread (np. pod Matter). Pamiętaj jednak o dobrej konfiguracji kanałów i o tym, że współdzielenie radia nie jest „za darmo” – w bardzo dużych instalacjach lepiej rozdzielić fizycznie. Mit: „Multiprotocol zawsze bez strat”. Rzeczywistość: bywa idealny w małych/średnich sieciach, ale przy setkach ramek lepszy jest osobny stick.

      Czy przy migracji między ZHA a Zigbee2MQTT trzeba parować urządzenia od nowa?

      Najczęściej tak. Zigbee nie przewiduje przenoszenia urządzeń między sieciami bez ponownego parowania, bo zmienia się klucz sieci i identyfikatory. Wyjątkiem bywa migracja w obrębie tego samego stosu i koordynatora z zachowaniem tego samego network_key, PAN ID i kanału – to jednak scenariusze zaawansowane i nie zawsze skuteczne.

Poprzedni artykułTerminal POS – co to jest i jak działa w praktyce
Następny artykułEleganckie dekoracje na 18 bez przeładowania sali
Sebastian Zając
Sebastian Zając pisze o sieciach, VPN i praktykach bezpiecznego dostępu do usług. Lubi porządek w konfiguracji: tłumaczy protokoły, różnice między rozwiązaniami oraz to, jak diagnozować problemy z trasowaniem, DNS czy wydajnością tuneli. W poradnikach pokazuje nie tylko „jak”, ale też „dlaczego”, dzięki czemu łatwiej dostosować ustawienia do własnego środowiska. Rekomendacje opiera na testach, logach i pomiarach, a kwestie prywatności i zgodności z politykami organizacji traktuje priorytetowo.