Создайте виртуальное устройство Matter

1. Введение

Matter — это протокол подключения, который открывает потрясающие возможности для разработки интеллектуальных устройств. В этой лаборатории вы создадите свое первое устройство Matter, используя ресурсы Matter SDK.

Чтобы узнать о Matter, посетите Центр разработчиков Google Home или веб-сайт Connectivity Standards Alliance .

Что вы узнаете

  • Как настроить среду сборки Matter
  • Как создать виртуальное устройство Matter, работающее на вашем компьютере
  • Как настроить и управлять виртуальным устройством Matter с помощью Google Home

Что вам понадобится

  • Хаб — это любое устройство Google Nest, поддерживающее Matter , например Nest Hub (2-го поколения).
  • Машина Linux с оконной системой X11.
  • Докер.
  • Гит.
  • Базовые знания Linux.
    • Обратите внимание, что предполагаемая оболочка для всех команд в этой лаборатории — BASH.

2. Настройте свою среду

Проверьте свое оборудование

Компьютеры Windows и macOS не поддерживаются этой установкой Docker. Вы можете вручную установить и собрать Matter на macOS.

Кроме того, в этих инструкциях предполагается, что на вашем компьютере с Linux установлена ​​оконная система X11. Если на вашем компьютере с Linux работает Wayland, убедитесь, что X.Org также установлен.

Настройка среды разработки

  1. Установите Docker Engine (не используйте Docker Desktop).
  2. Клонируйте Matter SDK. Обратите внимание на коммит, который мы используем ниже.
    git clone https://github.com/project-chip/connectedhomeip.git
    cd connectedhomeip
    git show
    commit f2f3d0eb03ba5bea32b22f19982c402a8c1c9063
    
  3. Запустите контейнер сборки, используя общедоступные образы CI SDK, и запустите вновь созданное виртуальное устройство из этого контейнера. Найдите изображение, которое будет соответствовать нашей версии SDK, следующим образом:
    buildimage=$(grep chip-build .github/workflows/chef.yaml | head -n 1 | awk '{print $2}')
    echo $buildimage
    
    Если вы используете тот же коммит, вы должны увидеть ghcr.io/project-chip/chip-build:66 Сначала перенаправьте порты xhost, чтобы мы могли позже использовать приложения пользовательского интерфейса:
    xhost local:1000
    
    Затем запустите контейнер с соответствующими ресурсами, перенаправленными с хоста (наш SDK для проверки, сети и ресурсов отображения/связи).
    docker run -it --ipc=host --net=host -e DISPLAY --name matter-container --mount source=$(pwd),target=/workspace,type=bind   --workdir="/workspace" $buildimage /bin/bash
    

Давайте разберемся с командой docker и параметрами, которые мы ей передали:

  • xhost local:1000 позволяет системе X Window получать соединения от локального хоста через порт 1000, что позволяет использовать графический интерфейс пользователя.
  • docker run … image запускает заданный образ, при необходимости извлекая его из реестра Docker.
  • --ipc=host позволяет Docker использовать пространство имен межпроцессного взаимодействия с вашим хост-компьютером.
  • --net=host позволяет Docker использовать сетевой стек хоста внутри контейнера, что необходимо для передачи трафика mDNS от хоста к контейнеру, а также для совместного использования дисплея X11 хоста.
  • -e DISPLAY экспортирует $DISPLAY на хост, предоставляя доступ к графическому интерфейсу вашей системы. Это необходимо для запуска инструмента ZAP при редактировании кластеров Материи.
  • -it запускает Docker с интерактивным терминалом (tty), а не в фоновом режиме.
  • --mount монтирует ранее извлеченный нами SDK в контейнер.
  • --workdir устанавливает рабочий каталог при запуске в наш смонтированный каталог SDK.

При желании вы можете запустить второй экземпляр сеанса терминала:

user@host> docker exec -it matter-container /bin/bash
$

Остановите и запустите контейнер Matter Docker.

Всякий раз, когда вы запускаете команду docker run , вы создаете новый контейнер с указанным образом. Когда вы это сделаете, ваши старые данные, сохраненные в предыдущем экземпляре контейнера, будут потеряны. Иногда это то, что вам нужно, потому что это позволяет вам начать новую установку. Но бывают случаи, когда вы предпочитаете сохранять конфигурацию своей работы и среды между сеансами.

По этой причине после создания контейнера вы можете остановить его, чтобы не потерять свою работу.

user@host> docker stop matter-container

Когда вы будете готовы к повторному запуску, запустите контейнер и откройте окно терминала:

user@host> docker start matter-container
user@host> docker exec -it matter-container /bin/bash

Вы можете открыть дополнительные сеансы терминала для вашего контейнера с помощью:

user@host> docker exec -it matter-container /bin/bash

Или запустите корневой сеанс, используя:

user@host> docker exec -u 0 -it matter-container /bin/bash

Начальная настройка Материи

Инициализируйте SDK

Инициализируйте Matter SDK. Выполнение этой операции займет несколько минут.

source scripts/bootstrap.sh
python3 scripts/checkout_submodules.py --shallow --platform linux

Ваш Matter SDK теперь инициализирован. Чтобы быстро повторно инициализировать среду в будущем, запустите:

sudo docker exec -it  matter-container /bin/bash
source ./scripts/activate.sh

Обмен файлами между хостом и контейнером

Ранее мы получали доступ к файлам на вашем хост-компьютере из контейнера с помощью привязки. Вы также можете записывать файлы в смонтированный каталог изнутри контейнера для доступа к ним с хоста.

В общем, используйте привязку, запустив контейнер с дополнительным аргументом --mount source=$(pwd),target=/workspace,type=bind чтобы смонтировать текущий рабочий каталог в контейнер в /workspace .

user@host> docker run -it --ipc=host --net=host -e DISPLAY --name matter-container --mount source=$(pwd),target=/workspace,type=bind us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest

Разрешения пользователя контейнера для подключенного каталога должны управляться на хосте.

Получите идентификатор группы пользователей контейнера внутри контейнера.

$ id
uid=1000(matter) gid=1000(matter) groups=1000(matter)

Откройте еще один сеанс терминала на узле контейнера и установите в качестве рабочего каталога каталог, смонтированный контейнером.

Рекурсивно установите группу для файлов в смонтированном каталоге в группу пользователя контейнера.

user@host> sudo chgrp -R 1000 .

Предоставьте группе нужные разрешения в каталоге. В этом примере группе пользователей контейнера предоставляются права на чтение, запись и выполнение для всех файлов в смонтированном каталоге.

user@host> sudo chmod -R g+rwx .

Обратите внимание, что эти команды не влияют на разрешения новых файлов, создаваемых пользователем хоста. Не забудьте при необходимости обновить разрешения для новых файлов, созданных на хосте.

Вы можете добавить пользователя хоста в группу пользователей контейнера, чтобы наследовать разрешения для файлов, созданных пользователем контейнера.

user@host> currentuser=$(whoami)
user@host> sudo usermod -a -G 1000 $currentuser

3. Консоль разработчика Google Home

Консоль разработчика Google Home — это веб-приложение, с помощью которого вы управляете интеграцией Matter с Google Home.

Любое устройство Matter, прошедшее сертификацию Connectivity Standards Alliance (Alliance) Matter, работает в экосистеме Google Home. Несертифицированные разрабатываемые устройства могут быть введены в эксплуатацию в экосистеме Google Home при определенных условиях — дополнительную информацию см. в разделе «Ограничения на сопряжение» .

Создать проект разработчика

Начните с перехода в консоль разработчика Google Home:

  1. Нажмите Создать проект .
  2. Введите уникальное имя проекта и нажмите « Создать проект» .Диалог создания нового проекта
  3. Нажмите + Добавить интеграцию , чтобы перейти на экран ресурсов Matter , где вы сможете просмотреть документацию по разработке Matter и прочитать о некоторых инструментах.
  4. Когда вы будете готовы продолжить, нажмите «Далее: разработка» , после чего отобразится страница контрольного списка вопросов .
  5. Нажмите Далее: Настройка.
  6. На странице настройки введите название продукта .
  7. Нажмите «Выбрать тип устройства» и выберите тип устройства в раскрывающемся меню (в данном случае « Light »).
  8. В поле «Идентификатор поставщика (VID)» выберите «Тестовый VID» и выберите 0xFFF1 в раскрывающемся меню «Тестовый VID». В поле «Идентификатор продукта (PID)» введите 0x8000 и нажмите «Сохранить и продолжить» , а затем нажмите «Сохранить» на следующей странице. Используйте эти точные значения VID/PID, от них зависят последующие шаги кодовой лаборатории.
    Настройка проекта
  9. Теперь вы увидите свою интеграцию в разделе «Интеграции Материи» .
  10. Перезагрузите хаб, чтобы убедиться, что он получил самую последнюю конфигурацию проекта интеграции Matter. Если позже вам придется изменить VID или PID, вам также потребуется перезагрузить компьютер после сохранения проекта, чтобы изменения вступили в силу. Пошаговые инструкции по перезагрузке см. в разделе Перезапуск устройств Google Nest или Google Wifi .

4. Создайте устройство

Все примеры в Matter находятся в папке examples в репозитории Github . Доступно несколько примеров, но в этой лаборатории мы сосредоточимся на Chef .

Шеф -повар одновременно:

  • Пример приложения, предоставляющего интерфейс терминала, функции оболочки также можно найти в приложении examples/shell .
  • Сценарий, который использует принцип соглашения над конфигурацией для инкапсуляции нескольких общих задач, необходимых для разработки устройства с поддержкой Matter.

Перейдите в папку с примерами Chef и создайте свою первую сборку Matter:

$ cd examples/chef
$ ./chef.py -zbr -d rootnode_dimmablelight_bCwGYSDpoe -t linux

У Chef есть несколько опций, которые можно просмотреть, запустив chef.py -h . Здесь мы используем следующие варианты:

  • -d : определяет тип используемого устройства. В данном случае мы создаем приложение освещения с элементами управления включением/выключением и уровнем.
  • -z : вызывает инструмент ZAP для создания исходных файлов, реализующих тип устройства. То есть на основе выбранного вами освещения ZAP автоматически создаст код для включения в сборку, который определяет источник света (модель данных) и то, как он взаимодействует с другими устройствами (модель взаимодействия).
  • -b : строит.
  • -r : [необязательно] включает сервер RPC на виртуальном устройстве Matter, чтобы другие компоненты (например, графический интерфейс) могли взаимодействовать с устройством для установки и получения атрибутов модели данных.
  • -t linux : целевая платформа. Платформы поддержки: linux , nrfconnect и esp32 . Вы можете запустить ./chef.py -h чтобы просмотреть все доступные команды и поддерживаемые целевые платформы. linux используется для виртуальных устройств Matter.

Запустите устройство

Matter использует TCP/UDP-порт 5540 , поэтому, если на вашем компьютере работает брандмауэр, либо выключите его, либо разрешите входящие TCP/UDP-соединения на порту 5540.

Запустите виртуальное устройство в контейнере с помощью:

$ ./linux/out/rootnode_dimmablelight_bCwGYSDpoe
   [1648589956496] [14264:16538181] CHIP: [DL] _Init]
...
[1648562026.946882][433632:433632] CHIP:SVR: SetupQRCode: [MT:Y3.13Y2N00KA0648G00]
[1648562026.946893][433632:433632] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
[1648562026.946901][433632:433632] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3AY3.13Y2N00KA0648G00
[1648562026.946915][433632:433632] CHIP:SVR: Manual pairing code: [34970112332]

Оставьте устройство включенным. Теперь мы обратим наше внимание на приложение Google Home, чтобы мы могли подключить ваше устройство к Google Home.

Остановите устройство

Если вам нужно остановить устройство, вы можете выйти из программы, нажав CTRL+C. Если приложение не закрывается, возможно, вам также придется использовать CTRL+\.

Учетные данные вашего виртуального устройства хранятся в каталоге /tmp/ в файлах, начинающихся с префикса chip .

Если вы хотите повторить весь процесс ввода в эксплуатацию с самого начала, вам придется удалить эти файлы, выполнив следующую команду:

$ rm /tmp/chip*

5. Введите устройство в эксплуатацию

Примечание . Этот шаг будет успешным только в том случае, если вы уже настроили свой проект в консоли разработчика Google Home.

Гнездо Хаб

Для ввода вашего устройства в эксплуатацию на фабрике Matter требуется концентратор. Это устройство Google Nest, такое как Nest Hub (2-го поколения), которое поддерживает Matter и которое будет служить как пограничным маршрутизатором для устройств с поддержкой потоков, так и локальным путем выполнения для маршрутизации намерений умного дома.

Обратитесь к этому списку , чтобы узнать, какие концентраторы поддерживают Matter.

Перед началом процесса ввода в эксплуатацию убедитесь, что:

  • Ваш хаб связан с той же учетной записью Google, которую вы использовали для входа в консоль Google Home.
  • Ваш концентратор находится в той же сети Wi-Fi, что и компьютер, который вы используете для запуска устройства Virtual Matter.
  • Ваш хаб имеет ту же структуру, которую вы используете в своем приложении Google Home. («Дом» в Google Home Graph представляет вашу структуру).

Получить QR-код

Для процесса ввода в эксплуатацию требуется вводная информация Matter, предоставляемая через QR-код. Изучите вывод консоли приложения Matter, который будет содержать ссылку на QR-код, соответствующий вводу в эксплуатацию.

Провести комиссионную операцию

  1. Откройте приложение Google Home.
  2. Нажмите + в левом верхнем углу.
  3. Нажмите «Настроить устройство» .
  4. Нажмите «Новое устройство» .
  5. Выберите свой дом и нажмите «Далее» .
  6. Приложение Google Home выполняет поиск вашего устройства. При появлении сообщения «Обнаружено важное устройство...» нажмите «Да». В противном случае коснитесь « Настроить другое устройство» и выберите «Материальное устройство» из списка устройств.
  7. Наведите камеру на QR-код вашего устройства или QR-код, созданный на веб-сайте.
  8. Продолжайте процесс сопряжения, как указано в последовательности действий приложения Google Home.

После выполнения этих шагов виртуальное устройство Matter должно быть успешно введено в эксплуатацию и появиться в виде нового значка в вашем приложении Google Home.

Парная лампочка в приложении Google Home

Поиск неисправностей

При вводе в эксплуатацию возникает ошибка «Проблема с подключением» или «Не удалось связаться с Google».

  • Убедитесь, что вы создали проект с правильной комбинацией VID/PID в домашней консоли Google и у вас нет других проектов, использующих ту же комбинацию VID/PID.

Не удается выполнить ввод в эксплуатацию после длительного сканирования устройства.

6. Управление устройством

Как только ваше устройство с поддержкой Matter будет успешно введено в эксплуатацию и появится в приложении Google Home в виде лампочки, вы можете проверить управление устройством различными способами:

  • Использование Google Ассистента.
  • Использование приложения Google Home.

Google Ассистент

Используйте Google Assistant на своем телефоне или концентраторе, чтобы переключать состояние устройства с помощью голосовых команд, например «Окей, Google, включи мой свет».

Дополнительные примеры команд см. в разделе «Управление устройствами умного дома с помощью голосовых команд» статьи «Управление устройствами умного дома, добавленными в приложение Google Home» .

Приложение Google Home

Вы можете нажать метки «Включить» и «Выключить» рядом со значком лампочки, отображаемым в приложении Google Home.

Дополнительную информацию см. в разделе «Управление устройствами с помощью приложения Google Home» статьи «Управление устройствами умного дома, добавленными в приложение Google Home» .

7. Поздравляем!

Вы успешно создали свое первое устройство Материи. Потрясающий!

В этой лаборатории вы узнали, как:

  • Установите среду разработки Matter.
  • Создайте и запустите виртуальное устройство Matter.
  • Вводите в эксплуатацию и управляйте своим виртуальным устройством из Google Home.

Чтобы узнать больше о Материи, изучите эти ссылки:

,

1. Введение

Matter — это протокол подключения, который открывает потрясающие возможности для разработки интеллектуальных устройств. В этой лаборатории вы создадите свое первое устройство Matter, используя ресурсы Matter SDK.

Чтобы узнать о Matter, посетите Центр разработчиков Google Home или веб-сайт Connectivity Standards Alliance .

Что вы узнаете

  • Как настроить среду сборки Matter
  • Как создать виртуальное устройство Matter, работающее на вашем компьютере
  • Как настроить и управлять виртуальным устройством Matter с помощью Google Home

Что вам понадобится

  • Хаб — это любое устройство Google Nest, поддерживающее Matter , например Nest Hub (2-го поколения).
  • Машина Linux с оконной системой X11.
  • Докер.
  • Гит.
  • Базовые знания Linux.
    • Обратите внимание, что предполагаемая оболочка для всех команд в этой лаборатории — BASH.

2. Настройте свою среду

Проверьте свое оборудование

Компьютеры Windows и macOS не поддерживаются этой установкой Docker. Вы можете вручную установить и собрать Matter на macOS.

Кроме того, в этих инструкциях предполагается, что на вашем компьютере с Linux установлена ​​оконная система X11. Если на вашем компьютере с Linux работает Wayland, убедитесь, что X.Org также установлен.

Настройка среды разработки

  1. Установите Docker Engine (не используйте Docker Desktop).
  2. Клонируйте Matter SDK. Обратите внимание на коммит, который мы используем ниже.
    git clone https://github.com/project-chip/connectedhomeip.git
    cd connectedhomeip
    git show
    commit f2f3d0eb03ba5bea32b22f19982c402a8c1c9063
    
  3. Запустите контейнер сборки, используя общедоступные образы CI SDK, и запустите вновь созданное виртуальное устройство из этого контейнера. Найдите изображение, которое будет соответствовать нашей версии SDK, следующим образом:
    buildimage=$(grep chip-build .github/workflows/chef.yaml | head -n 1 | awk '{print $2}')
    echo $buildimage
    
    Если вы используете тот же коммит, вы должны увидеть ghcr.io/project-chip/chip-build:66 Сначала перенаправьте порты xhost, чтобы мы могли позже использовать приложения пользовательского интерфейса:
    xhost local:1000
    
    Затем запустите контейнер с соответствующими ресурсами, перенаправленными с хоста (наш SDK для проверки, сети и ресурсов дисплея/связи).
    docker run -it --ipc=host --net=host -e DISPLAY --name matter-container --mount source=$(pwd),target=/workspace,type=bind   --workdir="/workspace" $buildimage /bin/bash
    

Давайте разберемся с командой docker и параметрами, которые мы ей передали:

  • xhost local:1000 позволяет системе X Window получать соединения от локального хоста через порт 1000, что позволяет использовать графический интерфейс пользователя.
  • docker run … image запускает заданный образ, при необходимости извлекая его из реестра Docker.
  • --ipc=host позволяет Docker использовать пространство имен межпроцессного взаимодействия с вашим хост-компьютером.
  • --net=host позволяет Docker использовать сетевой стек хоста внутри контейнера, что необходимо для передачи трафика mDNS от хоста к контейнеру, а также для совместного использования дисплея X11 хоста.
  • -e DISPLAY экспортирует $DISPLAY на хост, предоставляя доступ к графическому интерфейсу вашей системы. Это необходимо для запуска инструмента ZAP при редактировании кластеров Материи.
  • -it запускает Docker с интерактивным терминалом (tty), а не в фоновом режиме.
  • --mount монтирует ранее извлеченный нами SDK в контейнер.
  • --workdir устанавливает рабочий каталог при запуске в наш смонтированный каталог SDK.

При желании вы можете запустить второй экземпляр сеанса терминала:

user@host> docker exec -it matter-container /bin/bash
$

Остановите и запустите контейнер Matter Docker.

Всякий раз, когда вы запускаете команду docker run , вы создаете новый контейнер с указанным образом. Когда вы это сделаете, ваши старые данные, сохраненные в предыдущем экземпляре контейнера, будут потеряны. Иногда это то, что вам нужно, потому что это позволяет вам начать новую установку. Но бывают случаи, когда вы предпочитаете сохранять конфигурацию своей работы и среды между сеансами.

По этой причине после создания контейнера вы можете остановить его, чтобы не потерять свою работу.

user@host> docker stop matter-container

Когда вы будете готовы к повторному запуску, запустите контейнер и откройте окно терминала:

user@host> docker start matter-container
user@host> docker exec -it matter-container /bin/bash

Вы можете открыть дополнительные сеансы терминала для вашего контейнера с помощью:

user@host> docker exec -it matter-container /bin/bash

Или запустите корневой сеанс, используя:

user@host> docker exec -u 0 -it matter-container /bin/bash

Начальная настройка Материи

Инициализируйте SDK

Инициализируйте Matter SDK. Выполнение этой операции займет несколько минут.

source scripts/bootstrap.sh
python3 scripts/checkout_submodules.py --shallow --platform linux

Ваш Matter SDK теперь инициализирован. Чтобы быстро повторно инициализировать среду в будущем, запустите:

sudo docker exec -it  matter-container /bin/bash
source ./scripts/activate.sh

Обмен файлами между хостом и контейнером

Ранее мы получали доступ к файлам на вашем хост-компьютере из контейнера с помощью привязки. Вы также можете записывать файлы в смонтированный каталог изнутри контейнера для доступа к ним с хоста.

В общем, используйте привязку, запустив контейнер с дополнительным аргументом --mount source=$(pwd),target=/workspace,type=bind чтобы смонтировать текущий рабочий каталог в контейнер /workspace .

user@host> docker run -it --ipc=host --net=host -e DISPLAY --name matter-container --mount source=$(pwd),target=/workspace,type=bind us-docker.pkg.dev/nest-matter/docker-repo/virtual-device-image:latest

Разрешения пользователя контейнера для подключенного каталога должны управляться на хосте.

Получите идентификатор группы пользователей контейнера внутри контейнера.

$ id
uid=1000(matter) gid=1000(matter) groups=1000(matter)

Откройте еще один сеанс терминала на узле контейнера и установите в качестве рабочего каталога каталог, смонтированный контейнером.

Рекурсивно установите группу для файлов в смонтированном каталоге в группу пользователя контейнера.

user@host> sudo chgrp -R 1000 .

Предоставьте группе нужные разрешения в каталоге. В этом примере группе пользователей контейнера предоставляются права на чтение, запись и выполнение для всех файлов в смонтированном каталоге.

user@host> sudo chmod -R g+rwx .

Обратите внимание, что эти команды не влияют на разрешения новых файлов, создаваемых пользователем хоста. Не забудьте при необходимости обновить разрешения для новых файлов, созданных на хосте.

Вы можете добавить пользователя хоста в группу пользователей контейнера, чтобы наследовать разрешения для файлов, созданных пользователем контейнера.

user@host> currentuser=$(whoami)
user@host> sudo usermod -a -G 1000 $currentuser

3. Консоль разработчика Google Home

Консоль разработчика Google Home — это веб-приложение, с помощью которого вы управляете интеграцией Matter с Google Home.

Любое устройство Matter, прошедшее сертификацию Connectivity Standards Alliance (Alliance) Matter, работает в экосистеме Google Home. Несертифицированные разрабатываемые устройства могут быть введены в эксплуатацию в экосистеме Google Home при определенных условиях — дополнительную информацию см. в разделе «Ограничения на сопряжение» .

Создать проект разработчика

Начните с перехода в консоль разработчика Google Home:

  1. Нажмите Создать проект .
  2. Введите уникальное имя проекта и нажмите « Создать проект» .Диалог создания нового проекта
  3. Нажмите + Добавить интеграцию , чтобы перейти на экран ресурсов Matter , где вы сможете просмотреть документацию по разработке Matter и прочитать о некоторых инструментах.
  4. Когда вы будете готовы продолжить, нажмите «Далее: разработка» , после чего отобразится страница контрольного списка вопросов .
  5. Нажмите Далее: Настройка.
  6. На странице настройки введите название продукта .
  7. Нажмите «Выбрать тип устройства» и выберите тип устройства в раскрывающемся меню (в данном случае « Light »).
  8. В поле «Идентификатор поставщика (VID)» выберите «Тестовый VID» и выберите 0xFFF1 в раскрывающемся меню «Тестовый VID». В поле «Идентификатор продукта (PID)» введите 0x8000 и нажмите «Сохранить и продолжить» , а затем нажмите «Сохранить» на следующей странице. Используйте эти точные значения VID/PID, от них зависят последующие шаги кодовой лаборатории.
    Настройка проекта
  9. Теперь вы увидите свою интеграцию в разделе «Интеграции Материи» .
  10. Перезагрузите хаб, чтобы убедиться, что он получил самую последнюю конфигурацию проекта интеграции Matter. Если позже вам придется изменить VID или PID, вам также потребуется перезагрузиться после сохранения проекта, чтобы изменения вступили в силу. Пошаговые инструкции по перезагрузке см. в разделе Перезапуск устройств Google Nest или Google Wifi .

4. Создайте устройство

Все примеры в Matter находятся в папке examples в репозитории Github . Доступно несколько примеров, но в этой лаборатории мы сосредоточимся на Chef .

Шеф -повар одновременно:

  • Пример приложения, предоставляющего интерфейс терминала, функции оболочки также можно найти в приложении examples/shell .
  • Сценарий, который использует принцип соглашения над конфигурацией для инкапсуляции нескольких общих задач, необходимых для разработки устройства с поддержкой Matter.

Перейдите в папку с примерами Chef и создайте свою первую сборку Matter:

$ cd examples/chef
$ ./chef.py -zbr -d rootnode_dimmablelight_bCwGYSDpoe -t linux

У Chef есть несколько опций, которые можно просмотреть, запустив chef.py -h . Здесь мы используем следующие варианты:

  • -d : определяет тип используемого устройства. В данном случае мы создаем приложение освещения с элементами управления включением/выключением и уровнем.
  • -z : вызывает инструмент ZAP для создания исходных файлов, реализующих тип устройства. То есть на основе выбранного вами освещения ZAP автоматически создаст код для включения в сборку, который определяет источник света (модель данных) и то, как он взаимодействует с другими устройствами (модель взаимодействия).
  • -b : строит.
  • -r : [необязательно] включает сервер RPC на виртуальном устройстве Matter, чтобы другие компоненты (например, графический интерфейс) могли взаимодействовать с устройством для установки и получения атрибутов модели данных.
  • -t linux : целевая платформа. Платформы поддержки: linux , nrfconnect и esp32 . Вы можете запустить ./chef.py -h чтобы просмотреть все доступные команды и поддерживаемые целевые платформы. linux используется для виртуальных устройств Matter.

Запустите устройство

Matter использует TCP/UDP-порт 5540 , поэтому, если на вашем компьютере работает брандмауэр, либо выключите его, либо разрешите входящие TCP/UDP-соединения на порту 5540.

Запустите виртуальное устройство в контейнере с помощью:

$ ./linux/out/rootnode_dimmablelight_bCwGYSDpoe
   [1648589956496] [14264:16538181] CHIP: [DL] _Init]
...
[1648562026.946882][433632:433632] CHIP:SVR: SetupQRCode: [MT:Y3.13Y2N00KA0648G00]
[1648562026.946893][433632:433632] CHIP:SVR: Copy/paste the below URL in a browser to see the QR Code:
[1648562026.946901][433632:433632] CHIP:SVR: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT%3AY3.13Y2N00KA0648G00
[1648562026.946915][433632:433632] CHIP:SVR: Manual pairing code: [34970112332]

Оставьте устройство включенным. Теперь мы обратим наше внимание на приложение Google Home, чтобы мы могли подключить ваше устройство к Google Home.

Остановите устройство

Если вам нужно остановить устройство, вы можете выйти из программы, нажав CTRL+C. Если приложение не закрывается, возможно, вам также придется использовать CTRL+\.

Учетные данные вашего виртуального устройства хранятся в каталоге /tmp/ в файлах, начинающихся с префикса chip .

Если вы хотите повторить весь процесс ввода в эксплуатацию с самого начала, вам придется удалить эти файлы, выполнив следующую команду:

$ rm /tmp/chip*

5. Введите устройство в эксплуатацию

Примечание . Этот шаг будет успешным только в том случае, если вы уже настроили свой проект в консоли разработчика Google Home.

Гнездо Хаб

Для ввода вашего устройства в эксплуатацию на фабрике Matter требуется концентратор. Это устройство Google Nest, такое как Nest Hub (2-го поколения), которое поддерживает Matter и которое будет служить как пограничным маршрутизатором для устройств с поддержкой потоков, так и локальным путем выполнения для маршрутизации намерений умного дома.

Обратитесь к этому списку , чтобы узнать, какие концентраторы поддерживают Matter.

Перед началом процесса ввода в эксплуатацию убедитесь, что:

  • Ваш хаб связан с той же учетной записью Google, которую вы использовали для входа в консоль Google Home.
  • Ваш концентратор находится в той же сети Wi-Fi, что и компьютер, который вы используете для запуска устройства Virtual Matter.
  • Ваш хаб имеет ту же структуру, которую вы используете в своем приложении Google Home. («Дом» в Google Home Graph представляет вашу структуру).

Получить QR-код

Для процесса ввода в эксплуатацию требуется информация о подключении Matter, предоставленная через QR-код. Изучите вывод консоли приложения Matter, который будет содержать ссылку на QR-код, соответствующий вводу в эксплуатацию.

Провести комиссионную операцию

  1. Откройте приложение Google Home.
  2. Нажмите + в левом верхнем углу.
  3. Нажмите «Настроить устройство» .
  4. Нажмите «Новое устройство» .
  5. Выберите свой дом и нажмите «Далее» .
  6. Приложение Google Home выполняет поиск вашего устройства. При появлении сообщения «Обнаружено важное устройство...» нажмите «Да». В противном случае коснитесь « Настроить другое устройство» и выберите «Материальное устройство» из списка устройств.
  7. Наведите камеру на QR-код вашего устройства или QR-код, созданный на веб-сайте.
  8. Продолжайте процесс сопряжения, как указано в последовательности действий приложения Google Home.

После выполнения этих шагов виртуальное устройство Matter должно быть успешно введено в эксплуатацию и появиться в виде нового значка в вашем приложении Google Home.

Парная лампочка в приложении Google Home

Поиск неисправностей

При вводе в эксплуатацию возникает ошибка «Проблема с подключением» или «Не удалось связаться с Google».

  • Убедитесь, что вы создали проект с правильной комбинацией VID/PID в домашней консоли Google и у вас нет других проектов, использующих ту же комбинацию VID/PID.

Не удается выполнить ввод в эксплуатацию после длительного сканирования устройства.

6. Управление устройством

Как только ваше устройство с поддержкой Matter будет успешно введено в эксплуатацию и появится в приложении Google Home в виде лампочки, вы можете проверить управление устройством различными способами:

  • Использование Google Ассистента.
  • Использование приложения Google Home.

Google Ассистент

Используйте Google Assistant на своем телефоне или концентраторе, чтобы переключать состояние устройства с помощью голосовых команд, например «Окей, Google, включи мой свет».

Дополнительные примеры команд см. в разделе «Управление устройствами умного дома с помощью голосовых команд» раздела «Управление устройствами умного дома, добавленными в приложение Google Home» .

Приложение Google Home

Вы можете нажать метки «Включить» и «Выключить» рядом со значком лампочки, отображаемым в приложении Google Home.

Дополнительную информацию см. в разделе «Управление устройствами с помощью приложения Google Home» статьи «Управление устройствами умного дома, добавленными в приложение Google Home» .

7. Поздравляем!

Вы успешно создали свое первое устройство Материи. Потрясающий!

В этой лаборатории вы узнали, как:

  • Установите среду разработки Matter.
  • Создайте и запустите виртуальное устройство Matter.
  • Вводите в эксплуатацию и управляйте своим виртуальным устройством из Google Home.

Чтобы узнать больше о Материи, изучите эти ссылки: