Integracja z protokołem ZigBee

  • Numer dokumentu: PO-197
  • Wersja: 2.0
  • Data publikacji: 27 listopada 2023


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

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

cd /root

Klonowanie repozytorium zigbee2mqtt:

wget https://github.com/Koenkk/zigbee2mqtt/archive/refs/heads/master.zip 

Rozpakowanie zigbee2mqtt:

unzip master.zip

Zmiana nazwy folderu:

mv /root/zigbee2mqtt-master/ /root/zigbee2mqtt/

Zmiana aktualnego folderu

cd /root/zigbee2mqtt

Instalowanie zawartości:

npm ci

Modyfikacja pliku konfiguracyjnego

Otwieramy plik do edycji

nano /root/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). 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ę

npm start

Konfiguracja dla starszych obrazów

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. Po poprawnym dodaniu urządzenia w terminalu powinno pokazać się kilka komunikatów w tym np. taki:

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

Po dodaniu czujnika, można poprzez platformę Node-RED reagować na dane lub z użyciem bloczków (np. mqtt out) wysłać dane do magistrali CAN.

Aby zachować bezpieczeństwo, po dodaniu wszystkich urządzeń należy zatrzymać proces np. Ctrl+c, ponownie wejść w plik configuration.yaml i ustawić permit_join:false. Potem uruchamiamy proces ponownie.

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.

Plik do pobrania: