company_banner

Как настроить управление умным домом через IFTTT и сэкономить


    Мне всегда казалось, что главное в «умном доме» — даже не возможности какого-то конкретного устройства, а способность этих устройств взаимодействовать между собой, реализуя сложные сценарии. Для этого уже не обязательно замыкаться на компонентах одного производителя, поскольку есть агрегаторы, вроде Google Home или навыков управления устройствами у Алисы. Однако некоторые сценарии им до сих пор не под силу. Сегодня поговорим о том, как это обойти с помощью IFTTT — универсального посредника между веб-сервисами. И спойлер: в конце упомяну, как обойти ограничения самого IFTTT.

    В двух словах о IFTTT


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

    IFTTT часто вспоминают в контексте автоматических репостов из одной социальной сети в другую. Его также легко применить для сбора полезной информации и задач. К примеру, работая в разных командах, в каждой из которых используется свой инструмент распределения задач, я агрегирую все, что назначается на меня в разных системах — Trello, Asana и по электронной почте — в личный Remember the milk (RTM).


    Некоторые интеграции со сторонними сервисами есть и у самого RTM, но доступны они только в платной версии. Так что IFTTT позволил обойти необходимость в платной подписке. А заодно помог настроить Telegram-бот для быстрого добавления задач из мессенджера.




    IFTTT живет не только в виртуальном мире. Если компоненты умного дома или любые другие IoT-устройства имеют доступ в облако (и производитель интегрировал свой веб-сервис с IFTTT), вы сможете управлять ими через апплеты IFTTT.

    Конечно, здесь есть масса оговорок. Сценарии могут быть только предельно простые — «если — то», никакой сложной логики. Сервис понимает кириллицу в названиях апплетов и текстовых полях при их настройке, но не все функции работают в России и с русским языком. К примеру, в США у пользователей есть возможность сделать сценарий, который по некому событию звонит на мобильный телефон. Эта функция за пределами Штатов недоступна. Также с IFTTT не интегрированы многие популярные российские ресурсы (начиная от ВКонтакте и заканчивая Алисой).

    Но сегодня речь пойдет не об этом, а о том, как IFTTT помогает работать с устройствами. Большая часть компонент умного дома, доступных на нашем рынке, производятся за пределами нашей страны и опираются на зарубежные веб-сервисы, и IFTTT среди них популярен.

    Управляем умными устройствами на примере Sonoff


    IFTTT интегрирован с самыми разными системами умного дома. В России продаются компоненты нескольких из них, но Sonoff (система eWeLink Smart Home) по субъективному впечатлению одни из самых популярных, в основном благодаря цене (на распродажах на AliExpress Wi-Fi реле можно купить за 300-400 рублей).

    Что за устройства Sonoff?



    Sonoff — бренд недорогих реле, розеток, датчиков и выключателей, управляемых по Wi-Fi. Компоненты системы можно как купить в РФ, так и заказать из Китая. Они хорошо известны на Хабре благодаря тому, что умельцы прошивают использованный в них Wi-Fi модуль ESP8266, чтобы устройства не пытались обращаться в облако на Amazon, а работали внутри локальной сети (заменяя облачный сервис собственным хабом умного дома). Но для работы с IFTTT такая перепрошивка как раз не нужна.

    «Из коробки» управление устройствами осуществляется со смартфона из приложения eWeLink (в теории есть и веб-интерфейс, но он в начальной стадии развития).

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

    Хотя набор команд пока еще ограничен, приложение уже позволяет реализовать различные интересные сценарии. К примеру, можно включать и выключать ночник в комнате в соответствии с расписанием рассветов и закатов на конкретный день (функция настраивается один раз, и каждый день время переключения ночника немного изменяется в соответствии с астрономическими данными).

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

    Подключаем eWeLink к IFTTT


    При настройке умного дома потребность в IFTTT появляется в тот момент, когда хочется реализовать сценарий, не поддерживаемый производителем (например, по группировке устройств), или объединить несколько функций от разных производителей в единое целое. К сожалению, в последней версии приложения eWeLink производитель решил заработать на тех, кому недостаточно простых сценариев, и открывает интеграцию с IFTTT только на платном тарифе — 9.99 долларов США с оплатой через PayPal в год. Это не такая большая сумма для эксперимента длиною в год.

    Почему именно эксперимента? Потому что реальное удобство тех или иных сценариев показывает только длительное ежедневное использование. В нашей квартире умные устройства живут и сменяют друг друга уже не один год. Когда появляется новый компонент, в голове уже вьется десяток сценариев, которые он позволит воплотить. И первое время задействуются все. Но спустя месяц 9 из 10 перестают использоваться. А тот один, что «выживает», претерпевает некоторые изменения — за это время проходит «тонкая настройка» идеи под себя: сколько времени должен продолжать гореть свет в прихожей после того, как нажали кнопку? Какой уровень яркости должен быть у ночного освещения в коридоре? Какие пороги для показаний датчиков надо установить для отправки уведомлений, чтобы они не напрягали и т.п.

    IFTTT позволяет реализовать массу сценариев и легко их перенастраивать. Для иллюстрации подхода предположим, что мы хотим автоматически отключать термопот, когда я ухожу из дома дальше, чем на соседнюю улицу. Это реализуется элементарно:


    Создаем новый апплет (Create). В качестве триггера (+This) выбираем сервис Location, который берет местоположение с устройства Android (или iPhone), где установлен клиент IFTTT (залогиненный под тем же аккаунтом, если вы настраиваете сценарий в веб-интерфейсе).



    Для сервиса доступно 3 триггера. Нам подойдет «You exit area».


    Задаем адрес центральной точки зоны и радиус вокруг этого адреса (радиус регулируется увеличением / уменьшением масштаба карты). IFTTT приятно удивил тем, что понимает ввод адреса кириллицей. К сожалению, радиус не может быть слишком большим — к примеру, нельзя обозначить зоной весь город-миллионник.


    Создаем таким образом триггер (кнопка Create trigger внизу экрана).


    Устанавливаем действие (+That) — отключение реле eWeLink. Для этого подключаем сервис eWeLink Smart Home. После нажатия на Connect надо будет залогиниться в аккаунте eWeLink в отдельном окне.





    Если авторизация пройдет успешно, появится целый список доступных действий для eWeLink Smart Home.


    Нажимаем «Turn 1-Channel Switch on or off» и на следующей странице из выпадающего списка выбираем нужное устройство, а также требуемое состояние (on или off). В моем случае для подключения термопота используется именно реле, а не розетка, но если ошибиться и выбрать «Turn 1-Channel Plug on or off», ничего не сломается.


    Создаем действие кнопкой Create action и завершаем настройку апплета.


    Более сложная задача — реализация бота в Telegram для «общения» с домом. Для этого надо подключить сервис Telegram. Создавая соответствующие апплеты, можно добавить боту команды управления устройствами (включением / выключением света и отдельных устройств), а заодно разные полезные уведомления, в частности:

    • Напоминания о сдаче показаний счетчиков или об оплате коммунальных платежей. Автоматическая подача показаний в старом фонде — недостижимая мечта. Добавить такое напоминание можно через Google Календарь, задав сценарий IFTTT, который на старте очередного мероприятия из этого календаря будет отсылать в чат сообщение с заданным текстом.
    • Уведомления о том, что в комнатах становится слишком жарко / холодно / сыро или сухо. У меня это было реализовано для ванной на время настройки пороговых значений для автоматики теплого пола. Идея была в том, чтобы использовать для управления теплым полом параметры воздуха в помещении (а датчик в самом полу оставить для аварийного отключения при перегреве). Параметры комфортного климата необходимо было выяснять экспериментально. Чтобы в ходе этих экспериментов не создавать некомфортных условий, на короткий период были настроены уведомления на минимальную температуру и максимальную влажность.
    • Уведомления о том, что что-то открылось или закрылось (по данным с датчиков).

    Давайте создадим апплет, который по команде из чата в Telegram включает ночную подсветку в коридоре (как и термопот, подключенную через реле Sonoff). Начнем с подключения сервиса Telegram. Найдем его через Explore (вкладка Services):



    Нажимаем Connect, чтобы подключить его к своему аккаунту. После приглашения переходим в Telegram и добавляем бота в контакты.



    Нажимаем Start, чтобы авторизоваться.


    После перехода на IFTTT для авторизации, нам доступны все возможности общения сервиса с мессенджером.


    Теперь возвращаемся в IFTTT и начинаем создавать апплет.


    В качестве триггера выбираем Telegram.


    Нам подойдет триггер «New message with key phrase to @IFTTT».


    Пусть ключевой фразой будет «ночной свет», а ответом на мое сообщение — одно слово «Включаю» (помним, что сервис чувствителен к строчным / заглавным буквам).


    Переходим к настройке действия.


    Как и в прошлом примере выбираем включение реле сервиса eWeLink Smart Home. На этот раз только в списке устройств нужно выбрать то, что соответствует подсветке.


    С уведомлениями все работает также, только триггером будет выступать какой-то другой сервис (например, датчик из eWeLink Smart Home), а действие будет выполнять Telegram — слать сообщение определенного содержания.

    Как упоминалось выше, в сегменте умного дома IFTTT не ограничивается поддержкой только устройств Sonoff — это лишь пример под рукой. Есть масса производителей, которые уже интегрировались с сервисом, и еще больше советов пользователей о том, как обойти отсутствие интеграции, например с Xiaomi Mi Home (спойлер — через уведомления на мобильном устройстве под Android).

    Когда и IFTTT не хватает


    Логика IFTTT довольно проста: одно условие — одно действие. На базе этой логики можно сделать интересные вещи, но рано или поздно этого становится мало. К сожалению, сервис не позволяет задавать цепочки действий (для каждого из них придется создавать собственный сценарий), также как не позволяет строить сложные условия, состоящие из нескольких частей с логическим «и» или «или».

    Но и это можно обойти при помощи «надстройки». Речь идет о сервисе apilio.com, задача которого добавить более сложную логику в IFTTT. Подключение дополнительного инструмента, конечно, будет еще одним уровнем усложнения системы, зато приблизит настройку сценариев умного дома к программированию — можно будет задавать переменные, менять по срабатыванию триггеров их значения, конструировать условия и т.п.

    Покажу, что может Apilio, на примере усложнения сценария с отключением термопота.
    Изначально реле термопота выключается на ночь (с 2 ночи до 8 утра) и когда я покидаю заданную в IFTTT зону. Но что если кроме меня дома живет еще кто-то? Согласитесь, будет неудобно, если подогрев воды будет отключаться каждый раз, когда я ухожу на работу. Логичнее просто напоминать о том, что термопот включен, если я не дома в определенное время (в момент включения термопота после «ночной спячки») — после обдумывания сценария мне показалось, что это самый лучший индикатор того, что я куда-то уехал надолго.

    Для этого:

    • Регистрируемся на сервисе Apilio;
    • Создаем 2 булевые переменные, которые по умолчанию имеют значение false (пусть они называются location и teapot);



    • Создаем два условия: I_exit_area (которое становится true, если я вышел за обозначенную в IFTTT зону) и I_forgot_teapot (true, если чайник включился);



    • Настраиваем взаимную интеграцию Apilio и IFTTT. В IFTTT надо включить сервис Webhook и указать ключ этого сервиса в Apilio, чтобы последний мог слать уведомления в IFTTT (ключ — это последняя часть URL, на скриншоте он “замылен”). Для интеграции в другую сторону в IFTTT надо подключить сервис Apilio;


    • Задаем сценарии IFTTT для изменения переменных location и teapot (триггером будет включение термопота в eWeLink и выход из заданной зоны в сервисе Location, а действия — изменение соответствующих переменных на true в сервисе Apilio, для этого в сервисе предусмотрено «Update a variable in Apilio to true»);





    • Создаем логическую схему: при одновременном выполнении этих двух условий в сервис IFTTT будет отправлено уведомление;


    • Настраиваем сценарий IFTTT на прием этого уведомления (триггером будет уведомление из Apilio, а действие — отправка сообщения в Telegram с предупреждением).

    Результат: если что-то заставит термопот включиться в тот момент, когда я далеко от дома, я получу в Telegram вопрос: «А не забыл ли ты выключить чайник»?

    В бесплатной версии сервис Apilio позволяет задать одну логическую схему и для эксперимента этого достаточно. Стоимость годовой подписки начинается от 7.2$, что тоже вполне бюджетно. Как и у самого IFTTT, у сервиса уже есть масса аналогов — думаю, можно подобрать что-то бесплатное под свои задачи. Важно только понимать, что открывая доступ новому сервису к своему умному дому вы в каком-то смысле делитесь с ним личными данными — так что безопасность здесь не последний вопрос.

    Развитие IFTTT, Apilio и подобных ему инструментов показывает, что у пользователей умного дома все-таки есть потребность в каком-то усложнении сценариев. Сколько бы производители не боролись за максимальное упрощение, иногда без дополнительной логики никак.

    RUVDS.com
    RUVDS – хостинг VDS/VPS серверов

    Комментарии 6

      +4
      Не проще ли перепрошить sonoff?
        +8
        Управлять устройствами дома через три облака, одно из которых китайское так себе идея.

        ИМХО «умный дом» должен уметь выполнять свои функции изолированно от интернета и уж точно неразумно выносить наружу логику.

        edit: не через два (как я написал изначально), а через три, а то и четыре облака, как посчитать…
          +2
          Угу, поэтому правильный вариант — это, например, замкнутый локально Home Assistant. Не важно, что будет с интернетом, автоматизации останутся живы.
          +2
          Кроме того, что такая инфраструктура зависит от всех сервисов к которым коннектится и от интернета, то просто ждать по 10-15 секунд отклика на любое действие — это норм?
            –1
            Не вполне понятно — как сочетаются предложения купить подписку на несколько платных облачных сервисов в тексте статьи и слово «сэкономить» в заголовке.
              0
              Умный Дом должен быть умным и безопасным. :-)
              На кой хрен там облака, боты, чаты и т.д. и т.п. от телеграмм, фэйсбук или даже фсб?
              ssh Вам в руки и пусть даже смартфон.

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

              Самое читаемое