Tworzenie urządzenia Matter

1. Wprowadzenie

Matter to protokół łączności, który zapewnia ekscytujące możliwości rozwoju urządzeń inteligentnych. W tym ćwiczeniu z programowania stworzysz pierwsze urządzenie ze standardem Matter. Aby dowiedzieć się więcej o standardzie Matter, odwiedź Google Home Developer Center: Matter lub stronę Connectivity Standards Alliance.

Czego się nauczysz

  • Jak zintegrować urządzenie fizyczne z standardem Matter.
  • Jak uruchomić i sterować urządzeniem Matter za pomocą Google Home.

Czego potrzebujesz

2. Konfigurowanie środowiska

Zidentyfikuj urządzenie szeregowe

Pierwszym krokiem podczas konfigurowania środowiska programistycznego jest określenie, do którego portu szeregowego jest podłączone Twoje urządzenie. Te informacje pozwolą Ci programować panel dewelopera i wchodzić z nim w interakcje.

  1. Podłącz płytę programisty do komputera kablem USB.
  2. Znajdź urządzenie z tablicy programisty w systemie plików /dev. Możesz zawęzić wyszukiwanie, podając prefiks urządzenia płyty programisty. ESP32 wykonawcy Espressif wykorzystuje /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Konfigurowanie centrum

Skonfiguruj centrum przy użyciu konta Google, którego zamierzasz użyć w tym ćwiczeniu z programowania.

Konfigurowanie środowiska programistycznego

Wymagania wstępne

Te instrukcje zostały przetestowane w systemie Debian Linux i powinny działać w większości dystrybucji systemu Linux opartych na Debianie, w tym Ubuntu. Jeśli używasz innej dystrybucji Linuksa, procedura konfiguracji zależności może wyglądać inaczej.

Instalowanie zależności

Uruchom to polecenie, aby zainstalować wymagane pliki binarne pakietów Linuksa, które mogły nie być jeszcze zainstalowane:

$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \
libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \
python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev screen

Skonfiguruj pakiet SDK

Aby kontynuować to ćwiczenie z programowania, będziesz potrzebować pakietu SDK Espressif (ESP-IDF, czyli Espressif IoT Development Framework).

  1. Utwórz katalog, który będzie zawierał plik ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Skopiuj plik ESP-IDF z GitHuba do tego katalogu:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. Zainstaluj łańcuch narzędzi:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Konfigurowanie pakietu Matter SDK

  1. Skopiuj repozytorium Matter typu open source:
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. Pobierz moduły podrzędne repozytorium:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Uruchomienie środowiska programistycznego Matter:
    $ source ./scripts/bootstrap.sh
    

3. Konsola programisty Google Home

Konsola programisty Google Home to aplikacja internetowa, w której możesz zarządzać integracjami Matter z Google Home.

Każde urządzenie Matter, które przeszło certyfikat Connectivity Standards Alliance (Alliance) Matter, działa w ekosystemie Google Home. Urządzenia, które nie zostały certyfikowane, można od razu uruchomić w ekosystemie Google Home pod pewnymi warunkami. Więcej informacji znajdziesz w sekcji Ograniczenia dotyczące parowania.

Tworzenie projektu programisty

Najpierw otwórz konsolę programisty Google Home:

  1. Kliknij Create project (Utwórz projekt).
  2. Wpisz unikalną nazwę projektu i kliknij Utwórz projekt. Okno tworzenia nowego projektu
  3. Kliknij + Dodaj integrację. Otworzy się ekran Zasoby sprawy, na którym możesz przejrzeć dokumentację dotyczącą tworzenia standardu Matter i poznać niektóre narzędzia.
  4. Aby kontynuować, kliknij Next: Develop (Dalej: program), co spowoduje wyświetlenie strony Lista kontrolna spraw.
  5. Kliknij Dalej: konfiguracja.
  6. Na stronie Konfiguracja wpisz nazwę usługi.
  7. Kliknij Wybierz typ urządzenia i wybierz typ urządzenia z menu (w tym przypadku Light).
  8. W polu Identyfikator dostawcy (VID) wybierz Testuj identyfikator VID i z menu Testuj identyfikator VID wybierz 0xFFF1. W polu Identyfikator produktu (PID) wpisz 0x8000 i kliknij Zapisz i kontynuuj, a następnie kliknij Zapisz na następnej stronie. Zastosuj dokładnie te wartości VID/PID. Od nich będą zależeć kolejne kroki ćwiczeń z programowania.
    Konfiguruję projekt
  9. W sekcji Integracje zobaczysz swoją integrację.
  10. Zrestartuj centrum, aby mieć pewność, że otrzymuje najnowszą konfigurację projektu integracji Matter. Jeśli musisz później zmienić identyfikator VID lub PID, po zapisaniu projektu musisz też ponownie uruchomić projekt, aby zmiana została zastosowana. Szczegółowe instrukcje znajdziesz w artykule Ponowne uruchamianie urządzeń Google Nest lub Google Wifi.

4. Zbuduj urządzenie

Wszystkie przykłady w standardzie Matter znajdziesz w folderze z przykładami w repozytorium GitHub. Dostępnych jest kilka przykładów, ale nasze ćwiczenia z programowania dotyczą aplikacji oświetleniowej.

W tym przykładzie to proste urządzenie wyświetlane w Google Home jako światło do włączania i wyłączania, które reaguje na polecenia włączania i wyłączania. Te ćwiczenia nie obejmują możliwości sterowania prawdziwym oświetleniem elektrycznym.

Konfigurowanie kompilacji

  1. Skonfiguruj pakiet SDK Matter i aktywuj środowisko kompilacji Matter:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. Włącz ustawienie Ccache, które przyspiesza proces kompilacji:
    $ export IDF_CCACHE_ENABLE=1
    
  3. Przejdź do katalogu kompilacji ESP32 lighting-app i ustaw architekturę docelową:
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. Uruchom narzędzie do konfiguracji:
      $ idf.py menuconfig
      
    2. Wybierz Demo -> Device Type i ustaw Device Type na ESP32-DevKitC.
    3. Naciśnij klawisz strzałki w lewo, aby wrócić do menu najwyższego poziomu.
    4. Wybierz Component config --->.
    5. Wybierz CHIP Device Layer --->.
    6. Wybierz Device Identification Options --->.
    7. Ustaw Vendor ID na swój identyfikator VID przypisany przez stowarzyszenie lub testowy identyfikator VID.
    8. Ustaw Product ID na identyfikator PID ustawiony w integracji Matter w konsoli programisty Google Home.
    9. Aby zapisać, naciśnij S.
    10. Naciśnij Return, aby zaakceptować domyślną ścieżkę, w której konfiguracja zostanie zapisana.
    11. Naciśnij Return, aby zamknąć okno potwierdzenia zapisu.
    12. Naciśnij Q, aby wyjść z narzędzia konfiguracyjnego.

Uruchamianie kompilacji

Wywołaj skrypt kompilacji:

idf.py build

Kompilacja powinna się zakończyć bez błędów.

Zaprogramuj urządzenie

  1. Podłącz tablicę programisty do komputera kablem USB.
  2. Wyczyść poprzednie oprogramowanie układowe na urządzeniu (jeśli do komputera jest podłączona tylko jedna płyta programisty, możesz zrezygnować z opcji -p {device} – urządzenie powinno zostać wykryte automatycznie):
    idf.py -p {device} erase-flash
    
  3. Skopiuj nową aplikację do tablicy programistów przy użyciu:
    idf.py -p {device} flash
    

Więcej informacji o opcjach Flasha znajdziesz na stronie dokumentacji Espressif esptool.py.

5. Połącz z urządzeniem

  1. Otwórz okno terminala.
  2. Zanotuj katalog, w którym się znajdujesz, a następnie połącz się z nowym urządzeniem Matter przy użyciu GNU screen:
    $ screen -L {device} 115200
    
  3. Jeśli widzisz pustą konsolę, naciśnij przycisk RESETUJ, aby rozpocząć proces uruchamiania urządzenia.

6. Przekaż urządzenie

Uwaga: ten krok zadziała tylko wtedy, gdy masz już skonfigurowany projekt w konsoli programisty Google Home.

Nest Hub

Do złożenia urządzenia na tkaninę Matter wymagane jest centrum. To urządzenie Google Nest, takie jak Nest Hub (2 generacji), które obsługuje standard Matter i będzie pełnić zarówno funkcję routera granicznego dla urządzeń obsługujących Thread, jak i lokalną ścieżkę realizacji zamówień do inteligentnego domu.

Sprawdź tę listę, aby sprawdzić, które centra obsługują standard Matter.

Przed rozpoczęciem procesu uruchamiania upewnij się, że:

  • Twoje centrum jest sparowane z tym samym kontem Google, którego używasz do logowania się w konsoli Google Home.
  • Hub jest w tej samej sieci Wi-Fi co komputer, którego używasz do uruchamiania urządzenia Virtual Matter.
  • Twoje centrum ma tę samą strukturę, której używasz w aplikacji Google Home. „Dom” w Google Home Graph reprezentuje Twoją strukturę.

Sparuj urządzenie

Wykonaj instrukcje parowania ESP32, aby sparować urządzenie.

Uwaga: jeśli używasz urządzenia M5STACK, pamiętaj, że po zmignięciu ekranu jego ekran pozostanie pusty, więc trzeba będzie wyświetlić kod QR za pomocą adresu URL podanego w konsoli. Możesz też wpisać ręcznie kod parowania.

Przykładowe dane wyjściowe konsoli z adresem URL kodu QR:

I (1926) chip[DL]: Done driving station state, nothing else to do...
I (1936) chip[SVR]: SetupQRCode: [MT:X.XXXXXXXXXXXXXXXXX]
I (1936) chip[SVR]: Copy/paste the below URL in a browser to see the QR Code:
I (1946) chip[SVR]: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3XX.KXXXXXXXXXXXXXXXX
I (1956) chip[SVR]: Manual pairing code: [XXXXXXXXXXX]]

Rozwiązywanie problemów

Nie udało się uruchomić

Więcej wskazówek dotyczących rozwiązywania problemów znajdziesz na stronie Rozwiązywanie problemów ze sprawą.

7. Steruj urządzeniem

Gdy urządzenie zgodne ze standardem Matter zostanie udostępnione i wyświetli się w aplikacji Google Home jako żarówka, możesz spróbować nim sterować za pomocą Asystenta Google, aplikacji Google Home lub symulatora Asystenta Google w rozszerzeniu Google Home dla VS Code.

Asystent Google

Za pomocą Asystenta Google na telefonie lub centrum możesz przełączać stan urządzenia na podstawie poleceń głosowych, np. „OK Google, przełącz światła”.

Więcej przykładów poleceń znajdziesz w sekcji Sterowanie inteligentnymi urządzeniami domowymi za pomocą poleceń głosowych w artykule Sterowanie inteligentnymi urządzeniami domowymi dodanymi do aplikacji Google Home.

Aplikacja Google Home

Możesz kliknąć etykiety Wł. i Wył. obok ikony żarówki w aplikacji Google Home.

Więcej informacji znajdziesz w artykule Sterowanie urządzeniami za pomocą aplikacji Google Home.

Symulator Asystenta Google

W rozszerzeniu Google Home dla VS Code, używając symulatora Asystenta Google, możesz wydawać polecenia na urządzenie, używając interfejsu przypominającego czat.

8. Gratulacje!

Udało Ci się utworzyć i udostępnić pierwsze urządzenie Matter. Świetnie!

Dzięki temu ćwiczeniu z programowania wiesz już, jak:

  • Zainstaluj środowisko programistyczne Matter od wymagań do stanu roboczego.
  • Zbudowanie i uruchamianie urządzenia ze standardem Matter.
  • Prowizja i sterowanie urządzeniem z Google Home.

Aby dowiedzieć się więcej o standardzie Matter, zapoznaj się z tymi materiałami: