Crea un dispositivo Matter

1. Introduzione

Matter è un protocollo di connettività che offre interessanti opportunità per lo sviluppo di smart device. In questo codelab, creerai il tuo primo dispositivo Matter. Per scoprire di più su Matter, visita il Centro per gli sviluppatori Google Home: Matter o il sito web di Connectivity Standards Alliance.

Obiettivi didattici

  • Come integrare un dispositivo fisico con Matter.
  • Come configurare e controllare il tuo dispositivo Matter con Google Home.

Che cosa ti serve

2. Configura l'ambiente

Identificare il dispositivo seriale

Il primo passaggio per configurare l'ambiente di sviluppo è determinare a quale porta seriale è connesso il dispositivo. Queste informazioni ti consentiranno di programmare e interagire con la tua scheda di sviluppo.

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

Configurare 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, inclusa Ubuntu. Se utilizzi una distribuzione Linux diversa, la procedura di configurazione delle dipendenze potrebbe variare rispetto a quella descritta di seguito.

Installa le dipendenze

Esegui il seguente comando per installare i file binari del pacchetto Linux richiesti che potrebbero non essere ancora 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

Configura l'SDK

Per continuare questo codelab, ti servirà l'SDK Espressif (Espressif IoT Development Framework o "ESP-IDF").

  1. Crea una directory per contenere ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Clona 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 ~/
    

Configura l'SDK Matter

  1. Clona il repository open source di Matter:
    $ 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. Google Home Developer Console

La console per gli sviluppatori di Google Home è l'applicazione web in cui gestisci le integrazioni Matter con Google Home.

Qualsiasi dispositivo Matter che ha superato la certificazione Matter della Connectivity Standards Alliance (Alliance) funziona 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 saperne di più, consulta la sezione Limitazioni dell'accoppiamento.

Creare un progetto sviluppatore

Per iniziare, vai 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, che ti reindirizza alla schermata Risorse Matter, dove puoi visualizzare la documentazione di sviluppo di Matter e leggere informazioni su alcuni strumenti.
  4. Quando è tutto pronto per continuare, fai clic su Avanti: sviluppa, che mostra la pagina Elenco di controllo della pratica.
  5. Fai clic su Avanti: configurazione.
  6. Nella pagina Configurazione, inserisci il Nome prodotto.
  7. Fai clic su Seleziona 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 e 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 successiva. Utilizza questi valori VID/PID esatti, poiché i passaggi successivi del codelab dipendono da questi.
    Configurare un progetto
  9. Ora vedrai l'integrazione 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 devi modificare il VID o il PID, dovrai anche riavviare il dispositivo dopo aver salvato il progetto affinché la modifica venga applicata. Consulta l'articolo Riavviare i dispositivi Google Nest o Google Wifi per istruzioni dettagliate sul riavvio.

4. Costruire il dispositivo

Tutti gli esempi in Matter si trovano nella cartella examples del repository GitHub. Sono disponibili diversi esempi, ma in questo codelab ci concentreremo sull'app per l'illuminazione.

Questo esempio è un semplice dispositivo che viene visualizzato in Google Home come luce on/off e risponde ai comandi On e Off. Il controllo di una luce elettrica reale non rientra nell'ambito di questo codelab.

Configurare la build

  1. Configura l'SDK Matter e attiva l'ambiente di build di 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 di compilazione lighting-app ESP32 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 sull'ID fornitore assegnato dall'alleanza o su un ID fornitore di test.
    8. Imposta Product ID sul PID impostato nell'integrazione Matter in Google Home Developer Console.
    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 di sviluppo al computer utilizzando un cavo USB.
  2. Elimina qualsiasi firmware precedente sul dispositivo (se al computer è collegata una sola scheda di sviluppo, puoi omettere l'opzione -p {device}: il dispositivo dovrebbe essere rilevato automaticamente):
    idf.py -p {device} erase-flash
    
  3. Copia la nuova applicazione sulla scheda di sviluppo con:
    idf.py -p {device} flash
    

Per maggiori informazioni sulle opzioni di flashing, visita la pagina della documentazione di Espressif esptool.py.

5. Connettersi al dispositivo

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

6. Configurare il dispositivo

Nota: questo passaggio andrà a buon fine solo se hai già configurato il progetto nella console Google Home Developer.

Nest Hub

Per eseguire il provisioning del dispositivo nell'infrastruttura Matter è necessario un hub. Si tratta di un dispositivo Google Nest, ad esempio Nest Hub (2ª gen.), che supporta Matter e che fungerà sia da router di confine per i dispositivi compatibili con Thread sia da percorso di completamento locale per il routing degli intent di smart home.

Consulta questo elenco per scoprire quali hub supportano Matter.

Prima di iniziare la procedura di configurazione, controlla che:

  • Il tuo hub è associato allo stesso Account Google che hai utilizzato per accedere alla console Google Home.
  • L'hub è connesso alla stessa rete Wi-Fi del computer che utilizzi per eseguire il dispositivo Matter virtuale.
  • L'hub si trova nella stessa struttura che utilizzi nell'app Google Home. La "casa" nel grafico Google Home rappresenta la tua struttura.

Accoppiare il dispositivo

Segui le istruzioni di accoppiamento 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 inserire il codice di accoppiamento manuale.

Output della console di esempio 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

Provisioning non riuscito

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

7. Controllare il dispositivo

Una volta che il dispositivo compatibile con Matter è stato commissionato correttamente e viene 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 sullo smartphone o sull'hub per attivare/disattivare lo stato del dispositivo tramite comandi vocali, ad esempio dicendo "Hey Google, attiva/disattiva le mie 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ù, consulta l'articolo 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 utilizzando un'interfaccia simile a una chat.

8. Complimenti!

Hai creato e commissionato correttamente il tuo primo dispositivo Matter. Fantastico!

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.
  • Esegui il provisioning e controlla il dispositivo da Google Home.

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