В следующих инструкциях используется пример приложения для управления освещением из Matter SDK, а также плата разработки Nordic nRF52840.
Настройка среды
Данные инструкции основаны на установке инструментария nRF Connect с использованием Docker. Если вы предпочитаете не использовать Docker, инструкции по установке nRF Connect непосредственно на хост-компьютер можно найти на сайте Nordic .
Ознакомьтесь с 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
Проверьте, какой образ Docker следует использовать. Используйте один из образов, созданных для непрерывной интеграции Matter SDK.
user@host> cat .github/workflows/examples-nrfconnect.yaml | grep chip-build
image: connectedhomeip/chip-build-nrf-platform:0.5.99
Подключите плату Nordic к компьютеру. Проверьте наличие USB-устройств на её последовательном интерфейсе:
В macOS:
user@host> ls /dev/tty.usbmodem*
/dev/tty.usbmodem0123456789000
В Linux либо:
user@host> ls /dev/tty*AC*
/dev/ttyACM0
или
user@host> ls /dev/tty*USB*
/dev/ttyUSB0
Запустите контейнер, используя информацию, полученную в предыдущей команде. Передайте флаги для монтирования папки Matter SDK и USB-последовательного интерфейса в контейнер.
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
Остановите и запустите контейнер Docker Matter.
При каждом запуске команды docker run вы создаёте новый контейнер с указанным образом. При этом ваши старые данные, сохранённые в предыдущем экземпляре контейнера, теряются. Иногда это именно то, что вам нужно, поскольку это позволяет начать с чистой установки. Но в этом примере вы, скорее всего, захотите сохранить свою работу и конфигурацию среды между сессиями.
user@host> docker stop container_name
Когда будете готовы снова запустить контейнер, запустите его и откройте окно терминала:
user@host> docker start container_name
user@host> docker exec -it container_name /bin/bash
Вы можете открыть дополнительные терминальные сессии для вашего контейнера с помощью команды:
user@host> docker exec -it container_name /bin/bash
Или запустите сеанс с правами root, используя:
user@host> docker exec -u 0 -it container_name /bin/bash
Инициализируйте SDK.
В контейнере инициализируйте Matter SDK и переменные среды для набора инструментов Nordic nRF52. Инициализация Matter SDK обычно занимает несколько минут.
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.shСборка и прошивка
Настройте VID и PID для устройства:
cd examples/lighting-app/nrfconnectwest build -b nrf52840dk_nrf52840 -t menuconfigВ интерактивном меню:
Modules --->connectedhomeip --->[*] Connected Home over IP protocol stack --->Введите
Device vendor ID(VID) иDevice product ID(PID) в десятичном формате целых чисел.Убедитесь, что установлен флаг
[*] Enable OTA requestor.Нажмите s для сохранения конфигурации, нажмите Enter для подтверждения, затем q для выхода из
menuconfig.
Настройка тестовых сертификатов
Для создания сертификатов CD, DAC и PAI выполните действия, описанные в разделе «Сертификаты для тестирования устройств Create Matter» .
Соберите своё устройство
west build -b nrf52840dk_nrf52840Прошейте ваше устройство
Это делается на главном компьютере, а не в контейнере Docker.
Если у вас еще нет инструментов командной строки nRFConnect, скачайте и установите их .
user@host> nrfjprog --program build/zephyr/merged.hex --chiperase -f NRF52
Откройте терминальное соединение с вашим устройством либо на хосте, либо в контейнере. Используйте свой любимый терминальный инструмент, например minicom или GNU screen .
user@host> minicom -c on -D /dev/ttyACM0 115200
user@host> screen /dev/ttyACM0 115200
Создать и загрузить образ OTA
После прошивки устройства снова измените параметры сборки, чтобы создать образ OTA с увеличенной версией программного обеспечения устройства.
Запустите Zephyr menuconfig :
west build -b nrf52840dk_nrf52840 -t menuconfigВ интерактивном меню:
Modules -->connectedhomeip -->Connected Home over IP protocol stack -->Измените
Device Software Versionна2.Измените
Device Software Version Stringнаprerelease-2.Нажмите s для сохранения конфигурации, нажмите Enter для подтверждения, затем q для выхода из
menuconfig.
Создайте новый файл пакета Matter OTA. Результат будет помещен в 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Подтвердите свойства сгенерированного файла пакета Matter OTA:
/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
Поскольку SDK Matter монтируется с хоста вашего контейнера, образ OTA также доступен на хосте вашего контейнера. Загрузите образ OTA в Google Home Developer Console , следуя инструкциям по загрузке OTA .
Введите устройство в эксплуатацию и понаблюдайте за процессом обновления по беспроводной сети (OTA).
Откройте терминальное соединение с устройством либо на хосте, либо в контейнере. Используйте свой любимый терминал, например minicom или GNU screen :
minicom -c on -D /dev/ttyACM0 115200Нажмите кнопку перезагрузки устройства, чтобы просмотреть журналы загрузки.
В выходных данных устройства вы должны увидеть установленные вами VID и PID, а также URL-адрес QR-кода для ввода в эксплуатацию:
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
Убедитесь, что ваш хаб подключен к сети, и настройте устройство с помощью Google Home app (GHA) используя QR-код по ссылке, указанной в журнале.
После ввода устройства в эксплуатацию оставьте его в режиме записи событий.
В журнале устройства должен отобразиться следующий текст:
/* 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
После применения образа устройство перезагружается. После перезагрузки время компиляции образа должно совпадать с временем компиляции образа, загруженного в Developer Console .
Проверьте работоспособность обновления программного обеспечения по беспроводной сети (OTA).
Версию программного обеспечения устройства можно проверить с помощью приложения Google Home (GHA). После ввода устройства в эксплуатацию выполните следующие действия:
- Нажмите и удерживайте значок устройства на главном экране GHA
- Нажмите на значок в правом верхнем углу.
- Нажмите «Техническая информация»
- Проверьте поле « Версия программного обеспечения» .
