Упрощенные черты на Android

Для удобства использования упрощенные версии некоторых признаков доступны для использования с API автоматизации на Android.

Упрощённый трейт заменяет стандартный трейт Home API, аналогично принципу работы шаблона «фасад» . Упрощённые трейты предоставляют команды, упрощающие выполнение распространённых задач для определённых типов устройств. Упрощённые трейты — это трейты Home API, и, как и другие трейты Home API, они работают как для устройств Matter , так и для устройств Cloud-to-cloud .

Упрощённый трейт предлагает альтернативный набор атрибутов и команд, более специфичный для конкретного устройства, чем соответствующий стандартный трейт. Например, стандартный трейт LevelControl — это общий трейт, который можно использовать для любого устройства с настройкой, изменяющейся в диапазоне числовых значений. Brightness — это упрощённый трейт, заменяющий LevelControl и предоставляющий только те команды и атрибуты, которые требуются устройству DimmableLight . У Brightness есть команда moveToBrightness , принимающая один аргумент brightnessPercent , тогда как LevelControl есть несколько команд move , большинство из которых имеют не менее четырёх параметров для более широкого спектра вариантов использования.

В следующей таблице представлены все упрощённые и базовые стандартные черты. Каждое название черты ссылается на соответствующую документацию API:

Таблица: Упрощенные признаки
Упрощенная черта Стандартная черта
SimplifiedThermostat Thermostat
Brightness LevelControl
SimplifiedOnOff OnOff
Volume LevelControl
OnOff

Упрощенные характеристики и API Discovery

Discovery API сообщает как об упрощённых, так и об их базовых стандартных характеристиках, если обе характеристики зарегистрированы в FactoryRegistry . Например, если в структуре присутствует устройство DimmableLight , а разработчик зарегистрировал обе характеристики LevelControl и Brightness в FactoryRegistry , Discovery API укажет наличие обеих характеристик. Разработчик может выбрать любую из них для автоматизации.

Дополнительную информацию см. в разделе Discovery API на Android .

Получить устройство, которое поддерживает упрощенную характеристику

При использовании API устройств для получения устройств в структуре, поддерживающей упрощённый трейт, такой как SimplifiedThermostat , метод has(trait) использовать нельзя. Вместо него следует использовать метод has(deviceType) :

val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }