Перейти к основному содержимому

Работа iRidium с сервисом IFTTT

Платформа IFTTT позволяет связать между собой два облачных сервиса. В сфере удаленного управления устройствами умного дома можно привести множество примеров работы с данной платформой.


Рассмотрим 2 наиболее используемых способа работы с IFTTT:

  1. Активация триггера IFTTT, когда сработало устройство умного дома.

Пример. Когда умный замок на двери открылся, отправляется уведомление об этом на почту.
2. Срабатывание устройства, когда активировался триггер IFTTT.

Пример. Когда пришло новое сообщение на почту, нужно чтобы загорелась лампа.


Далее, на примерах, мы опишем настройку данных способов работы.

Для работы с сервисом IFTTT необходим iRidium Server и постоянное интернет-соединение.

Активация триггера IFTTT, когда сработало устройство умного дома

Настройка Webhook

  1. Зайдите на сайт IFTTT и авторизуйтесь
  2. После авторизации нажмите на свою учетную запись и из появившегося списка выберите New Applet

IFTTT_1.png


  1. Появится стандартная форма, нажмите +this

IFTTT_2.png


  1. В появившемся списке найдите и выберите Webhooks

IFTTT_3.png


  1. Для создания триггера создайте новый запрос (Receive a web request)

IFTTT_4.png


  1. Создайте событие, например, door_opened и нажмите create trigger
  2. Нажмите +that и выберите из списка, что должно произойти, когда сработает событие door_opened

IFTTT_5.png


В нашем примере, когда сработает событие door_opened на нашу почту будет приходить письмо и уведомлять нас о событии.
8. Для этого выберем Gmail

IFTTT_6.png


  1. Выберем действие - прислать письмо самому себе (Send yourself an email). Появится обзор нашего триггера, нам нужно его проверить и закончить создание нажатием кнопки Finish

IFTTT_7.png


Можно проверить работу нашего триггера. Для этого перейдите на вкладку Webhooks

IFTTT_8.png


И перейдите на страницу документации

IFTTT_9.png


На этой странице можно создать запрос. Для этого в поле {event} впишите название события (в нашем примере это door_opened) и нажмите кнопку Test It.

IFTTT_10.png


Также на этой странице вы увидите ваш уникальный ключ, он понадобится нам в дальнейшем для настройки проекта iRidium.

Настройка проекта iRidium Pro

  1. Создайте серверный проект
  2. Добавьте в него драйвер AV&Custom Systems (HTTP)

IFTTT_11.png


  1. Настройте его как показано ниже

IFTTT_12.png


  1. Добавьте виртуальный канал Event

IFTTT_13.png


  1. Создайте в проекте новый скрипт и добавьте в него следующее
IR.AddListener(IR.EVENT_START,0,function(){

var IFTTT_Token = "your key"; //<translate><!--T:34-->
сюда вписываем секретный ключ Webhook (берем его из раздела документации к Webhook)</translate>
var IFTTT = IR.GetDevice("IFTTT (Custom HTTP (TCP))"); //<translate><!--T:35-->
имя драйвера</translate>

IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(in_sName, in_nValue){
IFTTT.Send(["GET,/trigger/"+in_nValue+"/with/key/"+IFTTT_Token+"/"]);
});
IR.SubscribeTagChange("Server.Channels.Event"); //<translate><!--T:36-->
имя виртуального канала</translate>

IR.AddListener(IR.EVENT_RECEIVE_TEXT, IFTTT, function(text) {
IR.Log(text);
});

});

  1. В переменную IFTTT_Token впишите свой ключ, который вы получили на странице документации Webhook
  2. Добавьте драйверы с которыми вы будете работать (рассмотрим пример с Modbus TCP) и настройте их

IFTTT_14.png


  1. Настройте обратные связи утройств

IFTTT_14_1.png


  1. Создайте правило, по которому будет срабатывать событие Webhook:

When=> в тег драйвера поступит сигнал о том, что дверь открыта

IFTTT_15.png


Then=> отправить текст с именем события в виртуальный канал

IFTTT_16.png


Впишите такое же имя события, как в триггере Webhook

IFTTT_17.png


Теперь, когда дверь откроется и в тег придет значение, сработает правило, которое отправит в Webhook информацию о том, что событие door_opened произошло и на почту придет уведомление об этом.

Срабатывание устройства, по письму на Gmail

Данный способ может работать также как и первый через Webhook

Для того чтобы устройство сработало, можно создать триггер IFTTT который будет отправлять письмо на Gmail, в теме которого будет название события.

Например, нам нужно чтобы включился свет, когда к нам на почту придет письмо с заголовком light_on и отключится, когда придет письмо с заголовком light_off.

Настройка Gmail

  1. Перейдите на сайт Google Apps Script
  2. Нажмите Start scripting

IFTTT_18.png


  1. Нажмите создать скрипт

IFTTT_19.png


  1. Вставьте следующий скрипт:
function doGet(in_sResponse) 
{
var l_sToken = ""; //<translate><!--T:92-->
впишите сюда ключ, который будете знать только Вы</translate>
var l_aEvents = in_sResponse.parameter.name.split(' ');
var l_nMailCount = 0;
var l_Object={};
var l_Response = Gmail.Users.Messages.list('me');

// Go through all the messages
for(var iMsg in l_Response.messages)
{
l_nMailCount++;
var l_nMessageID = l_Response.messages[iMsg].id;

var l_Message = Gmail.Users.Messages.get('me',l_nMessageID);

if(l_Message)
{
// Go through all the message headers
for(var iHeaders in l_Message.payload.headers)
{
if(l_Message.payload.headers[iHeaders].name == "Subject")
{
// Check for the presence of headers in events
for(var i = 0;i < l_aEvents.length;i++)
{
if(l_aEvents[i] == l_Message.payload.headers[iHeaders].value)
{
if(!l_Object[l_aEvents[i]])
l_Object[l_aEvents[i]] = l_nMessageID;

Gmail.Users.Messages.trash('me',l_nMessageID)
}
}
}
}

// Work with a maximum of 5 letters
if(l_nMailCount==5){break}
} else
break;
}
return ContentService.createTextOutput(JSON.stringify(l_Object));
}

  • В переменную var l_sToken придумайте и впишите свой уникальный ключ, для того чтобы кроме Вас никто не смог воспользоваться данным функционалом. В дальнейшем его нужно будет указывать в тексте письма.
  1. Сохраните его нажатием на иконку IFTTT_20.png или сочетанием клавиш Ctrl+S, задайте ему произвольное имя
  2. Для работы необходимо включить Gmail API. Для этого перейдите на вкладку Ресурсы/Дополнительные функции Google

IFTTT_21.png


  1. В появившемся списке найдите Gmail API и включите его.
  2. Под списком появится уведомление, что необходимо также включить этот сервис в панели инструментов. Перейдите по ссылке

IFTTT_22.png


  1. Заполните форму и нажмите Принять.

IFTTT_23.png


  1. На появившейся странице нужно нажать кнопку Включить API и сервисы

IFTTT_24.png


  1. В списке найдите и выберите Gmail API

IFTTT_25.png


  1. Включите его

IFTTT_26.png


  1. В появившемся окне нажмите создать полномочия для API

IFTTT_27.png


  1. Заполните форму как показано ниже

IFTTT_28.png


  1. Система запросит у вас разрешение на доступ к данным.

IFTTT_29.png


  1. Нажав на просмотр разрешений, появится новое окно. Выберите свой аккаунт нажмите Дополнительно и внизу сообщения нажмите Перейти

IFTTT_30.png IFTTT_31.png


  1. Нажмите Разрешить (Allow)
  2. Теперь, когда мы разрешили нашему скрипту доступ к данным Gmail нужно опубликовать его. Для этого перейдите на вкладку Опубликовать/Как веб приложение

IFTTT_32.png


  1. Заполните форму как показано ниже

IFTTT_33.png


После этого появится окно в котором вы увидите URL. Он понадобится нам для дальнейшей работы в iRidium Pro. Скопируйте его, начиная с /macros .

IFTTT_34.png


Настройка проекта iRidium Pro

  1. Создайте серверный проект
  2. Добавьте в него драйвер AV&Custom Systems (HTTP)

IFTTT_11.png


  1. Настройте его как показано ниже

IFTTT_12.png


  1. Добавьте еще один драйвер AV&Custom Systems (HTTP). Настройте его как показано ниже

IFTTT_35.png


  1. Добавьте виртуальный канал Event и виртуальный тег Event_Out

IFTTT_36.png


  1. Создайте в проекте новый скрипт и добавьте в него следующее
IR.AddListener(IR.EVENT_START,0,function(){

var IFTTT_Token = "your key"; // <translate><!--T:77-->
сюда вписываем секретный ключ Webhook (берем его из раздела документации к Webhook)</translate>
var Script_google_URL = "/macros/____________"; // <translate><!--T:78-->
URL из последнего шага настройки Gmail</translate>
var Event = "light_on+light_off"; // <translate><!--T:79-->
название событий (прописывается в теме письма)</translate>
var Interval = 10000; // <translate><!--T:80-->
интервал между запросами к Gmail</translate>

//-------------------------------------------------------------------------
var IFTTT = IR.GetDevice("IFTTT (Custom HTTP (TCP))");
var Script_google = IR.GetDevice("script_google");

IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(in_sName, in_nValue){
IFTTT.Send(["GET,/trigger/"+in_nValue+"/with/key/"+IFTTT_Token+"/"]);
});
IR.SubscribeTagChange("Server.Channels.Event");

IR.SetInterval(Interval, function (){
if(Script_google_URL!=""){
Script_google.Send(["GET,"+Script_google_URL+"?name="+Event]);
}
})

IR.AddListener(IR.EVENT_RECEIVE_TEXT, IFTTT, function(text) {
IR.Log("IFTTT "+text);
});
IR.AddListener(IR.EVENT_RECEIVE_TEXT, Script_google, function(text) {
if(text.substr(0,1)=="{"){
var oText = JSON.Parse(text);
for(key in oText){
IR.SetVariable("Server.Tags.Event_Out", key);
IR.Log('Successful: '+key);
}
}
});
});

  1. В переменную IFTTT_Token впишите свой ключ, который вы получили на странице документации Webhook;
  2. В переменную Script_google_URL впишите URL, который вы получили в последнем шаге настройки Gmail;
  3. В переменную Event впишите название события, по которому должно работать устройство.
  • Названия событий должны указываться в теме письма, которое будет приходить на Gmail.
  1. Добавьте драйверы с которыми вы будете работать (рассмотрим пример с Modbus TCP) и настройте их

IFTTT_14.png


  1. Создайте правило:

When=> в виртуальный тег Event_out придет название события из Gmail

IFTTT_37.png


  • Впишите имя события, которое будете указывать в теме письма

Then=> отправить команду на устройство

IFTTT_38.png


IFTTT_39.png


скачать:

Тестирование

  1. Загрузите проект на сервер
  2. Отправьте на адрес Gmail, на котором настроен скрипт Google письмо

IFTTT_40_1_1.png


  • В теме письма укажите название события, например, light_on.
  • В сообщении письма впишите свой уникальный ключ, который вы указали в переменной var l_sToken в скрипте Google.
  1. В зависимости от заданного в скрипте вашего проекта интервала, дождитесь, когда событие сработает. В окне сервера появится уведомление о том, что событие сработало и устройство выполнит команду.

IFTTT_40.png


Работа с IFTTT в iRidium lite

Работу с сервисом IFTTT в iRidium lite можно настроить через модуль Gmail. С помощью модуля Gmail можно настроить оповещение по почте о различных событиях, а также создать сценарий управления оборудованием через почту. Далее нужно будет только связать сервис Gmail с любым другим облачным сервисом, доступным в IFTTT.


  • Для работы с IFTTT требуется интернет подключение, а также аккаунт Google.
  • Рекомендуется использовать iRidium Server.

Рассмотрим 2 примера работы с данным сервисом:

  1. Отправка уведомления на почту, когда сработало устройство умного дома.

Пример. Когда сработал датчик протечки, отправить уведомление об этом на почту.


  1. Срабатывание устройства, когда на почту пришло письмо.

Пример. Когда пришло новое сообщение на почту, нужно включить систему отопления/кондиционирования.

Далее, на данных примерах, мы опишем настройку проекта iRidium lite.

Настройка модуля Gmail

  1. Добавьте в проект модуль Gmail for Server .

IFTTT_41.png


  1. Установите интервал, с которым модуль будет опрашивать сервис Gmail на наличие новых писем. Нажмите Add.

IFTTT_42.png


  1. Перейдите в модуль и авторизуйтесь в нем.

IFTTT_43.png


IFTTT_44.png


В открывшемся окне браузера необходимо нажать Advanced и в появившейся информации перейти по ссылке Go to iridiummobile.net

IFTTT_45.png


В появившемся окне нажмите Allow .

На этом настройка модуля закончена и можно приступать к настройке сценариев.

Отправка уведомления, когда сработало устройство умного дома

Рассмотрим настройку первого примера: когда сработал датчик протечки, отправить оповещение на почту.

Для этого перейдите в раздел Правила и создайте новое серверное правило. (Работа с правилами)

В событии Когда настройте активацию датчика протечки:

IFTTT_46.png


В действиях настройте отправку письма через модуль Gmail:

Укажите E-mail, на который будет отправляться письмо, тему и текст сообщения

IFTTT_47.png


IFTTT_48.png


Готовое правило выглядит следующим образом:

IFTTT_49.png


На этом настройка закончена и можно протестировать правило. При замыкании контактов датчика на указанную почту отправится письмо с уведомлением.

Срабатывание устройства, когда на почту пришло письмо

Рассмотрим настройку второго примера: когда пришло новое сообщение с определенной темой на почту, нужно включить систему отопления.

Для этого перейдите в раздел Правила и создайте новое серверное правило. (Работа с правилами)

В событии Когда настройте модуль Gmail на просмотр новых писем с определенной темой:

IFTTT_50.png


В теме укажите название события и при необходимости секретный ключ, который будет знать только пользователь:

IFTTT_51.png


IFTTT_52.png


В действиях укажите температуру или режим обогревателя.

IFTTT_53.png


Готовое правило выглядит следующим образом:

IFTTT_54.png


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