Matter-шлюз на Rust: как показать устройства в Apple Home

Прототип на rs-matter: конечные точки, таблица устройств, команды, отчёты о состоянии и сохранение данных.

В прошлой статье мы подключили прототип шлюза к Apple Home с помощью компьютера и телефона. Теперь разберём сторону Matter на Rust и библиотеке rs-matter. Совместимость настоящей Bluetooth Mesh, работу на плате Linux и большую сеть ещё предстоит проверить.

Шлюз и его устройства

Шлюз представлен узлом Matter: конечная точка 0 отвечает за базовые функции, точка 1 служит агрегатором, а каждая лампа получает отдельную точку. Типы устройств и кластеры Descriptor, On/Off, Bridged Device Basic Information и Groups описывают возможности прототипа.

Таблица соответствий

Таблица хранит номер конечной точки, адрес устройства, имя, состояние выключателя и доступность. Когда Apple Home отправляет команду точке 2, шлюз находит нужный адрес и передаёт команду дальше. Для настоящего продукта потребуются также данные ввода в сеть, защита и восстановление.

Команды и состояние

После команды прототип сначала оптимистично меняет локальное состояние и отправляет управление устройству. При получении отчёта он уточняет состояние по ответу. Если ответа нет, интерфейс может временно ошибаться: тайм-ауты, повторные попытки, опрос и определение отключения ещё нужно реализовать и проверить.

Обратный путь тоже важен: нажатие физического выключателя меняет устройство без Apple Home. Шлюз сопоставляет адрес с точкой, обновляет состояние и уведомляет подписчиков Matter. В телефонной демонстрации одинаковые повторные объявления отбрасываются, чтобы старое значение не возвращалось. Открытое BLE-вещание телефона служит только демонстрацией и не проверяет настоящую Mesh-сеть.

Добавление устройств и перезапуск

Прототип позволяет добавлять и удалять устройства без остановки. Номера точек растут и не переиспользуются сразу после удаления, чтобы снизить риск путаницы у контроллера. Долговременное распределение и восстановление ещё требуют проработки.

Соответствие точки, адреса и имени сохраняется в локальном файле; rs-matter хранит собственные данные отдельно. Файл сначала записывается во временный, затем заменяется. Это уменьшает риск повреждения, но не гарантирует сохранность при любом отключении питания. Реальное состояние надо подтверждать повторно, а ключам Mesh необходимы безопасное хранение и резервирование.

Что проверено

В демонстрации проверены сопряжение с Apple Home, отображение и управление симулированными устройствами, их отчёты, а также базовое добавление, удаление и перезапуск. Настоящая Mesh-сеть, плата Linux, обработка сбоев и сотни устройств не проверены. Тестовые сертификаты не означают сертификацию продукта.

В release-профиле включены оптимизация размера, LTO и удаление символов. Одна прошлая сборка для компьютера занимала около 2,3 МБ; для другой платформы нужно измерение. Следующий шаг — заменить симуляцию реальным оборудованием.

Связаться

Чтение и отправка через WeChat

QR-код статьи

Отсканируйте и поделитесь через меню WeChat.