Создание наборов действия и триггеров

Набор действия (HMActionSet) и триггер (HMTimerTrigger) позвольте Вам управлять многими аксессуарами сразу. Например, набор действия мог бы выполнить ряд действий (HMAction) непосредственно перед тем, как пользователь ложится спать. Действие записи пишет значение в характеристику. Действия в наборе действия выполняются в неопределенном порядке. Триггер выполняет набор действия в данной дате и может повториться. Наборы действия имеют уникальные имена в доме и распознаны Siri.

../Art/actionsets_2x.png

Создание действий записи

Запишите, что действия пишут значения характеристик службы и добавляются к наборам действия. HMAction класс является абстрактным суперклассом для HMCharacteristicWriteAction конкретный подкласс. Действие имеет связанный характерный объект, таким образом, Вы получаете доступ к объекту службы и его характеристикам, как описано в Accessing Services и Характеристиках, для создания связанного HMCharacteristicWriteAction объект.

Для создания действия записи используйте initWithCharacteristic:targetValue: метод инициализации в HMCharacteristicWriteAction класс.

HMCharacteristicWriteAction *action = [[HMCharacteristicWriteAction alloc] initWithCharacteristic:characteristic targetValue:value];

В Вашем коде замените value параметр со значением Вы хотите записать, в зависимости от возможных значений для характеристики и замены characteristic с HMCharacteristic объект, представляющий характеристику, которую Вы хотите изменить.

Создание и выполнение наборов действия

Набор действия является набором действий, выполняющихся вместе; например, ночной набор действия мог бы включать действия, чтобы выключить световые сигналы, выключить температуру и двери блокировки.

Для создания набора действия используйте addActionSetWithName:completionHandler: асинхронный метод.

[self.home addActionSetWithName:@"NightTime" completionHandler:^(HMActionSet *actionSet, NSError *error) {
    if (error == nil) {
        // Successfully added an action set
    } else {
        // Unable to add an action set
    }
}];

Для добавления действия к набору действия используйте addAction:completionHandler: асинхронный метод.

[actionSet addAction:action completionHandler:^(NSError *error) {
    if (error == nil) {
        // Successfully added an action to an action set
    } else {
        // Unable to add an action to an action set
    }
}];

Для удаления действия используйте removeAction:completionHandler: метод.

Для выполнения набора действия используйте executeActionSet:completionHandler: метод в HMHome класс. Например, пользователь хочет управлять всей гирляндой. Вы создаете один набор действия для включения всей гирлянды и другого набора действия для того, чтобы выключить всю гирлянду. Для включения гирлянды отправьте executeActionSet:completionHandler: передайте к домашней передаче объектов “гирлянду на” установленном действии.

Создание и включение триггеров таймера

Триггеры выполняют один или несколько наборов действия. iOS управляет и выполняет триггеры для Вас в фоновом режиме. HMTrigger класс является абстрактным суперклассом для HMTimerTrigger конкретный подкласс. При создании триггера таймера Вы указываете дату огня и дополнительную информацию о повторении. Создание и включение триггера таймера являются многоступенчатым процессом.

Создать и включить триггер таймера

  1. Создайте триггер таймера.

    self.trigger = [[HMTimerTrigger alloc] initWithName:name
          fireDate:fireDate
          timeZone:nil
          recurrence:nil
          recurrenceCalendar:nil];

    Дата огня должна быть в будущем, и значение секунд должно быть нулем. При указании повторения минимальный интервал составляет пять минут, и максимальный интервал составляет пять недель. Указать повторение с помощью NSDateComponents и NSCalendar параметры, считайте Руководство по программированию Даты и времени.

  2. Добавьте, что действие устанавливает в триггер.

    Используйте HMTrigger метод суперкласса, addActionSet:completionHandler:, добавить набор действия к триггеру.

  3. Добавьте триггер к дому.

    Используйте addTrigger:completionHandler: метод в HMHome класс для добавления триггера к дому.

  4. Включите триггер.

    Недавно создаваемые триггерные объекты отключены по умолчанию. Используйте enable:completionHandler: метод для включения триггера.

Включенный триггер таймера выполнит свои наборы действия в следующей дате огня.