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

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

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

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

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

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

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

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

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

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

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

  1. Используя 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 , Device API и Discovery API.

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