As instruções a seguir usam o app de iluminação do SDK Matter com uma nRF52840 nórdica de desenvolvimento de software.
Configuração do ambiente
Essas instruções são baseadas em uma instalação baseada no Docker do nRF Connect (em inglês) conjunto de ferramentas. Se você preferir não usar o Docker, as instruções para instalar o nRF A conexão nativa em um computador host também no site nórdico.
Conferir 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 do Matter.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
Conecte a placa nórdica ao computador. Verifique a enumeração USB de a 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. Aprovado as sinalizações para ativar a pasta host Matter do SDK e o serial 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 executar um comando docker run
, você criará um novo contêiner com
a imagem especificada. Ao fazer isso, seus dados antigos, que foram salvos em um
instância anterior do contêiner, é perdida. Às vezes, é isso que você quer
acontecerão, porque permite que você comece com uma nova instalação. Mas,
exemplo, você provavelmente vai querer salvar suas configurações de trabalho e ambiente
entre sessões.
user@host> docker stop container_name
Quando estiver tudo pronto para uma nova execução, inicie o contêiner e abra um terminal. janela:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Você pode abrir sessões de terminal adicionais para seu 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 SDK do Matter e o variáveis de ambiente para o conjunto de ferramentas nórdico nRF52. O Matter A inicialização do SDK geralmente leva vários minutos.
$ cd /workspace
$ git submodule update --init --recursive
$ source ./scripts/bootstrap.sh
$ source ./scripts/activate.sh
$ export ZEPHYR_BASE=/opt/NordicSemiconductor/nrfconnect/zephyr
$ export 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.sh
Build e Flash
Configure o VID e o PID do dispositivo:
$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig
Nas opções do menu interativo:
Modules --->
connectedhomeip --->
[*] Connected Home over IP protocol stack --->
Insira o
Device vendor ID
(VID) e oDevice product ID
(PID) em base 10 em formato de número inteiro.Verifique se a sinalização
[*] Enable OTA requestor
está selecionada.Pressione s para salvar a configuração, Enter para confirmar e depois q para sair do
menuconfig
.
Configurar certificados de teste
Siga as etapas em Criar certificados de teste de dispositivo Matter para criar certificados de CD, DAC e PAI.
Crie seu dispositivo
$ west build -b nrf52840dk_nrf52840
Atualizar o dispositivo
Isso é feito no computador host, não no contêiner do Docker.
Se você ainda não tem as ferramentas de linha de comando nRFConnect, faça o download e instalá-los.
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Abra uma conexão de terminal para seu dispositivo no host ou no
contêiner do Docker. 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 de imagem OTA
Depois de atualizar o dispositivo, altere as configurações de compilação mais uma vez para criar uma imagem OTA com uma versão incrementada do software do dispositivo.
Inicie o Zephyr menuconfig
:
$ west build -b nrf52840dk_nrf52840 -t menuconfig
Nas opções do menu interativo:
Modules -->
connectedhomeip -->
Connected Home over IP protocol stack -->
Altere
Device Software Version
para2
.Altere
Device Software Version String
paraprerelease-2
.Pressione s para salvar a configuração, Enter para confirmar e depois q para sair do
menuconfig
.
Crie o novo arquivo de pacote OTA Matter. 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_file
Confirmar as propriedades do pacote OTA Matter gerado arquivo:
/workspace/examples/lighting-app/nrfconnect# /workspace/src/app/ota_image_tool.py show firmware-ota-update-test.bin
Magic: 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 do Matter é montado a partir do seu host de contêiner, a imagem OTA também fica disponível no host de contêiner. Faça upload da imagem OTA no a Google Home Developer Console seguindo o upload OTA instruções.
Coloque o dispositivo e observe o processo de OTA.
Abra uma conexão de terminal com o dispositivo no host ou no
contêiner do Docker. Use seu terminal favorito, como minicom
ou GNU screen
:
$ minicom -c on -D /dev/ttyACM0 115200
Pressione o botão de redefinição do dispositivo para ver os registros da inicialização.
Na saída do dispositivo, você verá o VID e o PID definidos, assim 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 suas atividades após a ativação.
O seguinte texto 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 deve corresponder à da imagem enviada Developer Console:
Validar a atualização do software OTA
A versão do software do dispositivo pode ser verificada usando o app Google Home (GHA). Depois que um dispositivo for comissionado, siga estes procedimentos:
- Toque e mantenha pressionado o bloco do dispositivo na tela principal do GHA
- Toque no ícone no canto superior direito.
- Toque em Informações técnicas.
- Verifique o campo Versão do software