Criar um dispositivo Matter

1. Introdução

O Matter é um protocolo de conectividade que oferece oportunidades incríveis para o desenvolvimento de dispositivos inteligentes. Neste codelab, você vai criar seu primeiro dispositivo Matter. Para saber mais sobre o Matter, acesse o Centro para Desenvolvedores do Google Home: Matter ou o site da Connectivity Standards Alliance.

O que você vai aprender

  • Como integrar um dispositivo físico ao Matter.
  • Como comissionar e controlar o dispositivo Matter com o Google Home.

O que é necessário

2. Configurar o ambiente

Identificar o dispositivo serial

A primeira etapa para configurar seu ambiente de desenvolvimento é determinar a qual porta serial seu dispositivo está conectado. Essas informações permitirão que você programe e interaja com sua placa de desenvolvedor.

  1. Conecte a placa do desenvolvedor ao computador usando um cabo USB.
  2. Procure no sistema de arquivos /dev para encontrar o dispositivo da placa do desenvolvedor. É possível restringir a pesquisa especificando o prefixo do dispositivo da placa de desenvolvedor. O ESP32 da Espressif usa /dev/ttyUSBx:
    user@host $ ls /dev/ttyUSB*
    /dev/ttyUSB0
    

Configurar seu hub

Configure sua central com a mesma Conta do Google que você pretende usar para este codelab.

Configurar o ambiente de desenvolvimento

Pré-requisitos

Essas instruções foram testadas no Debian Linux e devem funcionar na maioria das distribuições Linux baseadas no Debian, inclusive no Ubuntu. Se você estiver trabalhando com uma distribuição Linux diferente, o procedimento de configuração da dependência poderá ser diferente do mostrado a seguir.

Instalar dependências

Execute o seguinte comando para instalar os binários de pacotes Linux necessários que talvez ainda não estejam instalados:

$ 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

configurar o SDK

Para continuar este codelab, você precisará do SDK do Espressif (o Espressif IoT Development Framework ou "ESP-IDF").

  1. Crie um diretório para conter o ESP-IDF:
    $ mkdir ~/esp-idf_tools
    
  2. Clone o ESP-IDF do GitHub neste diretório:
    $ cd ~/esp-idf_tools
    $ git clone -b v4.4.3 --recursive https://github.com/espressif/esp-idf.git
    
  3. Conclua a instalação do conjunto de ferramentas:
    $ cd ./esp-idf
    $ ./install.sh
    $ cd ~/
    

Configurar o SDK do Matter

  1. Clone o repositório do Matter de código aberto:
    $ git clone https://github.com/project-chip/connectedhomeip.git
    $ cd ./connectedhomeip
    $ git fetch origin v1.0-branch
    $ git checkout FETCH_HEAD
    
  2. Busque os submódulos do repositório:
    $ ./scripts/checkout_submodules.py --shallow --platform esp32
    
  3. Inicializar o ambiente de desenvolvimento do Matter:
    $ source ./scripts/bootstrap.sh
    

3. Console para desenvolvedores do Google Home

O Google Home Developer Console é o aplicativo da Web em que você gerencia as integrações do Matter com o Google Home.

Qualquer dispositivo Matter que tenha sido aprovado pela certificação da Connectivity Standards Alliance (Alliance) Matter funciona no ecossistema do Google Home. Dispositivos em desenvolvimento que não foram certificados podem ser comissionados no ecossistema do Google Home sob determinadas condições. Consulte Restrições de pareamento para mais informações.

Criar um projeto de desenvolvedor

Para começar, acesse o Console para desenvolvedores do Google Home:

  1. Clique em Criar projeto.
  2. Insira um nome de projeto exclusivo e clique em Criar projeto. Caixa de diálogo "Criar novo projeto"
  3. Clique em + Adicionar integração para acessar a tela Recursos do Matter, onde é possível conferir a documentação de desenvolvimento do Matter e ler sobre algumas ferramentas.
  4. Quando estiver tudo pronto para continuar, clique em Próximo: desenvolver, que vai exibir a página Lista de verificação do Matter.
  5. Clique em Próxima: configuração.
  6. Na página Configuração, insira o Nome do produto.
  7. Clique em Selecionar tipo de dispositivo e selecione o tipo de dispositivo no menu suspenso (neste caso, Light).
  8. Em "ID do fornecedor (VID)", selecione Testar VID e escolha "0xFFF1" no menu suspenso "Testar VID". Em ID do produto (PID), insira 0x8000 e clique em Salvar e continuar e, em seguida, clique em Salvar na próxima página. Use esses valores exatos de VID/PID. As etapas posteriores do codelab dependem deles.
    Como configurar um projeto
  9. Sua integração vai aparecer em Integrações do Matter.
  10. Reinicie o hub para garantir que ele receba a configuração mais recente do projeto de integração do Matter. Se for necessário alterar o VID ou o PID posteriormente, também será necessário reiniciar depois de salvar o projeto para que a alteração entre em vigor. Consulte Reiniciar dispositivos Google Nest ou Google Wifi para ver instruções detalhadas.

4. Criar o dispositivo

Todos os exemplos no Matter são colocados na pasta de exemplos no repositório do GitHub. Há vários exemplos disponíveis, mas nosso foco neste codelab é o lighting-app.

Este exemplo é um dispositivo simples que aparece no Google Home como uma luz de ativação/desativação, respondendo aos comandos de ligar e desligar. Este codelab não aborda o controle de uma luz elétrica real.

Configure o build

  1. Configure o SDK do Matter e ative o ambiente de build do Matter:
    $ cd ~/esp-idf_tools/esp-idf
    $ source export.sh
    $ cd ~/connectedhomeip
    $ source ./scripts/activate.sh
    
  2. Ative o Ccache, que acelera o processo de build:
    $ export IDF_CCACHE_ENABLE=1
    
  3. Migre para o diretório de build lighting-app do ESP32 e defina a arquitetura de destino:
    $ cd ./examples/lighting-app/esp32
    $ idf.py set-target esp32
    
    1. Execute o utilitário de configuração:
      $ idf.py menuconfig
      
    2. Selecione Demo -> Device Type e defina Device Type como ESP32-DevKitC.
    3. Pressione a seta para a esquerda para retornar ao menu de nível superior.
    4. Selecione Component config --->.
    5. Selecione CHIP Device Layer --->.
    6. Selecione Device Identification Options --->.
    7. Defina Vendor ID como o VID atribuído pela Alliance ou um VID de teste.
    8. Defina Product ID como o PID definido na integração do Matter no Play Console do Google Home.
    9. Pressione S para salvar.
    10. Pressione Return para aceitar o caminho padrão em que a configuração será salva.
    11. Pressione Return para dispensar a caixa de diálogo de confirmação de salvamento.
    12. Pressione Q para sair do utilitário de configuração.

Executar o build

Invoque o script de build:

idf.py build

O build será concluído sem erros.

Programar o dispositivo

  1. Conecte sua placa de desenvolvedor ao computador usando um cabo USB.
  2. Apague qualquer firmware anterior do dispositivo (se você tiver apenas uma placa de desenvolvedor conectada ao seu computador, deixe de fora a opção -p {device}, porque o dispositivo será detectado automaticamente):
    idf.py -p {device} erase-flash
    
  3. Copie o novo aplicativo para a placa de desenvolvedor com:
    idf.py -p {device} flash
    

Mais informações sobre as opções de atualização podem ser encontradas na página de documentação do esptool.py do Espressif.

5. Conecte-se ao dispositivo

  1. Abra uma janela de terminal.
  2. Anote em qual diretório você está e se conecte ao novo dispositivo Matter usando o GNU screen:
    $ screen -L {device} 115200
    
  3. Se você vir um console em branco, pressione o botão REDEFINIR para iniciar o processo de inicialização do dispositivo.

6. Comissionar o dispositivo

Observação: esta etapa só será concluída se você já tiver configurado seu projeto no Google Home Developer Console.

Nest Hub

Um hub é necessário para comissionar o dispositivo no tecido Matter. Este é um dispositivo Google Nest, como o Nest Hub (2a geração), que oferece suporte ao Matter e serve como um roteador de borda para dispositivos compatíveis com Thread e como um caminho de fulfillment local para rotear intents de casa inteligente.

Consulte esta lista para saber quais hubs são compatíveis com o Matter.

Antes de iniciar o processo de comissionamento, verifique se:

  • O hub está pareado com a mesma Conta do Google que você usou para fazer login no console do Google Home.
  • O hub está na mesma rede Wi-Fi que o computador que você está usando para executar o Dispositivo Matter virtual.
  • O hub está na mesma estrutura que você usa no app Google Home. A "casa" no Google Home Graph representa sua estrutura.

Parear o dispositivo

Siga as instruções de pareamento do ESP32 para parear seu dispositivo.

Observação: se você estiver usando um M5STACK, esteja ciente de que sua tela permanecerá em branco após a atualização. Você terá que visualizar o QR code usando o URL que aparece no console. Ou você pode digitar o código de pareamento manual.

Exemplo de saída do console mostrando o URL do QR code:

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]]

Solução de problemas

Falha no comissionamento

Para mais dicas, consulte a página Solução de problemas do Matter.

7. Controlar o dispositivo

Depois que o dispositivo compatível com o Matter for comissionado e aparecer no app Google Home como uma lâmpada, tente controlá-lo usando o Google Assistente, o app Google Home ou o simulador do Google Assistente na extensão Google Home para VS Code.

Google Assistente

Use o Google Assistente no seu smartphone ou hub para alternar o estado do dispositivo por comandos de voz, como dizer "Ok Google, ligar as luzes".

Consulte a seção Controlar dispositivos de casa inteligente com comandos de voz de Controlar dispositivos de casa inteligente adicionados ao app Google Home para ver mais exemplos de comandos.

App Google Home

Toque nos marcadores Ativado e Desativado ao lado do ícone de lâmpada no app Google Home.

Consulte Controlar dispositivos com o app Google Home para mais informações.

Simulador do Google Assistente

Na extensão do Google Home para VS Code, com o simulador do Google Assistente, você pode emitir enunciados para o dispositivo usando uma interface parecida com um chat.

8. Parabéns!

Você criou e comissionou seu primeiro dispositivo Matter. Incrível!

Neste codelab, você aprendeu a:

  • Instalar um ambiente de desenvolvimento do Matter desde os requisitos até um estado funcional.
  • Crie e execute um dispositivo Matter.
  • Comissionamento e controle do dispositivo pelo Google Home.

Para saber mais sobre o Matter, consulte estas referências: