Tworzenie urządzenia Matter

1. Wprowadzenie

Matter to protokół łączności, który otwiera nowe możliwości w zakresie tworzenia inteligentnych urządzeń. W tym ćwiczeniu utworzysz swoje pierwsze urządzenie Matter. Aby dowiedzieć się więcej o standardzie Matter, odwiedź Centrum dla Deweloperów Google Home: Matter lub stronę Connectivity Standards Alliance.

Czego się nauczysz

  • Jak zintegrować urządzenie fizyczne z Matter.
  • Jak skonfigurować urządzenie Matter i sterować nim za pomocą Google Home.

Czego potrzebujesz

2. Konfigurowanie środowiska

Określanie urządzenia szeregowego

Pierwszym krokiem w konfigurowaniu środowiska programistycznego jest określenie portu szeregowego, do którego podłączone jest urządzenie. Te informacje pozwolą Ci programować płytkę deweloperską i wchodzić z nią w interakcje.

  1. Podłącz płytkę deweloperską do komputera za pomocą kabla USB.
  2. W systemie plików /dev znajdź urządzenie płytki deweloperskiej. Możesz zawęzić wyszukiwanie, określając prefiks urządzenia płytki deweloperskiej. W przypadku ESP32 firmy Espressif jest to /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Konfigurowanie centrali

Skonfiguruj centralę za pomocą tego samego konta Google, którego zamierzasz używać w tym ćwiczeniu.

Konfigurowanie środowiska programistycznego

Wymagania wstępne

Te instrukcje zostały przetestowane w systemie Debian Linux i powinny działać w większości dystrybucji Linuksa opartych na Debianie, w tym w Ubuntu. Jeśli pracujesz z inną dystrybucją Linuksa, procedura konfigurowania zależności może się różnić od opisanej poniżej.

Instalowanie zależności

Uruchom to polecenie, aby zainstalować wymagane pliki binarne pakietu Linux, które mogą 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

Konfigurowanie pakietu SDK

Aby kontynuować to ćwiczenie, potrzebujesz pakietu SDK firmy Espressif (Espressif IoT Development Framework lub „ESP-IDF”).

  1. Utwórz katalog, w którym będzie się znajdować ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Sklonuj ESP-IDF z GitHub do tego katalogu:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. Zakończ instalację łańcucha narzędzi:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Konfigurowanie pakietu SDK Matter

  1. Sklonuj 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 podmoduły repozytorium:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Wczytaj środowisko programistyczne 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 certyfikację Connectivity Standards Alliance (Alliance), działa w ekosystemie Google Home. Urządzenia w trakcie opracowywania, które nie zostały jeszcze certyfikowane, mogą być konfigurowane w ekosystemie Google Home pod pewnymi warunkami. Więcej informacji znajdziesz w sekcji Ograniczenia parowania.

Tworzenie projektu deweloperskiego

Zacznij od otwarcia konsoli programisty Google Home:

  1. Kliknij Utwórz projekt.
  2. Wpisz unikalną nazwę projektu, a potem kliknij Utwórz projekt. Okno tworzenia nowego projektu
  3. Kliknij + Dodaj integrację, aby przejść do ekranu Zasoby Matter, na którym możesz wyświetlić dokumentację dotyczącą tworzenia aplikacji Matter i przeczytać o niektórych narzędziach.
  4. Gdy wszystko będzie gotowe, kliknij Dalej: tworzenie, aby wyświetlić stronę Lista kontrolna Matter.
  5. Kliknij Dalej: konfiguracja.
  6. Na stronie Konfiguracja wpisz Nazwę produktu.
  7. Kliknij Wybierz typ urządzenia i w menu wybierz typ urządzenia (w tym przypadku Light).
  8. W polu Vendor ID (VID) (Identyfikator dostawcy) wybierz Test VID (Testowy identyfikator dostawcy), a potem w menu Test VID (Testowy identyfikator dostawcy) wybierz 0xFFF1. W polu Product ID (PID) (Identyfikator produktu) wpisz 0x8000 i kliknij Zapisz i kontynuuj , a potem na następnej stronie kliknij Zapisz. Użyj dokładnie tych wartości VID/PID, ponieważ są one wymagane w dalszych krokach ćwiczenia.
    Konfigurowanie projektu
  9. Teraz integracja będzie widoczna w sekcji Integracje Matter.
  10. Uruchom ponownie centralę, aby mieć pewność, że otrzyma ona najnowszą konfigurację projektu integracji Matter. Jeśli później będziesz musiał zmienić identyfikator VID lub PID, po zapisaniu projektu musisz też ponownie uruchomić centralę, aby zmiany zostały zastosowane. Szczegółowe instrukcje ponownego uruchamiania znajdziesz w artykule Ponowne uruchamianie urządzeń Google Nest lub Google Wifi.

4. Tworzenie urządzenia

Wszystkie przykłady w Matter znajdują się w folderze examples w repozytorium GitHub. Dostępnych jest kilka przykładów, ale w tym ćwiczeniu skupimy się na aplikacji lighting-app.

Ten przykład to proste urządzenie, które w Google Home jest wyświetlane jako włącznik światła i reaguje na polecenia włączania i wyłączania. Sterowanie prawdziwym oświetleniem elektrycznym wykracza poza zakres tego ćwiczenia.

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 Ccache, aby przyspieszyć 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 strzałkę w lewo, aby wrócić do menu najwyższego poziomu.
    4. Wybierz Component config ---> (Konfiguracja komponentu --->).
    5. Wybierz CHIP Device Layer ---> (Warstwa urządzenia CHIP --->).
    6. Wybierz Device Identification Options ---> (Opcje identyfikacji urządzenia --->).
    7. Ustaw Vendor ID (Identyfikator dostawcy) na identyfikator VID przypisany przez Alliance lub na testowy identyfikator VID.
    8. Ustaw Product ID (Identyfikator produktu) na identyfikator PID ustawiony w integracji Matter w konsoli programisty Google Home.
    9. Naciśnij S , aby zapisać.
    10. Naciśnij Enter , aby zaakceptować domyślną ścieżkę, w której zostanie zapisana konfiguracja.
    11. Naciśnij Enter , aby zamknąć okno potwierdzenia zapisu.
    12. Naciśnij Q , aby zamknąć narzędzie do konfiguracji.

Uruchamianie kompilacji

Wywołaj skrypt kompilacji:

idf.py build

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

Programowanie urządzenia

  1. Podłącz płytkę deweloperską do komputera za pomocą kabla USB.
  2. Usuń poprzednie oprogramowanie z urządzenia (jeśli do komputera jest podłączona tylko 1 płytka deweloperska, możesz pominąć opcję -p {device} – urządzenie powinno zostać wykryte automatycznie):
    idf.py -p {device} erase-flash
    
  3. Skopiuj nową aplikację na płytkę deweloperską za pomocą tego polecenia:
    idf.py -p {device} flash
    

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

5. Łączenie z urządzeniem

  1. Otwórz okno terminala.
  2. Zanotuj, w jakim katalogu się znajdujesz, a potem połącz się z nowym urządzeniem Matter za pomocą GNU screen:
    $ screen -L {device} 115200
    
  3. Jeśli widzisz pustą konsolę, naciśnij przycisk RESET , aby rozpocząć proces uruchamiania urządzenia.

6. Konfigurowanie urządzenia

Uwaga: ten krok zakończy się powodzeniem tylko wtedy, gdy projekt został już skonfigurowany w konsoli programisty Google Home.

Nest Hub

Aby skonfigurować urządzenie w sieci Matter, potrzebujesz centrali. Jest to urządzenie Google Nest, np. Nest Hub (2. generacji), które obsługuje Matter i będzie pełnić funkcję zarówno routera brzegowego dla urządzeń obsługujących Thread, jak i lokalnej ścieżki realizacji do kierowania intencji inteligentnego domu.

Na tej liście znajdziesz centrale obsługujące Matter.

Zanim rozpoczniesz proces konfiguracji, sprawdź, czy:

  • centrala jest sparowana z tym samym kontem Google, którego używasz do logowania się w konsoli Google Home;
  • centrala jest połączona z tą samą siecią Wi-Fi co komputer, na którym uruchamiasz wirtualne urządzenie Matter;
  • centrala znajduje się w tej samej strukturze, której używasz w aplikacji Google Home (dom w grafie Google Home reprezentuje Twoją strukturę).

Parowanie urządzenia

Aby sparować urządzenie, postępuj zgodnie z instrukcjami parowania ESP32.

Uwaga: jeśli używasz M5STACK, pamiętaj, że po flashowaniu ekran pozostanie pusty, więc kod QR musisz wyświetlić za pomocą adresu URL, który pojawi się w konsoli. Możesz też wpisać ręczny 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

Konfiguracja się nie powiodła

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

7. Sterowanie urządzeniem

Gdy urządzenie zgodne z Matter zostanie pomyślnie skonfigurowane i pojawi się w aplikacji Google Home jako żarówka, możesz spróbować sterować nim za pomocą Asystenta Google, aplikacji Google Home lub symulatora Asystenta Google w rozszerzeniu Google Home dla VS Code.

Asystent Google

Użyj Asystenta Google na telefonie lub centrali, aby przełączać stan urządzenia za pomocą poleceń głosowych, np. „OK Google, włą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łącz i Wyłącz obok ikony żarówki wyświetlanej w aplikacji Google Home.

Więcej informacji znajdziesz w sekcji _Sterowanie urządzeniami za pomocą aplikacji Google Home_.

Symulator Asystenta Google

W rozszerzeniu Google Home dla VS Code możesz używać symulatora Asystenta Google, aby wydawać polecenia urządzeniu za pomocą interfejsu podobnego do czatu.

8. Gratulacje!

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

Z tego ćwiczenia dowiedziałeś się, jak:

  • zainstalować środowisko programistyczne Matter i doprowadzić je do stanu gotowości do pracy;
  • skompilować i uruchomić urządzenie Matter;
  • skonfigurować urządzenie i sterować nim za pomocą Google Home.

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