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

ovx_czip2v5fe82xvr-a-oughjq.jpeg


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

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


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

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

tsaw8auo7fu2ztfy6f6xzdzfvjq.png

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

n3aaooquydwk0achk_nm2i4np5s.png
2c4dksfxpq8yid7wno2o6wblxfs.png
nl1t2svek_ezqt-aibksnvrn79y.png

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

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

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

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


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

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


lqxyujx5oo2gjdpmfrr6nn4hylo.jpeg

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

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

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

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

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

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


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

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

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

5gjyy1dzg7nxt8a6cprv4fjaa-m.png

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

4pnjemesuw_vqvdzswgo4qwsxy8.png
tjibud49eh4fcnr8ef_hav9c7mw.png

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

bj9xahdzejjxvhvkuz6hcojd5ou.png

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

_gh44qn4mvs_llvvw38ik-ejalg.png

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

gyfrfyy3h16unb3lid_ofoddvbm.png

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

guujvuxjph3hn0vyecfeysm94le.png
ykfxuizysofav5ibfmydrzhzi2a.png
humnbt24tcwjciyp9n7vh898kzg.png
rzyqaepastwtjlvatsa2oaboefm.png

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

9kji5caujhkvfyzjet485gr7go4.png

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

-fall80wor0c-if0zsdcchgxo5m.png

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

t9xxoxvje4gelzq5pluk0eqbfia.png

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

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


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

wu9m8ph5jgeniks-zlmwmfpdo0a.png
p174yqz7awpxxbilxrxpq0jg9bq.png

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

8sqdnsv7rvujwlv958s6ywbgms4.png
ld7tudndlqbqmho8fjfyvnd_jdu.png

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

tm9nl9q8bxym2r_lgyv4lqzgptg.png

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

2_06sgi79bceqqckn0jfxt_lwtm.png

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

5gjyy1dzg7nxt8a6cprv4fjaa-m.png

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

9bfxphowfvzxrfxq0fktieqdbme.png

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

lnhwcow40aftw-w6qpgzky5doya.png

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

8-y6kbdvrj0add_m6xonn9igg4k.png

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

ms5by4nwqozmiclvvjkuv-zveqc.png

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

vjpemok8o-mwqaec2kyjiln4-lu.png

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

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

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


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

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

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

Для этого:

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


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


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


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


26w90dbqxw0szkbji2we8nfv8ww.png
bnw4kjas5luwetpn84s0gphqmqo.png
f0dxul823sume8f4gacvg3fjyn8.png
0km85p_p9dedqjh-ry20etod8rk.png
  • Создаем логическую схему: при одновременном выполнении этих двух условий в сервис IFTTT будет отправлено уведомление;


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


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

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

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

de0yl-6ppopvisr_a80b4yuhjj8.png

© Habrahabr.ru