Crea un dispositivo Matter

1. Introduzione

Matter è un protocollo di connettività che offre entusiasmanti opportunità per lo sviluppo di smart device. In questo codelab, creerai il tuo primo dispositivo Matter. Per saperne di più su Matter, visita il Developer Center di Google Home: Matter o il sito web della Connectivity Standards Alliance.

Obiettivi didattici

  • Come integrare un dispositivo fisico con Matter.
  • Come mettere in servizio e controllare il tuo dispositivo Matter con Google Home.

Che cosa ti serve

2. Configura l'ambiente

Identifica il dispositivo seriale

Il primo passaggio della configurazione dell'ambiente di sviluppo consiste nel determinare a quale porta seriale è connesso il dispositivo. Queste informazioni ti consentiranno di programmare e interagire con la tua scheda per gli sviluppatori.

  1. Collega la scheda per sviluppatori al computer utilizzando un cavo USB.
  2. Cerca il dispositivo della scheda per sviluppatori nel file system /dev. Puoi restringere la ricerca specificando il prefisso del dispositivo della scheda per sviluppatori. ESP32 di Espressif utilizza /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Configura l'hub

Configura l'hub utilizzando lo stesso Account Google che intendi utilizzare per questo codelab.

Configurazione dell'ambiente di sviluppo

Prerequisiti

Queste istruzioni sono state testate su Debian Linux e dovrebbero funzionare sulla maggior parte delle distribuzioni Linux basate su Debian, tra cui Ubuntu. Se stai lavorando con una distribuzione Linux diversa, la procedura di configurazione delle dipendenze può variare rispetto a quanto segue.

Installa le dipendenze

Esegui questo comando per installare i file binari del pacchetto Linux richiesti che potrebbero non essere già installati:

$ 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

Configurare l'SDK

Per continuare questo codelab, avrai bisogno dell'SDK Espressif (espressif IoT Development Framework o "ESP-IDF").

  1. Crea una directory che contenga l'ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Clona l'ESP-IDF da GitHub in questa directory:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. Completa l'installazione della Toolchain:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Configurare l'SDK Matter

  1. Clona il repository Matter open source:
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. Recupera i sottomoduli del repository:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Esegui il bootstrap dell'ambiente di sviluppo Matter:
    $ source ./scripts/bootstrap.sh
    

3. Console per gli sviluppatori di Google Home

La Console per gli sviluppatori di Google Home è l'applicazione web con cui puoi gestire le integrazioni di Matter con Google Home.

Tutti i dispositivi Matter che hanno superato la certificazione Matter (Alliance) della Connectivity Standards Alliance funzionano nell'ecosistema Google Home. I dispositivi in fase di sviluppo che non sono stati certificati possono essere commissionati nell'ecosistema Google Home a determinate condizioni. Per ulteriori informazioni, consulta la sezione Limitazioni relative all'accoppiamento.

Creare un progetto sviluppatore

Inizia accedendo alla Console per gli sviluppatori di Google Home:

  1. Fai clic su Crea progetto.
  2. Inserisci un nome univoco per il progetto e fai clic su Crea progetto. Finestra di dialogo Crea nuovo progetto
  3. Fai clic su + Aggiungi integrazione. Si aprirà la schermata Risorse Matter, dove potrai visualizzare la documentazione di sviluppo di Matter e leggere informazioni su alcuni strumenti.
  4. Quando tutto è pronto per continuare, fai clic su Avanti: sviluppa per visualizzare la pagina Elenco di controllo Matter.
  5. Fai clic su Successivo: configurazione.
  6. Nella pagina Configurazione, inserisci il Nome del prodotto.
  7. Fai clic su Seleziona il tipo di dispositivo e seleziona il tipo di dispositivo dal menu a discesa (in questo caso, Light).
  8. In ID fornitore (VID), seleziona Test VID, quindi seleziona 0xFFF1 dal menu a discesa Test VID. In ID prodotto (PID), inserisci 0x8000 e fai clic su Salva e continua, quindi fai clic su Salva nella pagina seguente. Utilizza questi valori VID/PID esatti, i cui passaggi successivi del codelab dipendono da questi.
    Configurazione di un progetto
  9. A questo punto, l'integrazione viene visualizzata nella sezione Integrazioni di Matter.
  10. Riavvia l'hub per assicurarti che riceva la configurazione del progetto di integrazione Matter più recente. Se in un secondo momento dovrai modificare il VID o il PID, dovrai riavviare anche dopo aver salvato il progetto affinché la modifica abbia effetto. Per istruzioni dettagliate sul riavvio, consulta l'articolo Riavviare i dispositivi Google Nest o Google Wifi.

4. Crea il dispositivo

Tutti gli esempi in Matter sono posizionati nella cartella examples nel repository GitHub. Sono disponibili diversi esempi, ma il nostro codelab è incentrato sull'app Lighting.

Questo esempio è un dispositivo semplice che appare in Google Home come una spia di accensione/spegnimento e che risponde ai comandi di accensione e spegnimento. Farlo controllare una vera luce elettrica non rientra nell'ambito di questo codelab.

Configura la build

  1. Configura l'SDK Matter e attiva l'ambiente di build Matter:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. Attiva Ccache, che accelera il processo di compilazione:
    $ export IDF_CCACHE_ENABLE=1
    
  3. Passa alla directory della build ESP32 lighting-app e imposta l'architettura di destinazione:
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. Esegui l'utilità di configurazione:
      $ idf.py menuconfig
      
    2. Seleziona Demo -> Device Type e imposta Device Type su ESP32-DevKitC.
    3. Premi il tasto Freccia sinistra per tornare al menu di primo livello.
    4. Seleziona Component config --->.
    5. Seleziona CHIP Device Layer --->.
    6. Seleziona Device Identification Options --->.
    7. Imposta Vendor ID sul VID assegnato dall'Alleanza o su un VID di prova.
    8. Imposta Product ID sul PID che hai impostato sull'integrazione di Matter nella Console per gli sviluppatori di Google Home.
    9. Premi S per salvare.
    10. Premi Invio per accettare il percorso predefinito in cui verrà salvata la configurazione.
    11. Premi Invio per chiudere la finestra di dialogo di conferma del salvataggio.
    12. Premi Q per uscire dall'utilità di configurazione.

Esegui la build

Richiama lo script di build:

idf.py build

La build deve essere completata senza errori.

Programma il dispositivo

  1. Collega la scheda per sviluppatori al computer utilizzando un cavo USB.
  2. Elimina l'eventuale firmware precedente sul dispositivo (se hai collegato una sola scheda per sviluppatori al computer, puoi lasciare disattivata l'opzione -p {device}; il dispositivo dovrebbe essere rilevato automaticamente):
    idf.py -p {device} erase-flash
    
  3. Copia la nuova applicazione nella scheda per gli sviluppatori con:
    idf.py -p {device} flash
    

Ulteriori informazioni sulle opzioni lampeggianti sono disponibili nella pagina della documentazione di Espressif esptool.py.

5. Connetti al dispositivo

  1. Apri una finestra del terminale.
  2. Prendi nota della directory in cui ti trovi, quindi connettiti al nuovo dispositivo Matter usando GNU screen:
    $ screen -L {device} 115200
    
  3. Se vedi una console vuota, premi il pulsante REIMPOSTA per avviare il processo di avvio del dispositivo.

6. Commissione il dispositivo

Nota: questo passaggio avrà esito positivo solo se hai già configurato il progetto nella Developer Console di Google Home.

Nest Hub

È necessario un hub per mettere in servizio il dispositivo sull'infrastruttura Matter. Si tratta di un dispositivo Google Nest, ad esempio Nest Hub (2a generazione), che supporta Matter e che fungerà sia da router di confine per i dispositivi compatibili con Thread, sia da percorso di distribuzione locale per il routing degli intent della smart home.

Fai riferimento a questo elenco per sapere quali hub supportano Matter.

Prima di iniziare la procedura di messa in servizio, verifica quanto segue:

  • L'hub sia accoppiato con lo stesso Account Google utilizzato per accedere a Google Home Console.
  • L'hub si trovi sulla stessa rete Wi-Fi del computer che utilizzi per eseguire il tuo dispositivo Virtual Matter.
  • L'hub ha la stessa struttura che utilizzi nell'app Google Home (la "casa" in Google Home Graph rappresenta la tua struttura).

Accoppia il dispositivo

Segui le istruzioni per l'accoppiamento di ESP32 per accoppiare il dispositivo.

Nota: se utilizzi M5STACK, tieni presente che lo schermo rimarrà vuoto dopo il flashing, quindi dovrai visualizzare il codice QR utilizzando l'URL visualizzato nella console. In alternativa, puoi digitare il codice di accoppiamento manuale.

Esempio di output della console che mostra l'URL del codice 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]]

Risoluzione dei problemi

Messa in servizio non riuscita

Per ulteriori suggerimenti per la risoluzione dei problemi, consulta la pagina di risoluzione dei problemi Matter.

7. Controlla il dispositivo

Dopo aver commissionato correttamente il dispositivo conforme a Matter e visualizzato nell'app Google Home come lampadina, puoi provare a controllarlo utilizzando l'Assistente Google, l'app Google Home o il simulatore dell'Assistente Google nell'estensione Google Home per VS Code.

Assistente Google

Usa l'Assistente Google sul telefono o sull'hub per attivare/disattivare lo stato del dispositivo dai comandi vocali, ad esempio per dire "Hey Google, attiva/disattiva le luci".

Per altri esempi di comandi, consulta la sezione Controllare i dispositivi per la smart home con i comandi vocali dell'articolo Controllare i dispositivi per la smart home aggiunti all'app Google Home.

App Google Home

Puoi toccare le etichette On e Off accanto all'icona della lampadina mostrata nell'app Google Home.

Per saperne di più, visita la pagina Controllare i dispositivi con l'app Google Home.

Simulatore dell'Assistente Google

Nell'estensione Google Home per VS Code, utilizzando il Simulatore dell'Assistente Google, puoi inviare comandi vocali al tuo dispositivo mediante un'interfaccia simile a una chat.

8. Complimenti!

Hai creato e commissionato il tuo primo dispositivo Matter. Ottimo!

In questo codelab hai imparato a:

  • Installa un ambiente di sviluppo Matter dai requisiti a uno stato di funzionamento.
  • Crea ed esegui un dispositivo Matter.
  • Commissione e controlla il tuo dispositivo da Google Home.

Per scoprire di più su Matter, consulta questi riferimenti: