Для удобства использования упрощенные версии некоторых признаков доступны для использования с Automation 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
|
LevelControlOnOff
|
Упрощенные признаки и Discovery API
Discovery API сообщает об упрощенных и стандартных типажах, если они зарегистрированы в FactoryRegistry. Например, если в доме есть устройство DimmableLight, а разработчик зарегистрировал в FactoryRegistry функции LevelControl и Brightness, Discovery API сообщит о наличии обеих функций. Разработчик может использовать в своей автоматизации любую из этих характеристик.
Подробнее о Discovery API на Android…
Получение устройства, поддерживающего упрощенный trait
При использовании Device API для получения устройств в структуре, которая поддерживает упрощенный типаж, например SimplifiedThermostat, вы не можете использовать метод has(trait). Вместо этого используйте метод has(deviceType):
val thermostat = home.devices().list().first { device -> device.has(ThermostatDevice) }