Проектирование автоматизации на Android

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

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

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

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

После разработки автоматизации используйте язык DSL для ее создания. Созданная вами автоматизация по сути является «шаблоном» — любые структуры и устройства в ней являются заполнителями и заполняются структурами и устройствами, специфичными для каждого пользователя, когда он «принимает» автоматизацию для собственного использования.

Ниже представлены различные типы автоматизации, которые приложение может создать с помощью API Home. Примеры кода, относящиеся к этим примерам, можно найти на странице «Создание автоматизации» .

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

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

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

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

  1. Используя API Discovery, соберите список устройств WindowCoveringDevice .
  2. Если адрес улицы не указан, сообщите пользователю, что ему необходимо указать адрес улицы, и остановите выполнение программы.
  3. Othewrwise, define the automation:
    1. Start the automation at 8:00am.
    2. Для каждой из жалюзи вызовите команду upOrOpen из свойства WindowCovering .

Complex automation

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

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

The execution flow:

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

Generic automation

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

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

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

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

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

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

Таблица 1: API для домашней страницы и информация, которую они могут предоставлять.
API Информация
Структура API
  • What structures are available
  • What rooms are in the structure
API устройства
  • What devices are in the chosen structure
  • Where those devices are located (which room)
API обнаружения
  • What traits are supported by the devices
  • Какие начальные действия и команды доступны для этих характеристик?
  • Какие ограничения существуют на параметры этих команд?