As instruções a seguir usam o app de iluminação exemplo do SDK Mattercom uma placa de desenvolvimento Nordic nRF52840.
Configuração do ambiente
Essas instruções são baseadas em uma instalação da cadeia de ferramentas do nRF Connect baseada no Docker. Se você preferir não usar o Docker, as instruções para instalar o nRF Connect nativamente em um computador host estão no site da Nordic.
Confira o SDK do Matter
user@host> mkdir otaprep
user@host> cd otaprep
user@host> git clone https://github.com/project-chip/connectedhomeip.git
user@host> cd connectedhomeip/
user@host> git fetch origin v1.0-branch
user@host> git checkout FETCH_HEAD
Verifique a imagem Docker correta a ser usada. Use uma das imagens criadas para a integração contínua do SDK Matter.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
Conecte a placa Nordic ao computador. Verifique a enumeração USB da interface serial:
No macOS:
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
No Linux, faça o seguinte:
user@host> ls /dev/tty*AC*
/dev/ttyACM0
ou
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
Execute um contêiner usando as informações coletadas no comando anterior. Transmita as flags para ativar a pasta do SDK do host Mattere a interface serial USB no contêiner.
user@host> docker run --name container_name -it --user $(id -u):$(id -g) --mount source=$(pwd),target=/workspace,type=bind connectedhomeip/chip-build-nrf-platform:0.5.99 /bin/bash
Interromper e iniciar o contêiner do Docker do Matter
Sempre que você executar um comando docker run, um novo contêiner será criado com a imagem especificada. Quando você faz isso, os dados antigos, que foram salvos em uma instância de contêiner anterior, são perdidos. Às vezes, é isso que você quer que aconteça, porque permite começar com uma instalação limpa. No entanto, neste exemplo, é mais provável que você queira salvar seu trabalho e a configuração do ambiente entre as sessões.
user@host> docker stop container_name
Quando estiver tudo pronto para executar novamente, inicie o contêiner e abra uma janela de terminal:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Você pode abrir outras sessões de terminal no contêiner com:
user@host> docker exec -it container_name /bin/bash
Ou inicie uma sessão raiz usando:
user@host> docker exec -u 0 -it container_name /bin/bash
Inicializar o SDK
No contêiner, inicialize o Matter SDK e as variáveis de ambiente para a cadeia de ferramentas Nordic nRF52. A inicialização do Matter SDK geralmente leva vários minutos.
cd /workspacegit submodule update --init --recursivesource ./scripts/bootstrap.shsource ./scripts/activate.shexport ZEPHYR_BASE=/opt/NordicSemiconductor/nrfconnect/zephyrexport GNUARMEMB_TOOLCHAIN_PATH="$PW_ARM_CIPD_INSTALL_DIR"scripts/run_in_build_env.sh "python3 scripts/setup/nrfconnect/update_ncs.py --update --shallow"source /opt/NordicSemiconductor/nrfconnect/zephyr/zephyr-env.shCriar e atualizar
Configure o VID e o PID do dispositivo:
cd examples/lighting-app/nrfconnectwest build -b nrf52840dk_nrf52840 -t menuconfigNas opções de menu interativo:
Modules --->connectedhomeip --->[*] Connected Home over IP protocol stack --->Insira o
Device vendor ID(VID) e oDevice product ID(PID) no formato de número inteiro de base 10.Verifique se a flag
[*] Enable OTA requestorestá selecionada.Pressione s para salvar a configuração, Enter para confirmar e q para sair do
menuconfig.
Configurar certificados de teste
Siga as etapas em Criar certificados de teste de dispositivos Matter para criar certificados de CD, DAC e PAI.
Criar o dispositivo
west build -b nrf52840dk_nrf52840Atualizar o dispositivo
Isso é feito no computador host, não no contêiner do Docker.
Se você ainda não tiver as ferramentas de linha de comando do nRFConnect, faça o download e instale-as.
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Abra uma conexão de terminal com o dispositivo no host ou no contêiner. Use sua ferramenta de terminal favorita, como minicom ou GNU screen.
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
Criar e fazer upload da imagem OTA
Depois de atualizar o dispositivo, mude as configurações de build mais uma vez para criar uma imagem OTA com uma versão de software de dispositivo incrementada.
Inicie o Zephyr menuconfig:
west build -b nrf52840dk_nrf52840 -t menuconfigNas opções de menu interativo:
Modules -->connectedhomeip -->Connected Home over IP protocol stack -->Mude
Device Software Versionpara2.Mude
Device Software Version Stringparaprerelease-2.Pressione s para salvar a configuração, Enter para confirmar e q para sair do
menuconfig.
Crie o novo Matter arquivo de pacote OTA. A saída é colocada em build/zephyr/zephyr.bin.
/workspace/src/app/ota_image_tool.py create -v hex_VID -p hex_PID -vn version_no -vs version_string path_to_binary -da digest_algorithm path_to_ota_fileConfirme as propriedades do arquivo de pacote OTA do Matter gerado:Matter
/workspace/examples/lighting-app/nrfconnect# /workspace/src/app/ota_image_tool.py show firmware-ota-update-test.binMagic: 1beef11e
Total Size: 951784
Header Size: 72
Header TLV:
[0] Vendor Id: XXXXX (0xXXXX)
[1] Product Id: 32768 (0x8000)
[2] Version: 2 (0x2)
[3] Version String: prerelease-2
[4] Payload Size: 951696 (0xe8590)
[8] Digest Type: 1 (0x1)
[9] Digest: 75f2e8b0c8e922b8bb3841504190bcdd83533e936a284c7254d29327d605c930
Como o SDK Matter é ativado no host do contêiner, a imagem OTA também está disponível nele. Faça o upload da imagem OTA para o Google Home Developer Console seguindo as instruções de upload de OTA.
Comissione o dispositivo e observe o processo OTA.
Abra uma conexão de terminal com o dispositivo no host ou no contêiner. Use seu terminal favorito, como minicom ou GNU screen:
minicom -c on -D /dev/ttyACM0 115200Pressione o botão de redefinição do dispositivo para conferir os registros da inicialização.
Na saída do dispositivo, você verá o VID e o PID definidos, bem como o URL do QR code de comissionamento:
I: nRF5 802154 radio initialized
I: 4 Sectors of 4096 bytes
(...)
I: 681 [SVR]Server Listening...
I: 684 [DL]Device Configuration:
I: 687 [DL] Serial Number: 11223344556677889900
I: 692 [DL] Vendor Id: XXXXX (0xXXXX)
I: 695 [DL] Product Id: XXXXX (0xXXXX)
I: 699 [DL] Hardware Version: 0
I: 702 [DL] Setup Pin Code (0 for UNKNOWN/ERROR): 20202021
I: 708 [DL] Setup Discriminator (0xFFFF for UNKNOWN/ERROR): 3840 (0xF00)
I: 714 [DL] Manufacturing Date: (not set)
I: 718 [DL] Device Type: 65535 (0xFFFF)
I: 723 [SVR]SetupQRCode: [MT:6FCJ142C00KA0648G00]
I: 727 [SVR]Copy/paste the below URL in a browser to see the QR Code:
I: 733 [SVR]https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%000000000000000000000
I: 742 [SVR]Manual pairing code: [30900112302]
I: 747 [DL]CHIP task running
I: 752 [DL]CHIPoBLE advertising started
I: 757 [DL]NFC Tag emulation started
Verifique se o hub está on-line e comissione o dispositivo com o Google Home app (GHA) usando o QR code do link encontrado no registro.
Deixe o dispositivo registrando as atividades após o comissionamento.
O texto a seguir vai aparecer no registro do dispositivo:
/* Hub OTA provider identification */
I: 69642 [SWU]OTA Requestor received AnnounceOTAProvider
D: 69647 [SWU] FabricIndex: 1
D: 69649 [SWU] ProviderNodeID: 0x00000000XXXXXXXX
D: 69654 [SWU] VendorID: 0x6006
D: 69657 [SWU] AnnouncementReason: 0
D: 69660 [SWU] Endpoint: 2
...
D: 69799 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262265 [SWU]QueryImageResponse:
D: 262268 [SWU] status: 0
D: 262271 [SWU] imageURI: bdx://00000000FC843D94/37f09fd6-0000-0000-0000-000000000000
D: 262278 [SWU] softwareVersion: 2
D: 262281 [SWU] softwareVersionString: 2
D: 262285 [SWU] updateToken: 36
D: 262288 [SWU] userConsentNeeded: 0
D: 262292 [SWU]Update available from version 0 to 2
...
D: 262372 [SWU]Establishing session to provider node ID 0x00000000FC843D94 on fabric index 1
...
D: 262409 [SWU]BDX::SendMessage
Depois que a imagem é aplicada, o dispositivo é reinicializado. Após a reinicialização, o tempo de compilação da imagem precisa corresponder ao tempo da imagem enviada ao Developer Console.
Validar a atualização de software OTA
A versão do software do dispositivo pode ser verificada usando o app Google Home (GHA). Depois que um dispositivo é comissionado, siga estes procedimentos:
- Toque e pressione o bloco do dispositivo na tela principal GHA.
- Toque no ícone no canto superior direito.
- Toque em Informações técnicas.
- Verifique o campo Versão do software.