Przejdź do głównej zawartości

Zigbee2MQTT

Wprowadzenie#

Integracja Zigbee w Asystencie domowym daje możliwość łatwego korzystania z urządzeń Zigbee bez potrzeby stosowania bramek producentów. Rozwiązanie oparte jest na projekcie Zigbee2MQTT. I jest całkowicie zintegrowane z naszym oprogramowaniem, dzięki czemu możesz łatwo dodać swoje urządzenia Zigbee do całej infrastruktury inteligentnego domu działającej na systemie Asystent domowy.

CC2531

Integracja#

Integracja sprowadza się do włożenia do portu USB odpowiednio zaprogramowanego adaptera. Asystent domowy sam rozpozna to urządzenie USB, poinformuje głosowo, że uruchamia serwis Zigbee i automatycznie w konfiguracji pojawi się możliwość dodawania urządzeń zigbee.

Obsługiwane urządzenia#

Obsługujemy to, co obsługuje Zigbee2MQTT, wg informacji na stronie projektu Zigbee2MQTT -> obecnie 06/2021 obsługiwanych jest ponad 1490 urządzeń od 230 różnych dostawców. Projekt rozwija się bardzo intensywnie i nowe urządzenia są stale dodawane.

Dodanie nowego urządzenia Zigbee#

Zezwalanie urządzeniom na dołączenie do sieci#

Aby zapewnić bezpieczeństwo sieci Zigbee i uniknąć przypadkowego dołączenia innych urządzeń Zigbee, domyślnie w konfiugracji mamy ustawiony parametr enable_join: false.

Przed rozpoczęciem parowania nowego urządzenia należy włączyć w aplikacji możliwość czasowego parowania z bramką. W przeciwnym razie nowe urządzenia nie będą mogły dołączyć do sieci! Możliwość czasowego parowania z bramką włączamy po przejściu do konfiguracji zigbee2mqtt, w menu wybieramy Konfiguracja -> Konfiguracja urządzeń zigbee

Zigbee integracja

następnie naciskamy przycisk permit join - zezwolenie na dołączenie nowych urządzeń

Zigbee integracja

Parowanie#

Najpierw sprawdź na stronie Zigbee2MQTT w obsługiwanych urządzeniach instrukcję dotyczącą parowania urządzenia po wybraniu modelu urządzenia.

Zigbee integracja

Zigbee integracja

Jeśli nie są dostępne żadne instrukcje, urządzenie można prawdopodobnie sparować przywracając ustawienia fabryczne

Mapa sieci#

Po sparowaniu urządzenia możemy odświeżyć kartę z mapą sieci Zigbee, by zobaczyć nasze nowe urządzenie podłączone do bramki

Zigbee integracja

Zmiana nazwy urządzenia#

Zigbee integracja

Sterowanie#

Nasze nowe urządzenie autmatycznie dostępne jest w urządzeniach

Zigbee integracja

Po wybraniu urządzenia możemy zobaczyć jego szczegóły i przejść do dodania automatyzacji

Zigbee integracja

Oczywiście nowe encje możemy umieszczać na karcie i wykorzystywać w automatyzacjach, przykłady gotowych rozwiązań zostaną dodane na forum.


Informacje techniczne#

Proces zigbee#

Procesami na bramce steruje Menedżer procesów PM2. PM2 odpowiedzialny jest też za uruchomienie procesu zigbee po wykryciu urządzenia CC2531, a następnie czuwa nad jego ciągłym działaniem.

Żeby zobaczyć status procesu zigbee w konsoli wpisujemy:

pm2 show zigbee

zigbee

Aplikacja i binarka#

Proces zigbee oparty jest na aplikacji zigbee2mqtt która działa na binarce nodejs-lts

Naszą kompilację nodejs udostępniamy w naszym repozytorium pakietów binarnych bintray

zigbee

Dostęp lokalny#

Aplikacja 8099 działa na porcie 8099 w lokalnej sieciu można połączyć się z ją bezpośrednio, wpisując w przeglądarce http://<ip-bramki>:8099

zigbee

Dostęp zdalny#

Umożliwiamy też na zdalny dostęp do aplikacji webowej zigbee2mqtt. Dostęp ten jest możliwy tylko po zalogowaniu do Asystenta domowego i jest realizowany z pomocą naszego dodatku ais_proxy - mechnizmu typu ingress

zigbee

Aktualizacja automatyczna#

Zigbee2Mqtt jest dostarczane jako składowa systemu Asystent domowy. Aktualizacja Zigbee2Mqtt do najnowszej stabilnej wersji jest wykonywana automatycznie z interfejsu użytkownika i polega na pobraniu i rozpakowaniu na bramkę gotowej paczki Zigbee2Mqtt z naszego serwisu OTA.

zigbee

Aktualizacja/instalacja ręczna#

Uwaga

Uwaga! Ręczna aktualizacja jest skomplikowanym procesem dostępnym dla programistów i technicznie zaawansowanych użytkowników. W przypadku wystąpienia problemów po ręcznej aktualizacji zalecamy Wykonanie pełnego resetu aplikacji

Jeżeli chcemy zainstalować wersję dev Zigbee2Mqtt, żeby dodać obsługę nowego urządzenia lub przetestować nowe funkcje, to możemy to zrobić ręcznie z konsoli. Instalacja ręczna polega na pobraniu kodów Zigbee2Mqtt z repozytorium GIT, a następnie uruchomieniu na bramce instalacji zależności (dependencies) aplikacji zigbee2mqtt. Poniżej skrypt bash (do uruchomienia w konsoli) z wyjaśnieniem kroków instalacji ręcznej.

echo "Zatrzymanie serwisu zigbee..."pm2 stop zigbee
echo "kopia konfiguracji zigbee..."cp -R ~/zigbee2mqtt/data/configuration.yaml ~/configuration.yaml
echo "Usuwamy bieżącą wersję zigbee2mqtt..."rm -rf ~/zigbee2mqtt
echo "Kolonujemy kody najnowszej wersji..."git clone --depth=1 https://github.com/Koenkk/zigbee2mqtt.git
echo "Przechodzimy do folderu z kodami zigbee2mqtt..."cd ~/zigbee2mqtt
echo "Przełączamy się na wersję kodu zigbee2mqtt który chcemy uruchomić..."git checkout HEAD -- npm-shrinkwrap.jsongit pull
echo "Instalujemy zależności..."npm ci --unsafe-perm
echo "Przywracamy konfigurację zigbee2mqtt..."cp ~/configuration.yaml ~/zigbee2mqtt/data/configuration.yamlrm ~/configuration.yaml
echo "Uruchomienie serwisu zigbee2mqtt..."pm2 start zigbee

Konfiguracja#

Konfiguracja Zigbee2Mqtt znajduje się na bramce w pliku ~/zigbee2mqtt/data/configuration.yaml

Uwaga

Uwaga! W przypadku podstawowej konfiguracji ustawienia domyślne są dobre i nie trzeba nic zmieniać.

Potrzeba zmiany konfiguracji może dotyczyć tylko programistów i technicznie zaawansowanych użytkowników którzy np. chcą zmienić parametry połączenia z brkerem MQTT (dodać autentykację itp.). W przypadku wystąpienia problemów po zmianie konfiguracji Zigbee2Mqtt zalecamy Wykonanie pełnego resetu aplikacji

Plik z konfiguracją dostępny jest do edycji z aplikacji. Wystarczy przejść do konfiguracji i wybrać konfigurację urządzeń zigbee:

zigbee

Następnie w prawym górnym rogu z rozwijalnego menu wybrać opcję "Edit Zigbee2Mqtt configuraton.yaml" zigbee

zigbee

Standardowa konfiguracja znajduje się w pliku ~/zigbee2mqtt/data/configuration.yaml. Konfiugracja różni się w zależności od zastosowanego adaptera i jest następująca:

  • Adapter PRO Zigbee ConBee2
# configuration.yaml Zigbee2MQTT v 1.19.1   homeassistant: truepermit_join: falsemqtt:  base_topic: zigbee2mqtt  server: 'mqtt://localhost'serial:  adapter: deconz  port: /dev/ttyACM0frontend:  port: 8099advanced:  log_level: info  log_output:    - console  channel: 11
  • Adapter DEV Zigbee USB CC2531
# configuration.yaml Zigbee2MQTT v 1.19.1   homeassistant: truepermit_join: falsemqtt:  base_topic: zigbee2mqtt  server: 'mqtt://localhost'serial:  adapter: zstack  port: /dev/ttyACM0frontend:  port: 8099advanced:  log_level: info  log_output:    - console  channel: 11