Как создать автоматизацию на устройстве Android

Прежде чем начать работу с Automation API, необходимо спроектировать автоматизации.

Определите следующие параметры для каждой автоматизации:

  • Обстоятельства, при которых пользователю должна быть предложена автоматизация. Например, если пользователь только что добавил в свой дом три новых светильника, он может быть заинтересован в определенной автоматизации, предназначенной для управления освещением.
  • Какие типы устройств нужны для автоматизации. Например, если пользователь только что добавил три новых светильника в свой дом, его может заинтересовать определенная автоматизация, предназначенная для управления освещением. Примеры типов устройств освещения: OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice и ExtendedColorLightDevice.
  • Какие атрибуты и команды требуются для автоматизации и поддерживаются ли они Automation API на Android.
  • Параметры, которые должны активировать автоматизацию в качестве условий. Подробнее о компонентах автоматизации на Android…
  • Дополнительные условия, которые определяют, должна ли автоматизация выполняться и какие действия должны быть выполнены.
  • Процесс выполнения автоматизации. Должен ли он выполняться последовательно или параллельно? Требуется ли вам несколько логических путей?

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

После того как вы спроектировали автоматизацию, используйте Automation DSL, чтобы создать ее. Созданная вами автоматизация – это, по сути, шаблон. Все дома и устройства в ней являются плейсхолдерами и заменяются на конкретные дома и устройства пользователей, когда они добавляют автоматизацию в свой аккаунт.

Ниже приведены различные виды автоматизации, которые приложение может создать с помощью API Home. Фрагменты кода для этих примеров можно найти на странице Как создать автоматизацию.

Простая автоматизация

Допустим, вам нужно написать приложение, которое создает автоматизацию, поднимающую жалюзи в 8:00. Для этого приложению нужен список жалюзи (устройств с типом WindowCoveringDevice), которые есть в доме и поддерживают автоматизации. Такой список можно получить с помощью Discovery API.

Для автоматизаций, которые должны запускаться в определенное время, также необходимо убедиться, что пользователь указал почтовый адрес для выбранного дома (при создании дома или в Google Home app (GHA)). В противном случае автоматизация не сможет определить часовой пояс, в котором она должна запускаться. Discovery API поможет вам определить, был ли адрес назначен дому.

В этом случае последовательность действий будет выглядеть примерно так:

  1. С помощью Discovery API соберите список устройств WindowCoveringDevice.
  2. Если почтовый адрес не указан, сообщите пользователю, что он должен его предоставить (например, в GHA), и остановите выполнение.
  3. В противном случае настройте автоматизацию:
    1. Запустить автоматизацию в 8:00.
    2. Для каждых жалюзи вызовите команду upOrOpen типажа WindowCovering.

Сложная автоматизация

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

Одна из первых задач при реализации этого приложения – выяснить, какие источники света доступны в доме пользователя, с помощью Discovery API. Теперь ваше приложение может показать пользователю доступные лампы и, возможно, позволить ему выбрать, какие из них должны мигать.

Процесс выполнения:

  1. С помощью Discovery API получите список осветительных приборов в доме. Это могут быть любые устройства с типом OnOffLightDevice, ColorTemperatureLightDevice, DimmableLightDevice или ExtendedColorLightDevice.
  2. Предоставьте пользователям возможность выбирать, какие индикаторы будут мигать, например с помощью специальной панели настроек.
  3. Настройте автоматизацию:
    1. Запускать автоматизацию, когда кто-то уходит или приходит, отслеживая AreaPresenceState.
    2. Если presenceState указывает, что в здании кто-то есть, выбранные светильники должны мигать.

Общая автоматизация

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

Сначала пользователю может быть предложено выбрать дом.

Затем автоматизация может показать все комнаты в доме в виде раскрывающегося списка, в котором при выборе комнаты отображаются устройства в ней. Если развернуть устройство, вы увидите поддерживаемые им условия и команды.

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

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

В целом для такой автоматизации потребуется собрать несколько наборов данных о доме пользователя с помощью Structure API для Android, Device API для Android и Discovery API.

Таблица 1. Home API и информация, которую они могут предоставлять
APIИнформация
Structure API
  • Какие структуры доступны
  • Какие комнаты есть в доме.
Device API
  • Какие устройства входят в выбранную структуру.
  • где находятся эти устройства (в какой комнате);
Discovery API
  • Какие функции поддерживаются устройствами.
  • какие условия и команды доступны для этих свойств.
  • Какие ограничения существуют для параметров этих команд.