Проектирование автоматизации на 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. В противном случае, определите параметры автоматизации:
    1. Запустите автоматизацию в 8:00 утра.
    2. Для каждой из жалюзи вызовите команду upOrOpen из свойства WindowCovering .

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

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

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

Последовательность выполнения:

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

Универсальная автоматизация

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

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

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

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

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

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

Таблица 1: API для домашней страницы и информация, которую они могут предоставлять.
API Информация
Структура API
  • Какие конструкции доступны?
  • Какие помещения находятся в здании?
API устройства
  • Какие устройства входят в состав выбранной конструкции?
  • Где расположены эти устройства (в какой комнате)
API обнаружения
  • Какие функции поддерживаются этими устройствами?
  • Какие начальные действия и команды доступны для этих характеристик?
  • Какие ограничения существуют на параметры этих команд?