Integracja z protokołem ZigBee

  • Numer dokumentu: PO-197
  • Wersja: 3.0
  • Data publikacji: 19 marca 2025


Wstęp

Integracja urządzeń wspierających protokół ZigBee z systemem Ampio możliwa jest na przykład dzięki dopięciu bramki do modułu M-SERV-s. W celu wykonania połączenia niezbędne jest użycie platformy Node-RED. W poniższym przykładzie jako bramka służy moduł ZBDongle-E firmy Sonoff z dedykowaną anteną.

Podłączenie bramki

Aby podłączyć bramkę, odłączamy M-SERV od zasilania, wpinamy moduł w dowolne złącze USB i zasilamy ponownie serwer. Po kilku minutach, poprzez interfejs www aktywujemy połączenie SSH (wskazówki dostępne w poradniku Konfiguracja serwera). Logujemy się przy użyciu utworzonego hasła na konto root na serwerze np. poprzez aplikację putty.

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Wyszukanie portu z bramką

Po wpisaniu hasła wyszukujemy urządzenia z użyciem komendy:

dmesg | grep tty

Mostek prawdopodobnie zostanie dodany jako ttyACM0.

Konfiguracja dla obrazów serwera od wersji numer 400

Instalacja

Wchodzimy w tryb zapisu i odczytu

/opt/ampio/bin/rw

przechodzimy do folderu, w którym możemy wprowadzać zmiany

cd /root

aktualizujemy listę dostępnych pakietów

sudo apt-get update

instalujemy pakiet pnpm

npm install -g pnpm@10.4.1

instalujemy git

sudo apt install git

tworzymy folder

sudo mkdir /root/zigbee2mqtt

zmieniamy uprawnienia do folderu

sudo chown -R root:root /root/zigbee2mqtt

klonujemy rezpozytorium zigbee2mqtt

git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /root/zigbee2mqtt

przechodzimy do folderu

cd /root/zigbee2mqtt

instalujemy dedykowane zależności

pnpm i --frozen-lockfile

uruchamiamy budowanie paczki

pnpm run build

kopiujemy zawartość przykładu do naszego pliku konfiguracyjnego

cp /root/zigbee2mqtt/data/configuration.example.yaml /root/zigbee2mqtt/data/configuration.yaml

Modyfikacja pliku konfiguracyjnego

Otwieramy plik do edycji

nano /root/zigbee2mqtt/data/configuration.yaml

Pole server ustawiamy na mqtt://localhost.

Pola połączenia MQTT zgodnie z naszymi ustawieniami serwera, user to najczęściej admin oraz odpowiednie hasło (dane logowania jak do bloczków mqtt w Node-RED). Należy pamiętać, aby usunąć znak # oznaczający komentarz linii.

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Po zmianie zapisujemy i zamykamy plik konfiguracyjny. W putty robimy to poprzez Ctrl+x, następnie y i Enter.

Pierwsze uruchomienie

Wpisujemy komendę

pnpm start

Konfiguracja dla obrazów starszych niż 400

Tworzenie i konfigurowanie folderu

Tworzymy folder

sudo mkdir /ampio/rw/zigbee2mqtt

Nadajemy uprawnienia

sudo chown -R ${USER}: /ampio/rw/zigbee2mqtt

Klonowanie repozytorium zigbee2mqtt

git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /ampio/rw/zigbee2mqtt

Instalowanie zawartości

Zmieniamy aktualny folder

cd /ampio/rw/zigbee2mqtt

Następnie instalujemy

npm ci

Modyfikacja pliku konfiguracyjnego

Otwieramy plik do edycji

nano /ampio/rw/zigbee2mqtt/data/configuration.yaml

Pole server ustawiamy na mqtt://localhost.

Pole port zgodnie z tym co wyszukane zostało powyżej np. /dev/ttyACM0.

Pola połączenia MQTT zgodnie z naszymi ustawieniami serwera, user to najczęściej admin oraz odpowiednie hasło (dane logowania jak do bloczków mqtt w Node-RED).

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Po zmianie zapisujemy i zamykamy plik konfiguracyjny. W putty robimy to poprzez Ctrl+x, następnie y i Enter.

Pierwsze uruchomienie

Wpisujemy komendę

npm start

Dodanie urządzenia podrzędnego

Urządzenie dodawane w poradniku to czujnik temperatury i wilgotności SNZB-02 firmy Sonoff. Instrukcje dla urządzeń dostępne są na stronach odpowiednich producentów. W przypadku opisywanego czujnika, w celu jego dodania należy przytrzymać przycisk na obudowie przez 5 sekund.

Interfejs Zigbee dostępny jest w przeglądarce pod adresem IP_SERWERA:8080 (np. 192.168.1.6:8080). Po wejściu w interfejs możemy dodawać ręcznie kolejne urządzenia poprzez opcję Permit join.

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Po poprawnym dodaniu urządzenie podrzędne wyświetli się na liście.

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Na koniec dodawania można jeszcze przedwcześnie zatrzymać dodawanie wszystkiego.

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Konfiguracja w Node-RED

Poradnik opisujący podstawy Node-RED w systemie Ampio dostępny jest pod adresem: Integracja systemu Ampio z Node-RED. Po dodaniu urządzeń podrzędnych można już nasłuchiwać danych z brokera MQTT Ampio. Topic na którym urządzenie nadaje można podejrzeć w terminalu poprzez połączenie SSh. W tym przykładzie jest to topic główny i ID dodanego urządzenia: zigbee2mqtt/0x00124b00250e039e.

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Dane można podejrzeć po dodaniu bloczka debug.

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

W celu np. odczytania liczbowo wilgotności z tego czujnika przepuszczamy informację przez bloczek function z zawartością:

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Różne urządzenia końcowe mogą nadawać informację w różnych postaciach dlatego warto podejrzeć dane w oknie debug przed napisaniem funkcji przesyłającej informację.

Automatyczne uruchamianie

dla obrazów serwera od wersji numer 400

Logujemy się ponownie poprzez SSH, będąc w głównym folderze root pobieramy i uruchamiamy skrypt komendą:

curl https://dist.ampio.pl/scripts/zigbee2mqtt400.sh | bash -s

dla starszych obrazów

Aby aplikacja została uruchomiona automatycznie po restarcie zasilania, należy dodać odpowiedni skrypt. W interfejsie www modułu M-SERV wchodzimy w zakładkę SYSTEM a następnie SKRYPTY. Pobieramy załączony plik o nazwie zigbee2mqtt.sh. Wgrywamy go poprzez WYBIERZ PLIK, następnie WGRAJ PLIK. W kolejnym kroku zaznaczamy przy skrypcie pole 5 min i naciskamy ZAPISZ.

Kliknij, aby powiększyć i otworzyć w nowej zakładce.

Test działania

W celu sprawdzenia poprawności konfiguracji resetujemy zasilanie serwera i po kilku minutach sprawdzamy działanie poprzez Node-RED np. w oknie debug.

Jeżeli w trakcie konfiguracji przechodziliśmy w tryb rw to na koniec wprowadzamy serwer podczas połączenia SSH ponownie w tryb tylko do odczytu:

/opt/ampio/bin/ro

Plik do pobrania: