Работа iRidium с сервисом IFTTT
Общие инструкции по настройке работы iRidium с сервисом IFTTT
Платформа IFTTT позволяет связать между собой два облачных сервиса. В сфере удаленного управления устройствами умного дома можно привести множество примеров работы с данной платформой.
Рассмотрим 2 наиболее используемых способа работы с IFTTT:
- Активация триггера IFTTT, когда сработало устройство умного дома.
**Пример. ** Когда умный замок на двери открылся, отправляется уведомление об этом на почту.
- Срабатывание устройства, когда активировался триггер IFTTT.
**Пример. ** Когда пришло новое сообщение на почту, нужно чтобы загорелась лампа.
Далее, на примерах, мы опишем настройку данных способов работы.
Для работы с сервисом IFTTT необходим iRidium Server и постоянное интернет-соединение.
Активация триггера IFTTT, когда сработало устройство умного дома
Настройка Webhook
- Зайдите на сайт IFTTT и авторизуйтесь
- После авторизации нажмите на свою учетную запись и из появившегося списка выберите New Applet

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

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

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

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

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

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

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

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

На этой странице можно создать запрос. Для этого в поле {event} впишите название события (в нашем примере это door_opened) и нажмите кнопку Test It.
Также на этой странице вы увидите ваш уникальный ключ, он понадобится нам в дальнейшем для настройки проекта iRidium.
Настройка проекта iRidium Pro
- Создайте серверный проект
- Добавьте в него драйвер AV&Custom Systems (HTTP)

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

- Добавьте виртуальный канал Event
- Создайте в проекте новый скрипт и добавьте в него следующее
IR.AddListener(IR.EVENT_START,0,function(){
var IFTTT_Token = "your key"; //сюда вписываем секретный ключ Webhook (берем его из раздела документации к Webhook)
var IFTTT = IR.GetDevice("IFTTT (Custom HTTP (TCP))"); //имя драйвера
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.AddListener(IR.EVENT_RECEIVE_TEXT, IFTTT, function(text) {
IR.Log(text);
});
});
-
В переменную IFTTT_Token впишите свой ключ, который вы получили на странице документации Webhook
-
Добавьте драйверы с которыми вы будете работать (рассмотрим пример с Modbus TCP) и настройте их
- Настройте обратные связи утройств
- Создайте правило, по которому будет срабатывать событие Webhook:
When=> в тег драйвера поступит сигнал о том, что дверь открыта
Then=> отправить текст с именем события в виртуальный канал
Впишите такое же имя события, как в триггере Webhook
Теперь, когда дверь откроется и в тег придет значение, сработает правило, которое отправит в Webhook информацию о том, что событие door_opened произошло и на почту придет уведомление об этом.
Срабатывание устройства, по письму на Gmail
Данный способ может работать также как и первый через Webhook
Для того чтобы устройство сработало, можно создать триггер IFTTT который будет отправлять письмо на Gmail, в теме которого будет название события.
Например, нам нужно чтобы включился свет, когда к нам на почту придет письмо с заголовком light_on и отключится, когда придет письмо с заголовком light_off.
Настройка Gmail
- Перейдите на сайт Google Apps Script
- Нажмите Start scripting

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

- Вставьте следующий скрипт:
function doGet(in_sResponse)
{
var l_sToken = ""; //впишите сюда ключ, который будете знать только Вы
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 придумайте и впишите свой уникальный ключ, для того чтобы кроме Вас никто не смог воспользоваться данным функционалом. В дальнейшем его нужно будет указывать в тексте письма.
- Сохраните его нажатием на иконку
или сочетанием клавиш Ctrl+S, задайте ему произвольное имя
- Для работы необходимо включить Gmail API. Для этого перейдите на вкладку Ресурсы/Дополнительные функции Google

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

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

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

- Включите его

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

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

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

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

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

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

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

Настройка проекта iRidium Pro
- Создайте серверный проект
- Добавьте в него драйвер AV&Custom Systems (HTTP)

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

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

- Добавьте виртуальный канал Event и виртуальный тег Event_Out
- Создайте в проекте новый скрипт и добавьте в него следующее
IR.AddListener(IR.EVENT_START,0,function(){
var IFTTT_Token = "your key"; // сюда вписываем секретный ключ Webhook (берем его из раздела документации к Webhook)
var Script_google_URL = "/macros/____________"; // URL из последнего шага настройки Gmail
var Event = "light_on+light_off"; // название событий (прописывается в теме письма)
var Interval = 10000; // интервал между запросами к Gmail
//-------------------------------------------------------------------------
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);
}
}
});
});
- В переменную IFTTT_Token впишите свой ключ, который вы получили на странице документации Webhook;
- В переменную Script_google_URL впишите URL, который вы получили в последнем шаге настройки Gmail;
- В переменную Event впишите название события, по которому должно работать устройство.
- Названия событий должны указываться в теме письма, которое будет приходить на Gmail.
- Добавьте драйверы с которыми вы будете работать (рассмотрим пример с Modbus TCP) и настройте их
- Создайте правило:
When=> в виртуальный тег Event_out придет название события из Gmail
- Впишите имя события, которое будете указывать в теме письма
Then=> отправить команду на устройство

скачать:
Тестирование
- Загрузите проект на сервер
- Отправьте на адрес Gmail, на котором настроен скрипт Google письмо

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

Работа с IFTTT в iRidium lite
Работу с сервисом IFTTT в iRidium lite можно настроить через модуль Gmail. С помощью модуля Gmail можно настроить оповещение по почте о различных событиях, а также создать сценарий управления оборудованием через почту. Далее нужно будет только связать сервис Gmail с любым другим облачным сервисом, доступным в IFTTT.
- Для работы с IFTTT требуется интернет подключение, а также аккаунт Google.
- Рекомендуется использовать iRidium Server.
Рассмотрим 2 примера работы с данным сервисом:
- Отправка уведомления на почту, когда сработало устройство умного дома.
**Пример. ** Когда сработал датчик протечки, отправить уведомление об этом на почту.
- Срабатывание устройства, когда на почту пришло письмо.
**Пример. ** Когда пришло новое сообщение на почту, нужно включить систему отопления/кондиционирования.
Далее, на данных примерах, мы опишем настройку проекта iRidium lite.
Настройка модуля Gmail
- Добавьте в проект модуль Gmail for Server .

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


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

В появившемся окне нажмите Allow .
На этом настройка модуля закончена и можно приступать к настройке сценариев.
Отправка уведомления, когда сработало устройство умного дома
Рассмотрим настройку первого примера: когда сработал датчик протечки, отправить оповещение на почту.
Для этого перейдите в раздел Правила и создайте новое серверное правило. (Работа с правилами)
В событии Когда настройте активацию датчика протечки:
В действиях настройте отправку письма через модуль Gmail:
Укажите E-mail, на который будет отправляться письмо, тему и текст сообщения
Готовое правило выглядит следующим образом:

На этом настройка закончена и можно протестировать правило. При замыкании контактов датчика на указанную почту отправится письмо с уведомлением.
Срабатывание устройства, когда на почту пришло письмо
Рассмотрим настройку второго примера: когда пришло новое сообщение с определенной темой на почту, нужно включить систему отопления.
Для этого перейдите в раздел Правила и создайте новое серверное правило. (Работа с правилами)
В событии Когда настройте модуль Gmail на просмотр новых писем с определенной темой:
В теме укажите название события и при необходимости секретный ключ, который будет знать только пользователь:
В действиях укажите температуру или режим обогревателя.
Готовое правило выглядит следующим образом:

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