Уведомление
Элемент Уведомление служит для отправки PUSH уведомлений на телефон. Уведомления могут отправляться через интернет даже если телефон не подключен к контроллеру.
Элемент Уведомление находится на вкладке Системные левой панели редактора. Щелкните мышкой в изображение кнопки и переместите ее на экран телефона. Что бы элемент не отображался его можно скрыть используя настройки.
Внимание. Элемент Уведомления является PRO элементом. В бесплатной режиме уведомления не будут отображаться.

Настройка

- Переменная. Указывается имя переменной которая будет привязана к кнопке. Имя задается по правилам именования переменных C++.
- Длина. Указывается размер буфера для хранения уведомлений. Чем больше буфер тем больше уведомлений контроллер может сохранить пока они не отправлены. Не указывайте размер буфера больше чем свободная оперативная память в контроллере.
- Способ отправки. Выберите способ отправки уведомлений. Читайте ниже какой способ отправки вам подойдет.
- Скрыть на экране. Установите признак если не хотите что бы элемент отображался на экране.
- Цвет. Цвет элемента.
- Цвет фона. Цвет кружка в котором отображается количество новых уведомлений.
- Цвет текста. Цвет которым отображается количество новых уведомлений.
Отображение
В интерфейсе уведомление будет отображаться в виде значка с указанием количества новых уведомлений. Можно изменить цвет, или полностью скрыть с экрана этот значок.
При клике на значок будет открыта история уведомлений. Историю уведомлений можно так же открыть через меню в правом верхнем углу.

В телефоне, если устройство поддерживает прием уведомлений, на кнопке устройства будет отображен значок уведомлений. При клике на этот значок откроется окно истории уведомлений даже если устройство в данный момент не подключено.
Данные
Переменная в структуре RemoteXY размещена в разделе комплексных переменных.
struct {
// complex variables
RemoteXYType_Notification notification_01;
} RemoteXY;
Описание работы
Текстовые уведомления отправляются в приложение на телефон и отображаются как обычное уведомление.
Тексты уведомлений помещаются в буфер и хранятся там пока не будут отправлены выбранным способом. Размер буфера для хранения уведомлений указывается в настройках элемента в редакторе графического интерфейса. При переполнении буфера, что бы освободить место для новых уведомлений из него будут удаляться более ранние уведомления. Если текст уведомления превышает размер буфера оно не будет отправлено. При рестарте контроллера не отправленные уведомления будут потеряны.
Для отправки уведомления используйте команды print() и send (), подробнее читайте ниже в разделе Методы. Методы отправки работают асинхронно, при вызове метода уведомление будет помещено в буфер. Уведомление будет отправлено когда для этого появится возможность, возможно будет отправлено сразу.
Не отправляйте уведомления в каждом цикле контроллера. Это приведет к быстрому переполнению буфера и вы не получите то что хотите. Отправляйте только уведомления информирующие о каком либо событии. Ваш код должен фиксировать события что бы избежать повторной отправки уведомлений.
Внимание. Не отправляйте уведомления в каждом цикле контроллера.
Способ отправки уведомлений
Отправка уведомлений происходит в зависимости от выбранной настройки Способ отправки.
Только себе при подключении
В этом случае уведомления передаются на телефон только когда приложение подключено к устройству. Уведомления передаются локально без использования сети интернет. Уведомления получает только тот телефон который подключился к устройству. На телефон будут переданы все уведомления из буфера которые еще не были получены ранее.
Используйте этот способ когда ваше устройство не имеет доступа к интернет.
Всем через Интернет
Это основной способ отправки уведомлений когда ваше устройство подключено к интернет. Устройство будет отправлять уведомления через интернет. Уведомления получают все телефоны у которых в приложении есть данное устройство. Уведомление будет получено даже когда приложение не запущено.
Вы не сможете выбрать этот способ отправки если выбранный вами способ связи с контроллером не подразумевает доступ в интернет.
Смотрите ниже особенности отправки уведомлений через интернет.
Всем через приложение при подключении
Этот способ отправки подразумевает что у вашего устройства нет доступа в интернет а уведомления будут отправлены через приложение при подключении к устройству, через интернет вашего телефона. При подключении к устройству будут отправлены все уведомления из буфера которые еще не были отправлены ранее. Уведомления получают все телефоны у которых в приложении есть данное устройство.
Метод можно использовать когда ваше устройство само по себе не имеет доступа к интернет, но оно постоянно подключено к телефону, например по Bluetooth или USB.
Смотрите ниже особенности отправки уведомлений через интернет.
Отправка уведомлений через Интернет
При отправке уведомлений через интернет контроллер должен хранить уникальный идентификатор и ключ. Что бы эти данные были доступны после сброса контроллера, они сохраняются в памяти EEPROM. Когда используется способ отправки через интернет, редактор интерфейсов сформирует код в котором будет подключена библиотека eeprom.h
Внимание. К сожалению не будут поддерживаться платы для которых нет стандартной библиотеки eeprom.h
Когда приложение первый раз подключается к контроллеру, оно считывает идентификатор контроллера и проверяет его на сервере. Если идентификатор отсутствует или ошибочный, приложение отправит в контроллер новый идентификатор и новый ключ. Если телефон в данный момент не имеет доступа в интернет, приложение не сможет настроить контроллер для отправки уведомлений.
Новый идентификатор и новый ключ будут сохранены в EEPROM. При сбросе контроллера идентификатор и ключ будут восстановлены из EEPROM и контроллер сразу сможет отправлять уведомления.
Ключ служит для шифрования сообщений. Ключ формируется один раз и хранится только в контроллере и на сервере уведомлений.
Внимание. Уведомления отправляются не чаще чем один раз в 5 минут.
Есть ограничения для отправки уведомления через интернет. Можно отправлять одно уведомления не чаще чем один раз в 5 минут. Отправляйте уведомления только о важных событиях. Если отправите несколько уведомлений сразу, тогда первое будет отправлено сразу, остальные будут сохранены в буфер и будут отправлены с интервалом в 5 минут.
Методы
Что бы отправить уведомление, используйте методы print() в любой последовательности, затем вызовите метод send ().
print (str) - добавить текст или значение к новому уведомлению. Работает аналогично функции print() для последовательного порта в Arduino.
println (str) - добавить текст или значение к новому уведомлению и начать новую строку. Работает аналогично функции println() для последовательного порта в Arduino.
send () - отправить уведомление. Можно не вызывать данную функцию, она автоматически вызывается при завершении цикла.
Примеры исходного кода
Отправить уведомление
RemoteXY.notification_01.print ("Hello world");
RemoteXY.notification_01.send ();
Отправить значение в уведомлении
int temp = calcTemp ();
RemoteXY.notification_01.print ("Temperature is ");
RemoteXY.notification_01.print (temp);
RemoteXY.notification_01.print (" degrees Celsius");
RemoteXY.notification_01.send ();









English