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

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

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

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

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

В нашем примере, когда сработает событие door_opened на нашу почту будет приходить письмо и уведомлять нас о событии.
8. Для этого выберем 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"; //<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);
});
});
- В переменную 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 = ""; //<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 придумайте и впишите свой уникальный ключ, для того чтобы кроме Вас никто не смог воспользоваться данным функционалом. В дальнейшем его нужно будет указывать в тексте письма.
- Сохраните его нажатием на иконку
или сочетанием клавиш 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"; // <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);
}
}
});
});
- В переменную 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, письма с определенной темой, сработает правило и устройство активируется.