Les instructions suivantes utilisent la application éclairage exemple tiré du SDK Matter avec un fichier Nordic nRF52840 de votre site Web.
Configuration de l'environnement
Ces instructions se basent sur une installation Docker du composant nRF Connect ou une chaîne d'outils. Si vous préférez ne pas utiliser Docker, consultez les instructions d'installation de nRF Se connecter en mode natif sur un ordinateur hôte sur le site nordique.
Découvrez le SDK 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
Vérifiez l'image Docker à utiliser. Utilisez l'une des images créées pour l'intégration continue du SDK Matter.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
Connectez la carte nordique à l'ordinateur. Vérifiez l'énumération USB de son interface série:
Sous macOS:
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
Sous Linux:
user@host> ls /dev/tty*AC*
/dev/ttyACM0
ou
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
Exécutez un conteneur à l'aide des informations collectées lors de la commande précédente. Réussite Les options permettant d'installer le dossier du SDK hôte Matter et la clé USB interface série dans le conteneur.
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
Arrêter et démarrer le conteneur Docker Matter
Chaque fois que vous exécutez une commande docker run
, vous allez créer un conteneur avec
l'image spécifiée. Vos anciennes données, enregistrées sur un
l'instance de conteneur précédente est perdue. Parfois, c’est ce
que vous voulez
se produire, car cela vous permet
de commencer par une nouvelle installation. Mais dans ce
exemple, vous voudrez probablement enregistrer la configuration
de votre travail et de votre environnement
entre les sessions.
user@host> docker stop container_name
Lorsque vous êtes prêt à exécuter à nouveau le projet, démarrez le conteneur et ouvrez un terminal. fenêtre:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Vous pouvez ouvrir des sessions de terminal supplémentaires dans votre conteneur avec:
user@host> docker exec -it container_name /bin/bash
Vous pouvez également démarrer une session racine à l'aide de la commande suivante:
user@host> docker exec -u 0 -it container_name /bin/bash
Initialiser le SDK
Dans le conteneur, initialisez le SDK Matter et le pour la chaîne d'outils nordique nRF52. La L'initialisation du SDK Matter prend souvent plusieurs minutes.
$ 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 et Flash
Configurez le VID et le PID de l'appareil:
$ cd examples/lighting-app/nrfconnect
$ west build -b nrf52840dk_nrf52840 -t menuconfig
Dans les options du menu interactif:
Modules --->
connectedhomeip --->
[*] Connected Home over IP protocol stack --->
Saisissez
Device vendor ID
(VID) etDevice product ID
(PID) en base 10 entier.Assurez-vous que l'option
[*] Enable OTA requestor
est sélectionnée.Appuyez sur s pour enregistrer la configuration, sur Entrée pour confirmer, puis sur q pour quitter
menuconfig
.
Configurer des certificats de test
Suivez la procédure décrite dans Créer des certificats de test pour les appareils Matter. pour créer des certificats CD, DAC et PAI.
Créer votre appareil
$ west build -b nrf52840dk_nrf52840
Flasher votre appareil
Cette opération s'effectue sur l'ordinateur hôte, et non dans le conteneur Docker.
Si vous ne disposez pas encore des outils de ligne de commande nRFConnect, téléchargez et les installer.
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Ouvrez une connexion de terminal à votre appareil soit sur l'hôte, soit sur le
conteneur. Utilisez votre outil de terminal préféré, tel que minicom
ou GNU screen
.
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
Créer et importer une image OTA
Une fois que vous avez flashé votre appareil, modifiez une nouvelle fois les paramètres de build pour créer une image OTA avec une version du logiciel de l'appareil incrémentée.
Lancez Zephyr menuconfig
:
$ west build -b nrf52840dk_nrf52840 -t menuconfig
Dans les options du menu interactif:
Modules -->
connectedhomeip -->
Connected Home over IP protocol stack -->
Remplacez
Device Software Version
par2
.Remplacez
Device Software Version String
parprerelease-2
.Appuyez sur s pour enregistrer la configuration, sur Entrée pour confirmer, puis sur q pour quitter
menuconfig
.
Créez le fichier de bundle OTA Matter. La sortie est placée
dans 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
Confirmez les propriétés du bundle OTA Matter généré :
/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
Comme le SDK Matter est installé à partir de l'hôte de votre conteneur, l'image OTA est également disponible sur votre hôte de conteneur. Importez l'image OTA dans le Google Home Developer Console en suivant la mise en ligne OTA ; instructions.
Mettez l'appareil en service et observez le processus OTA.
Ouvrez une connexion de terminal à l'appareil soit sur l'hôte, soit sur le
conteneur. Utilisez votre terminal préféré, tel que minicom
ou GNU screen
:
$ minicom -c on -D /dev/ttyACM0 115200
Appuyez sur le bouton de réinitialisation de l'appareil pour afficher les journaux du démarrage.
Dans la sortie de l'appareil, vous devriez voir le VID et le PID que vous avez définis, ainsi que URL du code QR de mise en service:
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
Assurez-vous que votre Nest Hub est en ligne, et mettez l'appareil en service avec le Google Home app (GHA) à l'aide du code QR à partir du lien fourni dans le journal.
Après la mise en service, laissez l'appareil enregistrer ses activités.
Le texte suivant devrait s'afficher dans le journal de l'appareil:
/* 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
Une fois l'image appliquée, l'appareil redémarre. Après le redémarrage, le temps de compilation doit correspondre à celle importée Developer Console
Valider la mise à jour logicielle OTA
Vous pouvez vérifier la version logicielle de l'appareil dans l'application Google Home. Une fois l'appareil mis en service, suivez les procédures ci-dessous:
- Appuyer de manière prolongée sur la tuile de l'appareil sur l'écran principal de GHA
- Appuyez sur l'icône en haut à droite.
- Appuyez sur Informations techniques.
- Vérifiez le champ Version logicielle.