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

Навык iRidium для Сбер Салют

Сбер Салют - голосовой помощник от компании Сбер.

документация обновлена 01.01.2024

Салют — это виртуальные ассистенты Сбер, Джой и Афина. Они находятся в мобильных приложениях и на умных устройствах Сбера:

  • СберБанк Онлайн;
  • Приложение Сбер Салют;
  • SberBox;
  • SberBox Top;
  • Салют ТВ.

С помощью навыка "iRidi" Сбер Салют может управлять умным домом через iRidium cloud и сервер iRidium. Вы можете произнести команду "Включи свет" и лампочка загорится. Произнесите "Выключи свет" и лампочка погаснет. Всё просто!

Сбер13.png

Работа в iRidium Pro

Добавление драйвера и устройств

  1. Создайте серверный проект;

  2. Добавьте драйвер Sber Salut в проект;

SberSalut1.png

  1. Добавьте умные устройства;

SberSalut2.png

  1. Заполните необходимые параметры устройств:

SberSalut3.png

  • Device name - отображаемое в приложении SberSalut имя устройства;
  • Device home - отображаемое в приложении SberSalut название дома, в котором находится устройство;
  • Device room - название комнаты.
примечание
  • При заполнении полей используйте только кириллицу.

Сбер14.png

  • Name - имя команды / канала обратной связи;
  • Acknowledgment - подтверждение отправки команды:
    • True - после отправления команды будет ожидаться подтверждение изменения значения в фидбеке оборудования, к которому двусторонне привязана пара команда / фидбек. Если отправленная команда из приложения Сбер Салют не вызвала изменение в оборудовании, то в интерфейсе приложения Сбер Салют отменит визуальные изменения управления. Не подходит для оборудования, изменяющего свой фидбек дольше 2х секунд.
    • False (рекомендуется) - подтверждение не требуется, даже если оборудование было оффлайн и не отреагировало на команду. Визуализация в приложении Сбер Салют не отобразит отмену вашего действия.

Описание устройств и обратных связей

Устройства Сбер Салют - это не реальные устройства, а только лишь интерфейс между реальными устройствами и ассистентом. Вы должны реализовать функционал этих устройств в iRidium server или обеспечить связи с соответствующими физическими устройствами по тому или иному протоколу. iRidium предоставляет интерфейс с несколькими типами устройств:

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

примечание

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

Лампа

Управление лампочкой, светильником, ночником, люстрой.

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить или выключить лампу"Салют, включи лампу",
"Салют, выключи розетку".
Brightness0 - 100%Изменить яркость лампы *"Салют, увеличь яркость лампы",
"Салют, убавь яркость люстры на 30%",
"Салют, сделай яркость ночной подсветки на минимум".
ColorRGB0 - 16777215Изменить цвет лампы"Салют, поменяй цвет лампы на синий",
"Салют, измени цвет ночной подсветки на фиолетовый".
Color Temperature (K)0 - 10000Изменить температуру цвета в Кельвинах"Салют, сделай свет настольной лампы холоднее",
"Салют, сделай свет ночной подсветки теплее".
  • Чтобы конвертировать значение от Сбера для работы с шинами, где имеются отдельные канала для работы с RGB, воспользуйтесь скриптом:
var Sber = IR.GetDevice("Sber Salut");
var device = IR.GetDevice("Modbus TCP");

IR.AddListener(IR.EVENT_TAG_CHANGE, Sber, function(in_sName, in_sValue)
{
if (in_sName == "Лампа:Color RGB") {
var valueR = (in_sValue >> 24) & 0xFF;
var commandR = "Red"; //
setRGB(commandR, valueR);


var valueG = (in_sValue >> 16) & 0xFF; //Получение зеленого
var commandG = "Green"; //Имя канала в которой передается значение
setRGB(commandG, valueG); //Функция отправки значения

var valueB = (in_sValue >> 8) & 0xFF;
var commandB = "Blue";
setRGB(commandB, valueB);
Sber.Set(in_sName, in_sValue);
}

IR.Log(" Красный " + valueR + " Зеленый " + valueG + " Синий " + valueB);

});

/*
/ отправляем на определенную команду значение
/ command - имя команды
/ value - значение
*/
function setRGB (command ,value){
device.Set(command, value);
}
примечание

Если используется скриптовый конвертер, и цвет лампы поменять не при помощи приложения Сбер Салют, то фидбэк в приложении может отображать неактуальную информацию.

Розетка

Управление умной розеткой.

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Удаленное включение и выключение устройства"Салют, включи вентилятор",
"Салют, выключи увлажнитель в детской".
Child Lock0 / 1Заблокировать или разблокировать кнопку питания на корпусе розетки (детский режим)."Салют, заблокируй утюг",
"Салют, разблокируй увлажнитель".
Current (mA)0 - 30000Ток, проходящий в данный момент через устройство.
Power (W)0 - 50000Мощность, потребляемая устройством.
Voltage (V)0 - 5000Электрическое напряжение, подаваемое на присоединенное устройство.

Перевод Ампер в Миллиамперы:

function modify_send_A_to_mA(in_Type, in_Name, in_Value)
{
in_Value *= 1000;
IR.Log("Modification is done. " + in_Name + " has send " + in_Value);
return in_Value;
}

Перевод Киловатт в Ватты:

function modify_send_kW_to_W(in_Type, in_Name, in_Value)
{
in_Value *= 1000;
IR.Log("Modification is done. " + in_Name + " has send " + in_Value);
return in_Value;
}

HVAC

Управление кондиционером, термостатом, вентилятором, электрическим тёплым полом.

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить / выключить кондиционер"Салют, включи кондиционер",
"Салют, выключи кондиционер в детской".
Ionization0 / 1Ионизация воздуха
Night Mode0 / 1Ночной режим на кондиционере"Салют, включи ночной режим на кондиционере",
"Салют, выключи ночной режим на кондиционере в спальне".
Target temperature (°C)16 - 32Температура Цельсия"Салют, установи температуру на кондиционере на 25 градусов",
"Салют, убавь температуру на кондиционере на 5 градусов",
"Салют, поставь температуру на кондиционере на минимум".
Humidity (%)30 - 90Уровень влажности
Fan Speed"auto" - Автоматический режим,
"low" - Низкая,
"medium" - Средняя,
"high" - Высокая,
"quiet" - Тихий режим,
"turbo" - Турбо
Скорость вентилирования"Салют, включи кондиционер в режиме «Турбо»",
"Салют, сделай скорость кондиционера на максимум".
Air Flow Direction"no" - Нет,
"auto" - Авто,
"horizontal" - Изменять по горизонтали,
"vertical" - Изменять по вертикали,
"rotation" - Изменять по кругу
Направление воздушного потока
Work Mode"auto" - Авто,
"air_purification" - Очистка воздуха,
"comfortable_sleep" - Комфортный сон,
"cooling" - Охлаждение,
"dehumidification" - Осушение (пока не реализовано в Сбер Салют),
"eco" - Энергосбережение,
"fast_cooling" - Быстрое охлаждение,
"fast_heating" - Быстрый нагрев,
"heating" - Нагрев,
"self_cleaning" - Самоочистка,
"turbo" - Турбо,
"ventilation" - Вентиляция
Режим работы кондиционера"Салют, включи вентиляцию на кондиционере",
"Салют, включи самоочистку на кондиционере",
"Салют, выключи режим комфортного сна на кондиционере".

Радиатор

Управление радиаторами управления.

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить / выключить радиатор"Салют, включи радиатор",
"Салют, выключи радиатор".
Target temperature (°C)5 - 50Целевая температура"Салют, установи температуру радиатора на 25 градусов",
"Салют, убавь температуру на радиаторе на 5 градусов",
"Салют, поставь температуру на радиаторе на минимум".
Current temperature (°C)-40 - 200Текущая температура"Салют, какая температура в детской?",
"Салют, сколько градусов на веранде?",
"Салют, какая температура на радиаторе?"

Теплый пол

Управление теплым полом.

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить / выключить теплый пол"Салют, включи теплый пол",
"Салют, выключи теплый пол".
Target temperature (°C)5 - 50Целевая температура"Салют, установи температуру теплого пола на 25 градусов",
"Салют, убавь температуру на теплом поле на 5 градусов",
"Салют, поставь температуру теплого пола на минимум".
Current temperature (°C)-40 - 200Текущая температура"Салют, какая температура в детской?",
"Салют, сколько градусов на веранде?",
"Салют, какая температура теплого пола?"
Heating Rate1 - 10 — скорость нагрева,
"auto" — автоматическая скорость нагрева,
"high" — высокая скорость нагрева,
"low" — низкая скорость нагрева,
"medium" — средняя скорость нагрева.
Скорость нагрева
Thermostat mode"auto" — автоматический режим,
"cooling" — охлаждение,
"eco" — энергосбережение,
"fast_cooling" — быстрое охлаждение,
"fast_heating" — быстрый нагрев,
"heating" — нагрев,
"turbo" — режим усиленной работы.
Режим нагрева

Светодиодная лента

Управление светодиодной лентой.

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить / выключить светодиодную ленту"Салют, включи свет",
"Салют, выключи свет".
Brightness0 - 100Процент яркости лампы"Салют, увеличь яркость светодиодной ленты",
"Салют, убавь яркость светодиодной ленты на 30%",
"Салют, сделай яркость ночной подсветки на минимум".
Color Temperature (K)0 - 10000Управление температурой цвета в Кельвинах"Салют, сделай свет светодиодной ленты холоднее",
"Салют, сделай свет ночной подсветки теплее".
ColorRGB0 - 16777215Установить цветовое значение *"Салют, поменяй цвет светодиодной ленты на синий",
"Салют, измени цвет ночной подсветки на фиолетовый".
  • Чтобы конвертировать значение от Сбера для работы с шинами, где имеются отдельные канала для работы с RGB, воспользуйтесь скриптом:
var Sber = IR.GetDevice("Sber Salut");
var device = IR.GetDevice("Modbus TCP");

IR.AddListener(IR.EVENT_TAG_CHANGE, Sber, function(in_sName, in_sValue)
{
if (in_sName == "Лампа:Color RGB") {
var valueR = (in_sValue >> 24) & 0xFF;
var commandR = "Red"; //
setRGB(commandR, valueR);


var valueG = (in_sValue >> 16) & 0xFF; //Получение зеленого
var commandG = "Green"; //Имя канала в которой передается значение
setRGB(commandG, valueG); //Функция отправки значения

var valueB = (in_sValue >> 8) & 0xFF;
var commandB = "Blue";
setRGB(commandB, valueB);
Sber.Set(in_sName, in_sValue);
}

IR.Log(" Красный " + valueR + " Зеленый " + valueG + " Синий " + valueB);

});

/*
/ отправляем на определенную команду значение
/ command - имя команды
/ value - значение
*/
function setRGB (command ,value){
device.Set(command, value);
}
примечание

Если используется скриптовый конвертер, и цвет лампы поменять не при помощи приложения Сбер Салют, то фидбэк в приложении может отображать неактуальную информацию.

Датчик открытия

Показания датчика открытия.

Обратная связьЗначениеОписание
Door state0 / 1true — контакты датчика разомкнуты (створки окна, двери или другой подобной конструкции открыты),
false — контакты датчика сомкнуты (створки окна, двери или другой подобной конструкции закрыты).

Датчик движения

Показания датчика движения.

Обратная связьЗначениеОписание
Pir0 / 1true — есть движение,
false — движения нет.

Вентилятор

Управление вентилятором.

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить / выключить вентилятор"Салют, включи вентилятор",
"Салют, выключи вентилятор".
Fan Speed"auto" - автоматический режим,
"low" - низкая,
"medium" - средняя,
"high" - высокая,
"quiet" - тихий режим,
"turbo" - турбо.
Скорость вентилятора"Салют, включи кондиционер в режиме «Турбо»",
"Салют, сделай скорость вентилятора максимальной".
Direction"left" — налево,
"right" — направо,
"up" — вверх,
"down" — вниз.
Направление вентилятора"Салют, поверни вентилятор налево",
"Салют, нужно, чтобы вентилятор начал дуть правее",
"Салют, направление вентилятора — вверх".

Реле

Управление реле.

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить / выключить реле"Салют, включи реле",
"Салют, выключи реле".

Датчик температуры и влажности

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

Обратная связьЗначениеОписаниеПримеры голосовых команд
Humidity (%)0 - 100Показать текущую влажность"Салют, какой уровень влажности в детской?",
"Салют, какой уровень влажности на увлажнителе?",
"Салют, какая влажность на кондиционере?",
"Салют, уровень влажности на датчике температуры и влажности".
Current temperature (°C)-40 - 200Показать текущую температуру"Салют, какая температура в детской?",
"Салют, сколько градусов на веранде?",
"Салют, какая температура на обогревателе?"

Жалюзи

Управление жалюзи и рулонными шторами.

Обратная связьЗначениеОписаниеПримеры голосовых команд
Light transmission0 - 100Степень пропускания света"Салют, установи пропускание света для жалюзи на 60%",
"Салют, сделай пропускание света для рулонной шторы на 30%".
Open percentage0 - 100Открытие жалюзи (%)"Салют, открой шторы на 90%",
"Салют, раздвинь шторы наполовину",
"Салют, опусти рулонные шторы на две трети".
Open speed"auto" — автоматическая скорость,
"low" — низкая скорость,
"medium" — средняя скорость,
"high" — высокая скорость
Скорость открытия"Салют, сделай скорость открытия штор низкой",
"Салют, нужно, чтобы шторы открывались на средней скорости",
"Салют, открой рулонную штору на высокой скорости",
"Салют, установи низкую скорость открытия штор".
Open state"open" — открыто,
"close" — закрыто,
"opening" — открывается,
"closing" — закрывается.
Состояние открытия"Салют, что со шторами?",
"Салют, в каком положении жалюзи?",
"Салют, подняты ли жалюзи?".
Open set"open" — открыть,
"close" — закрыть,
"stop" — остановить.
Управление жалюзи"Салют, раздвинь шторы",
"Салют, подними жалюзи",
"Салют, останови поднятие жалюзи",
"Салют, не закрывай шторы".

Шторы

Управление шторами.

Обратная связьЗначениеОписаниеПримеры голосовых команд
Left percentage0 - 100Открытие левой шторы (%)"Салют, закрой левую часть штор на 90%",
"Салют, раздвинь левую сторону шторы наполовину".
Left state"open" — открыто,
"close" — закрыто,
"opening" — открывается,
"closing" — закрывается.
Состояние левой шторы"Салют, что с левой частью шторы?",
"Салют, в каком положении левая часть шторы?".
Left set"open" — открыть,
"close" — закрыть,
"stop" — остановить
Открытие левой шторы"Салют, закрой левую сторону шторы",
"Салют, закрой левую сторону шторы".
Open percentage0 - 100Открытие штор (%)"Салют, распахни шторы на 90%",
"Салют, раздвинь шторы наполовину".
Open speed"auto" — автоматическая скорость,
"low" — низкая скорость,
"medium" — средняя скорость,
"high" — высокая скорость
Скорость открытия"Салют, сделай скорость открытия штор низкой",
"Салют, нужно, чтобы шторы открывались на средней скорости",
"Салют, открой рулонную штору на высокой скорости",
"Салют, установи низкую скорость открытия штор".
Right percentage0 - 100Открытие правой шторы (%)"Салют, закрой правую часть штор на 90%",
"Салют, раздвинь правую сторону шторы наполовину".
Right state"open" — открыто,
"close" — закрыто,
"opening" — открывается,
"closing" — закрывается
Состояние правой шторы"Салют, что с правой стороной шторы?",
"Салют, в каком положении правая сторона штор?".
Right set"open" — открыть,
"close" — закрыть,
"stop" — остановить
Открытие правой шторы"Салют, закрой правую сторону шторы",
"Салют, закрой правую сторону шторы".
Open state"open" — открыто,
"close" — закрыто,
"opening" — открывается,
"closing" — закрывается
Состояние штор"Салют, что со шторами?",
"Салют, в каком положении шторы?".
Open set"open" — открыть,
"close" — закрыть,
"stop" — остановить
Управление шторами"Салют, раздвинь шторы",
"Салют, не закрывай шторы".

Сценарный выключатель

Управление сценарными выключателями.

Обратная связьЗначениеОписание
Button event"click" - однократное нажатие,
"double_click" - двойное нажатие,
"long_press" - долгое нажатие
Нажатие на кнопку
Button event (1-10)"click" - однократное нажатие,
"double_click" - двойное нажатие,
"long_press" - долгое нажатие
Нажатие на кнопку (1-10)
button bottom left event"click" - однократное нажатие,
"double_click" - двойное нажатие,
"long_press" - долгое нажатие
Нажатие на левую нижнюю кнопку
button bottom right event"click" - однократное нажатие,
"double_click" - двойное нажатие,
"long_press" - долгое нажатие
Нажатие на правую нижнюю кнопку
button left event"click" - однократное нажатие,
"double_click" - двойное нажатие,
"long_press" - долгое нажатие
Нажатие на левую кнопку
button right event"click" - однократное нажатие,
"double_click" - двойное нажатие,
"long_press" - долгое нажатие
Нажатие на правую кнопку
button top left event"click" - однократное нажатие,
"double_click" - двойное нажатие,
"long_press" - долгое нажатие
Нажатие на левую верхнюю кнопку
button top right event"click" - однократное нажатие,
"double_click" - двойное нажатие,
"long_press" - долгое нажатие
Нажатие на правую верхнюю кнопку

Вентиляция Зентек

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить / выключить вентиляцию"Салют, включи вентиляцию.",
"Салют, выключи вентиляцию."
FanSpeedlow; medium; highСкорость работы: низкая; средняя; высокая."Салют, включи низкую скорость вентиляции.",
"Салют, уменьши скорость вентиляции."
Modeheating; ventilationРежим работы: нагрев; вентиляция."Салют, поставь режим нагрева на вентиляции.",
"Салют, включи режим вентиляции на вентиляции Зентек."
TargetTemperature5 - 35Изменить уставку температуры приточного воздуха на необходимое значение."Салют, теплее на четыре градуса.",
"Салют, прибавь температуру на вентиляции."

Чтобы конвертировать значения между Вентиляцией Zentec на шлюзе bus77 и устройством вентиляции от Сбер Салюта, воспользуйтесь правилом или скриптом:

var Sber Salut = IR.GetDevice("Sber Salut"); // имя драйвера Сбер Салюта
var ModBus = IR.GetDevice("Bus77"); // имя драйвера

IR.AddListener(IR.EVENT_TAG_CHANGE, Sber Salut, function(name, value)
{
IR.Log("От Sber Salut Name: " + name + " значение:" + value);

var NameChannelSet = "";
var ResultForModBus = 0; //значение для МодБас
if(name == "Вентиляция Зентек:Mode")
{
NameChannelSet = "I-CAN-Modbus:TempControlMode (Minibox (Zentec) 1)";
switch (value)
{
case "ventilation":
ResultForModBus = 1;
ModBus.Set(NameChannelSet, ResultForModBus);
break;
case "heating":
ResultForModBus = 2;
ModBus.Set(NameChannelSet, ResultForModBus);
break;
default:
IR.Log("Команда не запрограммирована!");
}
}

if(name == "Вентиляция Зентек:FanSpeed")
{
NameChannelSet = "I-CAN-Modbus:FanSpeed (Minibox (Zentec) 1)";
switch (value)
{
case "low":
ResultForModBus = 1;
ModBus.Set(NameChannelSet, ResultForModBus);
break;
case "medium":
ResultForModBus = 3;
ModBus.Set(NameChannelSet, ResultForModBus);
break;
case "high":
ResultForModBus = 7;
ModBus.Set(NameChannelSet, ResultForModBus);
break;
default:
IR.Log("Команда не запрограммирована!");
}
}

IR.Log("От Sber Salut - Name: " + NameChannelSet + " значение:" + ResultForModBus);
});


IR.AddListener(IR.EVENT_TAG_CHANGE, ModBus, function(name, value)
{
var NameChannelSet = "";
var ResultForSber = 0; //значение для Сбер Салюта
IR.Log("От ModBus Name: " + name + " значение:" + value);
if(name == "I-CAN-Modbus:TempControlMode (Minibox (Zentec) 1)")
{
NameChannelSet = "Вентиляция Зентек:Mode";
switch (value)
{
case 1:
ResultForSber = "ventilation";
Sber Salut.Set(NameChannelSet, ResultForSber);
break;
case 2:
ResultForSber = "heating";
Sber Salut.Set(NameChannelSet, ResultForSber);
break;
default:
IR.Log("Команда не запрограммирована!");
}
}

if(name == "I-CAN-Modbus:FanSpeed (Minibox (Zentec) 1)")
{
NameChannelSet = "Вентиляция Зентек:FanSpeed";
switch (value)
{
case 1:
ResultForSber = "low";
Sber Salut.Set(NameChannelSet, ResultForSber);
break;
case 3:
ResultForSber = "medium";
Sber Salut.Set(NameChannelSet, ResultForSber);
break;
case 7:
ResultForSber = "high";
Sber Salut.Set(NameChannelSet, ResultForSber);
break;
default:
IR.Log("Команда не запрограммирована!");
}
}
IR.Log("От ModBus - Name: " + NameChannelSet + " значение:" + ResultForSber);
});

Вентиляция Роял Клима

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off1 / 0Состояние вкл/откл."Салют, включи вентиляцию.",
"Салют, выключи вентиляцию."
FanSpeedquiet; low; medium; high; turboСкорость работы: тихо; низкая; средняя; высокая; турбо."Салют, включи низкую скорость вентиляции.",
"Салют, уменьши скорость вентиляции."
CurrentTemperatureany valueЗначение температуры вытяжного воздуха с датчика"Салют, какая температура приточного воздуха."
TargetTemperature10 - 25Изменить уставку температуры приточного воздуха на необходимое значение."Салют, теплее на четыре градуса.",
"Салют, прибавь температуру на вентиляции."

Чтобы конвертировать значения скоростей приточного и вытяжного вентиляторов между Вентиляцией Royal Clima на шлюзе bus77 и устройством вентиляции от Сбер Салюта, воспользуйтесь правилом или скриптом.

Пример проекта с конвертацией значения скоростей приточного и вытяжного вентиляторов через скрипт:

Salut_Script.sirpz

Скрипт, используемый в проекте-примере:

var Sber = IR.GetDevice("Sber Salut"); // имя драйвера Сбер
var ModBus = IR.GetDevice("Bus77"); // имя драйвера

IR.AddListener(IR.EVENT_START, 0, function ()
{
IR.AddListener(IR.EVENT_TAG_CHANGE, Sber, function(name, value)
{
IR.Log("От Sber Name: " + name + " значение:" + value);

var NameChannelSetSupply = "";
var NameChannelSetExhaustFanSpeed = "";
var ResultForModBus = 0; //значение для МодБас
if(name == "Вентиляция Роял Клима:Fan Speed")
{
NameChannelSetSupply = "I-CAN-Modbus_тест:SupplyFanSpeed (Вентиляция Royal Clima 1)";
NameChannelSetExhaustFanSpeed = "I-CAN-Modbus_тест:ExhaustFanSpeed (Вентиляция Royal Clima 1)";
switch(value)
{
case "quiet":
{
ResultForModBus = 1;
ModBus.Set(NameChannelSetSupply, ResultForModBus);
IR.SetTimeout(100, function()
{
ModBus.Set(NameChannelSetExhaustFanSpeed, ResultForModBus);
IR.Log("Выставлено значение " + value + " В SupplyFanSpeed");
});
break;
}
case "low":
{
ResultForModBus = 2;
ModBus.Set(NameChannelSetSupply, ResultForModBus);
IR.SetTimeout(100, function()
{
ModBus.Set(NameChannelSetExhaustFanSpeed, ResultForModBus);
IR.Log("Выставлено значение " + value + " В SupplyFanSpeed");
});
break;
}
case "medium":
{
ResultForModBus = 5;
ModBus.Set(NameChannelSetSupply, ResultForModBus);
IR.SetTimeout(100, function()
{
ModBus.Set(NameChannelSetExhaustFanSpeed, ResultForModBus);
IR.Log("Выставлено значение " + value + " В SupplyFanSpeed");
});
break;
}
case "high":
{
ResultForModBus = 8;
ModBus.Set(NameChannelSetSupply, ResultForModBus);
IR.SetTimeout(100, function()
{
ModBus.Set(NameChannelSetExhaustFanSpeed, ResultForModBus);
IR.Log("Выставлено значение " + value + " В SupplyFanSpeed");
});
break;
}
case "turbo":
{
ResultForModBus = 10;
ModBus.Set(NameChannelSetSupply, ResultForModBus);
IR.SetTimeout(100, function()
{
ModBus.Set(NameChannelSetExhaustFanSpeed, ResultForModBus);
IR.Log("Выставлено значение " + value + " В SupplyFanSpeed");
});
break;
}
default:
{
IR.Log("Команда не запрограммирована!");
break;
}
}
}
});

IR.AddListener(IR.EVENT_TAG_CHANGE, ModBus, function(name, value)
{
var NameChannelSet = "";
var ResultForSberSalut = 0; //значение для Сбера
IR.Log("От ModBus Name: " + name + " значение:" + value);
if(name == "I-CAN-Modbus_тест:SupplyFanSpeed (Вентиляция Royal Clima 1)" ||
name == "I-CAN-Modbus_тест:ExhaustFanSpeed (Вентиляция Royal Clima 1)")
{
NameChannelSet = "Вентиляция Роял Клима:Fan Speed";
switch(value)
{
case 1:
ResultForSberSalut = "quiet";
Sber.Set(NameChannelSet, ResultForSberSalut);
break;
case 2:
ResultForSberSalut = "low";
Sber.Set(NameChannelSet, ResultForSberSalut);
break;
case 3:
ResultForSberSalut = "medium";
Sber.Set(NameChannelSet, ResultForSberSalut);
break;
case 7:
ResultForSberSalut = "high";
Sber.Set(NameChannelSet, ResultForSberSalut);
break;
case 10:
ResultForSberSalut = "turbo";
Sber.Set(NameChannelSet, ResultForSberSalut);
break;
default:
IR.Log("Команда не запрограммирована!");
}
}
IR.Log("От ModBus - Name: " + NameChannelSet + " значение:" + ResultForSberSalut);
});
});
примечание

Голосовое управлении скоростями приточного и вытяжного вентиляторов происходит синхронно: скорость притока равна скорости вытяжки. Отправка значений в каналы SupplyFanSpeed и ExhaustFanSpeed осуществляется с задержкой 100 мс.

Пример проекта с конвертировать значения скоростей приточного и вытяжного вентиляторов через правила:

Salut_Routines.sirpz

Вентиляция VAKIO

Обратная связьЗначениеОписаниеПримеры голосовых команд
On/Off0 / 1Включить / выключить вентиляцию"Салют, включи вентиляцию.",
"Салют, выключи вентиляцию."
FanSpeedlow; medium; high; turboСкорость работы: низкая; средняя; высокая; турбо."Салют, включи низкую скорость вентиляции.",
"Салют, уменьши скорость вентиляции."
Modeauto; eco; turboРежим работы: Авто; Эко (Ожидание); Турбо."Салют, поставь режим Авто.",
"Салют, включи режим Турбо на вентиляции Вакио."
TargetTemperature10 - 25Изменить уставку температуры приточного воздуха на необходимое значение."Салют, теплее на четыре градуса.",
"Салют, прибавь температуру на вентиляции."

Чтобы конвертировать значения между Вентиляцией VAKIO на шлюзе bus77 и устройством вентиляции от Сбер Салюта, воспользуйтесь правилом или скриптом:

Пример проекта с конвертацией значений скорости приточного вентиляторов через скрипт:

Salut_Script.sirpz

Скрипт, используемый в проекте-примере:

var Voice_assistant = IR.GetDevice("Sber Salut");
var Bus77 = IR.GetDevice("Bus77");
IR.AddListener(IR.EVENT_START, 0, function ()
{
IR.AddListener(IR.EVENT_TAG_CHANGE, Bus77, function(name, value)
{
switch(name)
{
case "I-CAN-Modbus:FanSpeed (Ветиляция VAKIO 1)":
if(value == 3)
{
Voice_assistant.Set("Вентиляция Вакио:FanSpeed", "high")
}
if(value == 1)
{
Voice_assistant.Set("Вентиляция Вакио:FanSpeed", "low")
}
if(value == 2)
{
Voice_assistant.Set("Вентиляция Вакио:FanSpeed", "medium")
}
if(value == 4)
{
Voice_assistant.Set("Вентиляция Вакио:FanSpeed", "turbo")
}
break;
case "I-CAN-Modbus:Mode (Ветиляция VAKIO 1)":
if(value == 1)
{
Voice_assistant.Set("Вентиляция Вакио:Mode", "auto")
}
if(value == 2)
{
Voice_assistant.Set("Вентиляция Вакио:Mode", "turbo")
}
break;
}
});

IR.AddListener(IR.EVENT_TAG_CHANGE, Voice_assistant, function(name, value)
{
switch(name)
{
case "Вентиляция Вакио:FanSpeed":
if(value == "high")
{
Bus77.Set("I-CAN-Modbus:FanSpeed (Ветиляция VAKIO 1)", 3)
}
if(value == "low")
{
Bus77.Set("I-CAN-Modbus:FanSpeed (Ветиляция VAKIO 1)", 1)
}
if(value == "medium")
{
Bus77.Set("I-CAN-Modbus:FanSpeed (Ветиляция VAKIO 1)", 2)
}
if(value == "turbo")
{
Bus77.Set("I-CAN-Modbus:FanSpeed (Ветиляция VAKIO 1)", 4)
}
break;
case "Вентиляция Вакио:Mode":
if(value == "auto")
{
Bus77.Set("I-CAN-Modbus:Mode (Ветиляция VAKIO 1)", 1)
}
if(value == "turbo")
{
Bus77.Set("I-CAN-Modbus:Mode (Ветиляция VAKIO 1)", 2)
}
break;
}
});
});

Пример проекта с конвертацией значений скорости приточного вентилятора через правила:

Salut_Routines.sirpz

Обработка голосовых команд с помощью JS

var network = IR.GetDevice("HDL Buspro Network");
var SberSalut = IR.GetDevice("Sber Salut");
IR.AddListener(IR.EVENT_TAG_CHANGE, SberSalut , function(name, value)
{
IR.Log("~~~TagChange in Sber Salut: " + name+ " - " +value)
if(name == "HVAC 1:Work Mode") {
switch(value) {
case 4: //Охлаждение
network.Set("HVAC (HDL-MAC01_331):Mode", 0)
break;

case 9: //Нагрев
network.Set("HVAC (HDL-MAC01_331):Mode", 1)
break;

case 12: //Вентиляция
network.Set("HVAC (HDL-MAC01_331):Mode", 2)
break;
case 1: //Авто
network.Set("HVAC (HDL-MAC01_331):Mode", 3)
break;
case 5: //Осушение
network.Set("HVAC (HDL-MAC01_331):Mode", 4)
break;
}
}
})
IR.AddListener(IR.EVENT_TAG_CHANGE , network, function(name,value)
{
if(name == "HVAC (HDL-MAC01_331):Mode") {
switch(value) {
case 0: //Охлаждение
SberSalut.Set("HVAC 1:Work Mode", 4);
break;

case 1: //Нагрев
SberSalut.Set("HVAC 1:Work Mode", 9);
break;

case 2: //Вентиляция
SberSalut.Set("HVAC 1:Work Mode", 12);
break;
case 3: //Авто
SberSalut.Set("HVAC 1:Work Mode", 1);
break;
case 4: //Осушение
SberSalut.Set("HVAC 1:Work Mode", 5);
break;
}
}

})

Обработка голосовых команд с помощью перенаправления значений

Сбер15.png

Forwarding value to создает связь между каналом и фидбеком драйверов (не зависит от типа драйвера). При добавлении ссылки на другой тег создается связь между ними, которая пересылает значение в момент его записи в источник. Для добавления связи между драйвером голосового ассистента (Sber Salut) и драйвером оборудования (в нашем примере драйвер Modbus TCP) необходимо выполнить следующие шаги:

  1. Перейдите на вкладку Devices ;

  2. В настройках фидбэков драйвера Sber Salut укажите перенаправление значений в соответствующие команды драйвера Modbus TCP ;

  3. В настройках фидбэков драйвера Modbus TCP укажите перенаправление значений в соответствующие команды драйвера Sber Salut .

примечание

Если необходимо преобразовать полученное значение, то используйте Script Modifier. Подробное описание настройки перенаправления значений по ссылке

Обработка голосовых команд с помощью скрипта

Скрипт обеспечивает прием голосовых команд от Ассистента и перенаправляет их на реальные устройства. В данном примере это устройства в сети Modbus TCP.

  1. Перейдите в редактор скрипта, нажав кнопку JS .

  2. Нажмите + , затем выберите New Script .

  3. Добавьте следующий скрипт.

var Sber = IR.GetDevice("Sber Salut");
var Modbus = IR.GetDevice("Лампа");


//Логирование команд, отправленных драйвером Сбер Салют:
IR.AddListener(IR.EVENT_TAG_CHANGE, Sber Salut, function(name, value){
IR.Log("Sber! Device tag: " + name + " , value: " + value);

});


//Пример управления лампой:

IR.AddListener(IR.EVENT_TAG_CHANGE, Modbus, function(name, value){ //прослушиваем устройство на изменение тега.
switch (name) {
case "On/Off":
if (value == 1){ //устройство включено
Sber.Set("Лампа:On/Off", 1) // отсылаем в канал драйвера Сбер Салюта значение 1 - устройство включено.
}
if (value == 0){ //устройство выключено
Sber.Set("Лампа:On/Off", 0) // отсылаем в канал драйвера Сбер Салюта значение 0 - устройство выключено.
}
break;
case "Brightness":
Sber.Set("Лампа:Brightness", value); // отсылаем в канал драйвера Сбер Салюта значение яркости лампы.
break;
}
});

IR.AddListener(IR.EVENT_TAG_CHANGE, Sber, function(name, value){ //прослушиваем команду от драйвера Сбер Салюта.
switch (name) {
case "Лампа:On/Off": //если изменение прошли в теге лампы, начинаем выполнять действия.
if (value == 1){ //при отправке команды от Сбера на включение, в теге появится 1. Modbus.Set("On/Off", 1);//передаем команду от Сбера устройству 1 - включение.
}
if (value == 0) { //при отправке команды от Сбера на выключение, в теге появится 0. Modbus.Set("On/Off", 0);//передаем команду от Сбера устройству 0 - выключение.
}
break;
case "Лампа:Brightness":
Modbus.Set("Brightness", value); // передаём в команду от Сбера устройству значение яркости лампы.
break;
}
});

Загрузка проекта в iRidium Cloud и на сервер.

  1. Авторизируйтесь на сайте iRidium.

  2. Загрузите серверный и связанный с ним панельный проект на облако iRidium cloud.

Сбер1.png

  1. На вкладке Users and Panels добавьте в проект конечного пользователя.

Сбер6.png

  1. Запустите iRidium server.

  2. Зайдите в веб-интерфейс сервера, набрав в адресной строке браузера:

IP-адрес сервера:8888

(Если iRidium server запускается на том же компьютере, на котором он настраивается, то наберите:

127.0.0.1:8888)

  1. Наберите пароль доступа по умолчанию 2007. Нажмите кнопку "LOGIN".

Alexa_web01.png

  1. Найдите вкладку Cloud / Projects .

Alexa_web02.png

  1. Загрузите проект из облака на сервер, нажав кнопку "CLOUD SYNC" и затем "Download" напротив нужного проекта.

Сбер2.png

Важно

Сбер Салют работает только через iRidium cloud, поэтому он не сможет работать, если проект будет загружен на сервер через iRidium transfer.

Настройка Салюта

  1. Установите приложение Салют на мобильное устройство и авторизуйтесь в нем;

  2. На главной странице нажмите иконку с плюсом Добавить ;

Сбер3.png

  1. Нажмите Устройства других производителей ;

Сбер4.png

  1. Выберите навык iRidi и нажмите Привязать аккаунт ;

Сбер5.png

  1. Вы попадёте на форму регистрации на сайте iRidium mobile. Введите данные учётной записи интегратора или конечного пользователя, с которым поделились связанным панельным проектом, и нажмите Login .

Сбер7.jpg Сбер8.jpg

  1. В выпадающем списке выберите продукт i3pro и объект, с которым будет работать Сбер. Нажмите Link .

Сбер9.jpg

  1. Далее в выпадающем списке выберите драйвер Sber Salut .

Сбер10.jpg

  1. Разместите устройства в комнаты, после этого вы сможете ими управлять.

Сбер11.jpg Сбер12.jpg

  1. Если вы скорректируете проект, то не забудьте загрузить его в iRidium cloud, затем обновите его в iRidium server. После этого обновите список устройств в приложении Сбер Салют .

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

Проект для сервера можно запустить на том же компьютере, на котором производится работа в iRidium studio. Но проект следует загружать только через iRidium cloud.

Произносите голосовые команды в SberPortal или в приложении Сбер Салют и ассистент передаст команды в iRidium server, и тот, в свою очередь, исполнит команды согласно заданной логике.

примечание

Вы может использовать любой эмулятор сервера Modbus TCP, например, бесплатный Modbus PLC Simulator для тестирования проекта.