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

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

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

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

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

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

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

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

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

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

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

  1. Используя Discovery API, соберите список устройств 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 обнаружения
  • Какие характеристики поддерживаются устройствами
  • Какие стартеры и команды доступны для этих характеристик?
  • Какие ограничения существуют для параметров этих команд?