Sonoff ZBDongle-P Adapter Zigbee 3.0 domoticz Zigbee2MQTT

Kupując urządzenia ZigBee, traktowałem urządzenia jako nowość na rynku, mimo że mają już kilka lat. Urządzenia ZigBee mega przypadły mi do gustu, ale rzadko były kompatybilne z Domoticzem. Kupiłem również Sonoff, którego widzicie na zdjęciu powyżej jako kolejny przedmiot, który przedstawie, ale okazało się, że to małe urządzenie pozwoli mi na kompatybilność razem z Domoticzem i tym się zajmiemy w tym artykule.

Szukając sposobu na  połączenie tego urządzenia z Domoticzem widziałem informacje często błędne np takie, że działa to tylko na firefox, albo takie, że muszę zmienić oprogramowanie na Dongle od sonoff. Oczywiście nie byłby to większy problem, ale byłem ciekaw, czy zadzaiała to z oryginalnym softem i działa faktycznie. Kwestia firefoxa to też jakiś dziwny mit, bo działa normalnie na różnych przeglądarkach i nie ma większego znaczenia, z jakiej korzystacie.

Zmiana softu – Soft można zmienić i zaktualizować, ale ja tego nie robiłem i nie mam zamiaru, bo stosuje zasadę, że jeżeli coś działa prawidłowo, to nie ma sensu tego aktualizować.

Nagram również film o tym module (film jest na końcu tego artykułu), więc przetestuje wszystkie sonoffy zigbee, które posiadam oraz Moduły ZigBee od Tuya.

W tym artykule skorzystamy z oficjalnych w języku angielski instrukcji:
Zigbee2MQTT
Support zigbee device
domoticz-zigbee2mqtt-plugin

 

Instrukcje wyjaśniają, jak uruchomić Zigbee2MQTT w systemie Linux.

Dla uproszczenia ten przewodnik zakłada działanie na Raspberry Pi  z Raspbian Stretch Lite, ale powinien działać na dowolnym komputerze z systemem Linux.

Przed rozpoczęciem upewnij się, że masz zainstalowanego brokera MQTT w swoim systemie. Dostępnych jest wiele samouczków, jak to zrobić, przykład Mosquitto jest zalecanym brokerem MQTT, ale inne również powinni działać dobrze.

Najpierw musimy określić lokalizację adaptera. W tym celu podłącz adapter do Raspberry Pi. W większości przypadków lokalizacja, to /dev/ttyACM0 można to zweryfikować poprzez komendę:

ls -l /dev/serial/by-id

Po screenie powyżej widać, że Sonoff ZigBee Dongle jest prawidłowo wykryty przez raspberry i najważniejsze na żółto jest zaznaczone, że jest on na parci ttyUSB0, ale to będziemy potrzebować później.

 

Instalowanie node.js:

sudo apt-get install –y git-core
sudo curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

Jeżeli powyższa komenda nie zadziała przeładuj malinę i sprawdź:

sudo apt install nodejs

Po zainstalowaniu możemy sprawdzić wersje:

node --version

Wersja powinna być:

v10.X, v12.X, v14.X, v15.X or V16.X

npm --version

Wersja powinna być:

6.X or 7.X

Pobierz repozytorium ZigBee2MQTT:

git clone https://github.com/Koenkk/zigbee2mqtt.git

Rozpakuj do folderu:

sudo mv zigbee2mqtt /opt/zigbee2mqtt
sudo chown -R pi:pi /opt/zigbee2mqtt

 

Otwórz folder /opt/zigbee2mqtt:

cd /opt/zigbee2mqtt
npm ci

Jeśli wszystko poszło poprawnie, wynik npm cijest podobny do mojego wyniku (liczba pakietów i sekund może być inna):

Zanim będziemy mogli uruchomić Zigbee2MQTT, to musimy dokonać zmiany w configuration.yaml. Ten plik zawiera konfigurację, która będzie używana przez Zigbee2MQTT.

Otwórz plik konfiguracyjny:

nano /opt/zigbee2mqtt/data/configuration.yaml
# MQTT settings
mqtt:
  # MQTT base topic for Zigbee2MQTT MQTT messages
  base_topic: zigbee2mqtt
  # MQTT server URL
  server: 'mqtt://localhost'
  # MQTT server authentication, uncomment if required:
  # user: my_user
  # password: my_password

# Serial settings
serial:
  # Location of the adapter (see first step of this guide)
  port: /dev/ttyACM0

w tym pliku wklejamy poniższe ustawienia, lub wprowadzamy je ręcznie

homeassistant: false
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://localhost
  user: mqtt
  password: password
serial:
  port: /dev/ttyUSB0
experimental:
  new_api: true
advanced:
  log_level: debug  
  channel: 25
  network_key:
    - 72
    - 187
    - 177
    - 9
    - 119
    - 150
    - 203

Pamiętajcie o ustawieniu user, oraz password i prawidłowego portu USB. Dodatkowo musimy wygenerować kod hasła do sieci ZigBee. Klucz nie jest wykorzystywany przez nas, więc nie musimy go znać, ale jeżeli chcecie własny, to można użyć generatora:

advanced:
    network_key: GENERATE

Po kolejnym restarcie wygeneruje wasz własny klucz.

Zapisujemy plik CTR+ X >> Y >> Enter

Teraz gdy wszystko skonfigurowaliśmy poprawnie, możemy uruchomić Zigbee2MQTT.

cd /opt/zigbee2mqtt
npm start

Do zatrzymania konsoli używamyCTRL + C.

Utworzenie pliku startowego

sudo nano /etc/systemd/system/zigbee2mqtt.service
[Unit]
Description=zigbee2mqtt
After=network.target
[Service]
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi
[Install]
WantedBy=multi-user.target

Następnie aktywujemy usługę zigbee2mqtt w trybie serwisu:

sudo systemctl enable zigbee2mqtt.service
sudo systemctl daemon-reload

Przykładowe komendy:

sudo service zigbee2mqtt start

Start

sudo service zigbee2mqtt status

Status

sudo service zigbee2mqtt restart

Restart

Przechodzimy do instalowania pluginu w Domoticz:

cd domoticz/plugins

Otwieramy folder z pluginami

git clone https://github.com/stas-demydiuk/domoticz-zigbee2mqtt-plugin.git zigbee2mqtt

Instalujemy plugin

Wykonujemy teraz restart naszej maliny. W tym celu w domoticzu wchodzę w Konfiguracja >> Więcej opcji >> Uruchom ponownie system

Po restarcie wchodzimy w Konfiguracja >> Sprzęt

Nazwa – własna
Typ – Zigbee2MQTT
MQTT Username – nazwa użytkownika np  z mosquito
MQTT Password – hasło użytkownika np z mosquito

Na końcu po prawidłowej konfiguracji używamy opcji Dodaj

Wykonujemy teraz restart naszej maliny. W tym celu w domoticzu wchodzę w Konfiguracja >> Więcej opcji >> Uruchom ponownie system

Pojawił się nowy przycisk Własne, ale jeżeli u was się nie pojawił to wejdźcie w Konfiguracja>> Ustawienia>> Aktywne zakładki i zobaczcie czy macie zaznaczone, że może się pojawić własne:

Wykonujemy teraz restart naszej maliny. W tym celu w domoticzu wchodzę w Konfiguracja >> Więcej opcji >> Uruchom ponownie system

Jeżeli nadal nie działa, to pozostaje nam ostatnia opcja, czyli zmiana oprogramowania naszego Domoticza, z wersji stabilnej na wersje beta. W tym celu wchodzimy w Konfiguracja>> Ustawienia:

Wykonujemy teraz restart naszej maliny. W tym celu w domoticzu wchodzę w Konfiguracja >> Więcej opcji >> Uruchom ponownie system

Po restarcie powinien się pojawić komunikat, że jest dostępna nowa wersja i aktualizujemy (pamiętajcie, że wersje beta często są niestabilne i posiadają błędy).

Jeżeli znikną wam wszystkie przełączniki, to należy wyczyścić pliki cookies. W przypadku chroma można nacisnąć CTR +F5 i przeładuje się strona z wyczyszczonymi plikami, jeżeli nie wróci to jeszcze raz restart maliny i znów CTR+F5.

Po tej całej procedurze Przycisk własne powinien się pojawić. Dodatkowo jak wejdziemy w Konfiguracja>> Urządzenia i posegregujemy według najnowszego idx to znajdziemy:

Naciskamy zieloną strzałkę i dodajemy api-transport

Wchodzimy teraz Własne>> Zigbe2MQTT:

Pair Device działa inaczej niż w przypadku zwykłej bramki ZigBee, bo po naciśnięciu zawsze urządzenie może zostać dodane. Oznacza to, że możemy raz nacisnąć i potem naciskając na dowolnym urządzeniu opcje parowania od razu go dodamy do domoticza. Wszystkie urządzenia, które sparujemy będą nam się wyświetlać standardowo w Konfiguracja>> Urządzenia:

Dodawanie urządzeń polega na naciśnięciu zielonej strzałki po prawej stronie.

Powyższy screen pokazuje urządzenia z moją własną nazwą. Urządzenie możemy też zobaczyć na screenie z wszystkimi urządzeniami Zigbee.

Chcecie wiedzieć, jak to działa ??
– Działa idealnie szybkie parowanie łatwe dodawanie. Jedyna uwaga, to w domoticzu pojawia się parę urządzeń jednego typu np temperatura, temperatura i wilgotność, wilgotność, status baterii itd wybieramy urządzenie, które nas interesują i je dodajemy. Przykładowo do czujnika otwarcia również mamy status baterii, ale go nie potrzebuje.

Jeżeli mamy sparowane wszystkie urządzenia, to warto wyłączyć opcje parowania.

nano /opt/zigbee2mqtt/data/configuration.yaml
permit_join: true

Zmieniamy opcje z true na false i zapisujemy.

 

Opcja usunięcia czujnika:

Jeżeli z jakichś przyczyn mamy urządzenie nierozpoznane prawidłowo, lub nie działa prawidłowo, to chcielibyśmy się go pozbyć i to niestety nie jest zbyt proste, ale mam metodę, która zawsze działa.
Włączmy putty zalogujmy się do raspberry i otwórzmy plik:

nano /opt/zigbee2mqtt/data/configuration.yaml

Plik bardzo dobrze wam znany, bo już wprowadzaliśmy do niego ustawienia, ale wprowadźmy nowe:

frontend:
  port: 8081
  host: 192.168.0.100

Host to adres waszej maliny, ale port musi się różnić od portu maliny. Malina ma port 8080, a tutaj wpisałem 8081.

homeassistant: false
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://localhost
  user: mqtt
  password: password
serial:
  port: /dev/ttyUSB0
experimental:
  new_api: true
frontend: 
  port: 8081 
  host: 192.168.0.100
advanced:
  log_level: debug  
  channel: 25
  network_key:
    - 72
    - 187
    - 177
    - 9
    - 119
    - 150
    - 203

 

Pamiętajcie o zapisaniu CTR+ X potem Y i zatwierdzamy enterem. Następnie:

sudo systemctl enable zigbee2mqtt.service
sudo reboot

Wykonaliśmy restart maliny i teraz możemy sprawdzić naszą tajemniczą stronę:

Na stronie mamy opcje usuwania urządzeń czerwony przycisk, ale możemy również ponownie przeładować przycisk żółty przycisk. Strona umożliwia nam również parowanie urządzeń i wszystko automatycznie przenosi się do domoticza.

 

Zachęcam również do zobaczenia materiału wideo: