Материал из for iRidium developers
Перейти к: навигация, поиск
Other languages:
English • ‎русский

Push уведомления

Инструкция по отправке Push уведомлений с iRidium Server на iOS, Android устройства с приложением i3 pro

читать cправочник по JS методам Push

смотреть видео-инструкцию

скачать пример


Как это работает?

iRidium Server может уведомить пользователя о любом событии в системе автоматизации, которое воспринимает. Один из способов уведомления - отправка Push уведомления на смартфоны и планшеты пользователя, где установлено приложение i3 pro. Приложение i3 pro может быть закрыто, необходимо только подключение к интернету, без которого Push уведомление не будет получено адресатом.

iRidium Server отправляет сайту iRidium Mobile команду "уведомить панели управления". Сайт iRidium mobile перенаправляет эту команду в фирменные сервисы компаний Apple и Google (в зависимости от ОС панелей управления), а сервисы отправляют уведомления на смартфоны и планшеты пользователей объекта автоматизации.

HowPushWorks.png

Чтобы понять, какие именно смартфоны и планшеты должны получить уведомления, сайт iRidium Mobile должен видеть их в списке активных панелей управления.

iRIdium Server отправляет уведомления не каждому устройству отдельно, а условным Группам устройств. Настроить Группы можно в объекте iRidium Cloud, вкладка "Пользователи и проекты". Подробно - читайте далее.


! Без iRidium Server отправить Push уведомление нельзя

! При получении SIP вызова отправить Push уведомление нельзя, т.к. iRidium Server еще не поддерживает работу с драйвером SIP

! Если панель управления не подключена к интернету, Push не придет

! Иногда Push уведомления не доходят до адресата, обязательно обеспечьте резервирование важных сообщений, например, через СМС. Это связано с тем, что фирменные сервисы Apple и Google не имеют контроля доставки Push


Как настроить отправку и обработку Push

Любое событие iRidium Server можно использовать, чтобы отправить Push уведомление:

  • Команда с панели управления или web-интерфейса сервера, инициированная пользователем
  • Изменение состояния оборудования системы автоматизации
  • Изменение даты, времени и других параметров окружения, непосредственно не связанных с оборудованием и действиями пользователей


Отправить Push уведомление можно только из iRidium Server, на смартфон или планшет с i3 pro. Для отправки уведомления есть специальная команда, настраиваемая в редакторе JavaScript серверного проекта. Рассмотрим способы вызова этой команды при различных событиях на iRidium Server:


1 Создайте новый проект для iRidium Server в iRidium Studio (File > New > New Server Project...)


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

AddChangedVarsForPush.png
  1. Чтобы уведомлять о нажатии кнопки на панели управления, добавьте в серверный проект виртуальную команду: Virtual > Channels > (+). Будем менять состояние переменной с панели управления и использовать это изменение как сигнал к отправке уведомления
  2. Чтобы уведомлять об изменениях в системе автоматизации, настройте в проекте драйверы для оборудования системы. Изменения фидбеков драйвера мы будем использовать как сигналы к отправке уведомлений
  3. Чтобы уведомлять об изменении даты и времени (или других системных данных), достаточно обратиться к параметрам системы, дополнительных каналов создавать не нужно


3 Откройте окно редактора [JS] в верхней панели инструментов Studio. Создайте новый файл скрипта: (+) > New Script, и настройте в нем отправку уведомлений при различных событиях. Рассмотрим три варианта:

3.1. Отправить уведомление с панели управления или из web-интерфейса сервера

посмотреть видео

Отправка уведомления в данном случае реализуется с помощью скрипта:

//********** send push when User press a button in i3 pro  **********
 
function push_from_i3(type, name, value)
{
   IR.SendPush(value, "info", 1); // send notification (text of notification, hiden data, group of panels)
}
AddJStoServerForPush.png
Чтобы скрипт сработал, нужно привязать созданную в скрипте функцию push_from_i3 к виртуальной команде сервера, как модификатор. Для этого выберите виртуальную команду сервера (в примере мы создали команду "Push from Panel"), откройте ее свойство Script Modifier и выберите в ней функцию push_from_i3:
ModifyFunctiontoVirtChannel.png

Теперь любая строка, записанная в "Push from Panel", превратится в Push уведомление и будет отправлена сервером на пенели управления.

3.2. Отправить уведомление, если изменилось состояние драйвера

Отправка уведомления в данном случае реализуется с помощью скрипта:

//********** send push when Feedback of driver changes  **********
 
var driver = IR.GetDevice("KNX"); // driver name
 
IR.AddListener(IR.EVENT_TAG_CHANGE, driver, function(name,value)
{
   if (name == "Address 1" && value == 1) // if the KNX feedback "Address 1" changed to 1
   {
      IR.SendPush("Back door opened!", "show backdoor camera", 1); // text of notification, hiden data, group of panels
   }			
});
AddJStoServerForPush1.png

Чтобы скрипт сработал, в канал обратной связи "Address 1" драйвера "KNX" должно прийти значение 1. Дополнительных действий со стороны пользователя не потребуется, отправка уведомления производится автоматически.

3.3. Отправить уведомление, если наступила выбранная дата

Отправка уведомления в данном случае реализуется с помощью скрипта:

//********** send push when it is some Date & Time  **********
 
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function (name, value)
{
   // conditions:
   if (IR.GetVariable("System.Date.MM_DD") == "03/14" && IR.GetVariable("System.Time.Hour") == 10 && IR.GetVariable("System.Time.Minutes") == 0) 
   { 
      IR.SendPush("Happy Birthday Mike!", "notification", 1); // text of notification, hiden data, group of panels
   }
});
 
IR.SubscribeTagChange("System.Time.Minutes"); // subscribe on minutes to check condition each minute
AddJStoServerForPush2.png

Скрипт срабатывает каждую минуту и проверяет условие - наступили ли указанные дата и время. Реакцию на изменение параметров операционной системы обеспечивает глобальный слушатель и подписка. Уведомление будет отправлено, когда выполнятся условия - совпадет месяц/день и время, выбранное как момент для отправки уведомления


4 Cоздайте проект для панели управления: нажмите правой кнопкой на серверный проект > Create Panel Project.
В созданном проекте найдите драйвер iRidium Server и укажите IP адрес (Host) устройства, на котором вы планируете запустить iRidium Server, иначе панель управления не сможет к нему подключиться.
Чтобы получать уведомления, i3 pro не нужны специальные настройки, пока приложение закрыто или свернуто, но мы настроим дополнительные возможности обработки уведомлений (это не обязательно):

4.1. Настройте обработку Push открытым приложением i3 pro (РЕКОМЕНДОВАНО)

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

По умолчанию, окно Push уведомления не всплывет, и звука уведомления не будет, если приложение i3 pro уже запущено и открыто на панели управления. Но, в открытом приложении тоже может быть необходимо обрабатывать события сервера. Поэтому, для обработки Push открытым приложением, добавим в проект для панели управления (*.irpz) скрипт:

//********** Play sound and display text when notification received by the opened app **********
 
IR.AddListener(IR.EVENT_RECIEVE_PUSH_NOTIFY, 0, function(text, data, group)
{
    IR.PlaySound('Alerting.wav',0,50); // play sound
 
    IR.GetPage("Page 1").GetItem("text").Text = text; // display text of notification
    IR.GetPage("Page 1").GetItem("data").Text = data; // display  hiden data that can be used in JS
});
AddJStopanelForPushProcessing.png

В этом примере, при получении Push, приложение воспроизведет звук и запишет полученные из уведомления данные на графические элементы в проекте.

4.2. Только для п. 3.1. Настройте отправку уведомлений по нажатию кнопки в i3 pro

Применимо только при наличии в серверном проекте скрипта, реализованного в примере 3.1 "Отправить уведомление с панели управления или из web-интерфейса сервера "

Чтобы действия пользователя инициировали отправку уведомлений, реализованную в 1м примере скрипта для сервера, необходимо управление виртуальной переменной сервера с панели управления. Настройка не относится непосредственно к работе Push, здесь мы только записываем строку в виртуальную переменную сервера. Сервер обрабатывает строку и прерващает в Push уведомление для всех панелей управления.

Создайте графический элемент - кнопку (Button) или поле ввода (Editbox), которое будет отправлять текст вашего уведомления на сервер. Найдите в драйвере "iRidium Server" команду "Push from Panel" и перетащите её на графический элемент. В диалоге привязки команды выберите Action: Send Token, в поле значения: свойство .Text кнопки (или поля ввода). К полю ввода необходимо так же привязать команду Show Keyboard, чтобы по нажатию на поле ввода начать вводить данные с клавиатуры мобильного устройства.

DragCmdToChanneltoPush1.png
DragCmdToChanneltoPush2.png


5 Сохраните проекты для сервера и панели управления и загрузите в iRidium Cloud. Необходимо, чтобы оба проекта принадлежали одному объекту в облаке.

Push уведомления приходят только на устройства, проекты на которые загружены из iRidium Cloud (а не из Transfer)


6 Создайте Trial или коммерческую лицензию для объекта


7 Пригласите (активация, шаг 4) конечного пользователя в объект или используйте свой альтернативный email.

Панель управления, авторизованная как интегратор, не может получить уведомления, т.к. устройства интегратора не учитываются в списке получателей уведомлений! Чтобы проверить, работает ли уведомление, вам нужно войти в приложение i3 pro с помощью аккаунта конечного пользователя


8 Настройте Push Groups - объединение пользователей по группам. В примере мы настраивали отправку сообщений в группу 1, поэтому именно группу 1 создадим в облаке:

AttachPushGroupX3.png

1. Пригласите в проект конечного пользователя, в "Пользователи и панели" нажмите "Poush Groups", чтобы настроить Группы, в которые войдет приглашенный пользователь

2. Создайте группу 1 (для нашего примера), выберите ей любое имя

3. Теперь группа привязана к пользователю, он получит отправленные Группе уведомления


9 Авторизуйтесь в i3 pro на вашем iOS, Android устройстве как конечный пользователь (активация, шаг 5.1), скачайте проект с обработкой уведомлений. Помните, что аккаунт интегратора нельзя использовать для проверки Push уведомлений!


10 Авторизуйтесь (активация, шаг 5.2) на сервере как интегратор, скачайте проект с обработкой уведомлений.

Если вы настроили скрипт из пункта 3.1, то тправить уведомление с произвольным текстом можно будет через web-интерфейс сервера: зайдите во вкладку "Channels&Feedback", выберите команду "Push from Panel" и введите текст, который хотите отправить. Сервер сформирует уведомление и оно появится на вашем iOS, Android устройстве


11 Все готово. Ваше мобильное устройство получит уведомление от сервера при срабатывании любого из настроенных событий. Отправляйте уведомления с панели управления, из web-интерфейса сервера, или следите с помощью уведомлений за изменением состояния оборудования, событиями даты и времени.

Пока приложение i3 pro на панели управления открыто и развернуто, вы не будете видеть всплывающее окно, а также не будет звука уведомления - для активного приложения их нужно настроить отдельно, см. пункт 4.2