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.
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
następnie naciskamy przycisk permit join - zezwolenie na dołączenie nowych urządzeń
Parowanie
Najpierw sprawdź na stronie Zigbee2MQTT w obsługiwanych urządzeniach instrukcję dotyczącą parowania urządzenia po wybraniu modelu urządzenia.
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
Zmiana nazwy urządzenia
Sterowanie
Nasze nowe urządzenie autmatycznie dostępne jest w urządzeniach
Po wybraniu urządzenia możemy zobaczyć jego szczegóły i przejść do dodania automatyzacji
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
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
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
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
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.
Aktualizacja/instalacja ręczna
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.json
git pull
echo "Instalujemy zależności..."
npm ci --unsafe-perm
echo "Przywracamy konfigurację zigbee2mqtt..."
cp ~/configuration.yaml ~/zigbee2mqtt/data/configuration.yaml
rm ~/configuration.yaml
echo "Uruchomienie serwisu zigbee2mqtt..."
pm2 start zigbee
Konfiguracja
Konfiguracja Zigbee2Mqtt znajduje się na bramce w pliku ~/zigbee2mqtt/data/configuration.yaml
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:
Następnie w prawym górnym rogu z rozwijalnego menu wybrać opcję "Edit Zigbee2Mqtt configuraton.yaml"
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: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt
server: 'mqtt://localhost'
serial:
adapter: deconz
port: /dev/ttyACM0
frontend:
port: 8099
advanced:
log_level: info
log_output:
- console
channel: 11
- Adapter DEV Zigbee USB CC2531
# configuration.yaml Zigbee2MQTT v 1.19.1
homeassistant: true
permit_join: false
mqtt:
base_topic: zigbee2mqtt
server: 'mqtt://localhost'
serial:
adapter: zstack
port: /dev/ttyACM0
frontend:
port: 8099
advanced:
log_level: info
log_output:
- console
channel: 11