Инструкция по использованию PUSH уведомлений

Краткая предистория
Я имею централь GSM-Универсал с видеомодулем, более 4-х камер наблюдения. В 2013 г. украинские операторы мобильной связи стали повсеместно вводить NAT. Из-за этого доступ к камерам оказался практически заблокированным. В течение 2013 года, из-за этого, пришлось отказаться от МТС - перешел на Лайф, а затем, в ноябре 2013, отказаться и от Лайфа. Выбор был невелик: или переходить на контракт КС (80 грн/мес с услугой выделенный IP) или на 3mob (там пока нет NAT, все IP "белые"). Или оставлять "как есть" и ждать, пока разработчити Потенциала что-то придумают (обещали в начале 2014 г, но до сих пор так и не сделали). Поскольку централь у меня стоит на удаленном объекте, ее главнейшее задание состоит не столь в обнаружении нарушений и отпугиванпии нарушителей, сколь в удаленном исчерпывающем информировании меня о характере опасности (т.к. ехать туда не так быстро). Поэтому вариант оставить "как есть" и ждать отпал сразу. Конечно, спокойнее было бы перейти на контракт КС, но, по ряду причин, для меня это вылилось бы не в 80, а в 120 грн ежемесячно (с учетом второго номера в сети киевстар на личном телефоне). Выбор пал на 3mob, но этот оператор "заточен" в основном под интернет, поэтому пакеты голосовых и смс-услуг у него не очень удобные и дорогие. Поэтому было решено "экспериментировать так экспериментировать" и отказаться от, казалось бы, невозможного: голоса и смс. Т.е. в управляющем телефоне не ставить симку 3mob, а оставить другого оператора (в моем случае на двухсимочнике это МТС и КС). Попытаться: - голосовые DTMF-команды заменить на управление через интернет со смартфона. - смс заменить на PUSH-уведомления на смартфон.

Что из этого вышло 1: замена головосого управления
Не знаю, как кто, а я DTMF-команды использую в 99% случаев для взятия/постановку на охрану и управления выходами. 1% приходится на удаленную перезагрузку, включение/отключение зон, удаленное выполнение USSD-команд.
1. Взятие/постановка на охрану: раньше выполнялась только при помощи DTMF. Все удалось передалать под управление "пустым звонком", используя "автоматическое управление режимом охраны". У меня 3 охранные группы, используя разные комбинации "И" и "ИЛИ" достаточно быстро была настроена полная замена DTMF (к слову, пустой звонок оказался гораздо удобнее).
2. Управление выходами: ранее тоже выполнялось исключительно DTMF. При интернет-управлении есть 4 инструмента:
-родной конфигуратор (работает только в среде windows);
-сайт Потенциала (но там какие-то, как пишут "временные", проблемы с DNS);
-клиент от Потенциала под Андроид;
-прямое управление через любой браузер с любого устройства, подключенного в интернету.
Первый вариант отпал сразу (т.к. я привык управлять со смартфона), второй отпал из-за описанных проблем с DNS, клиент под Андроид подходил, но больно там много лишних нужно жать кнопок, пока доберешься до желаемого. Поэтому был выбран последний вариант: на рабочем столе смартфона было создано штук 20 закладок типа "Включить выход 12" и "Выключить выход 12" (и так для всех выходов, которыми нужно управлять). Этот вариант оказался самым рациональным по критерию "как быстрее всего достичь результата при минимальном нажимании на кнопки".
Теперь несколько слов про надежность управления выходами через интернет: все знают, что в теории голосовая связь работает надежнее, чем GPRS-сессии. Случаи, когда невозможно дозвониться на централь, очень редки, а интернет на централи сбоит куда чаще.
На практичке так и оказалось: при управлении через инет бывают моменты, когда невозможно передать команду. Не часто, но бывают. В 99% случаем после такой неудачи нужно подождать 1-2 минуты и попробовать снова - результат будет положительным. А если нет - ну никто не мешает использовать DTMF.
Итоговое сравнение управления через DTMF и через интернет:
- управление через DTMF надежнее, работает на любом GSM-телефоне. Минуса два: а) нужно (точнее, крайне желательно), чтобы симка в телефоне и приборе принадлежали одному и тому же оператору; б) достаточно часто DTMF неверно воспринимаются, например было передано *875, а воспринято как *75
- управление через интернет не зависит от родной/неродной сети, от роуминга/не-роуминга, т.е. будет работать хоть с Северного полюса, бы бы там интернет. Исключены ситуации неправильного распознавания команд. Минусы: а) нужен телефон/смартфон/планшет/компьютер, подключенный к интернет; б) через интеренет можно управлять только выходами; в) менее надежно с точки зрения возможности "достучаться" до прибора.
Работа DTMF в сети 3mob
Оказывается, что по умолчанию DTMF не работают. Чтобы заработали, нужно обязательно на централи включить аппаратное декодирование. И, если централь в сети 3mob, а ваш телефон в другой сети, будьте готовы, что могут быть некоторые проблемы с корректным распознаванием DTMF. Но мы же в данном случае решили использовать DTMF крайне редко, а управлять через интернет, поэтому это не должно нас особо пугать.
Что из этого вышло 2: замена смс на PUSH-уведомления
Централь у меня уже 3 года, за это время сменилось несколько тарифных планов. И каждый раз возникала проблема с этими смс - дороговаты они обходились. В день у меня иногда бывало до 60 смс, не во всяком тарифном плане или смс-пакете есть такое количество. Т.е. приходилось эти смс отключать с целью экономии. Пока я не узнал про PUSH-уведомления. Оказывается, проблема с дороговизной смс не только у меня, куча народу страдает. И именно для замены смс (точнее, как альтернативу смс) придумали PUSH-уведомления. Грубо говоря компании-разработчики мобильных операционнах систем Apple, Google и Microsoft решили не зависить от "капризов" того или иного оператора сотовой связи, а сделать канал передачи информации на мобильное устройство пользоватея "напрямую", через универсальный проводник - интернет. Ну и сделать это так, чтоб было быстро, удобно, бесплатно, надежно, чтоб не разряжалась батарея, т.е. экономно.
Детально:
1. PUSH уведомления - технология рассылки коротких уведомлений на смартфон/планшет, для работы нужен включенный интернет (2g-3g или Wi-Fi) на смартфоне/планшете.
2. При выключенном интернете на смартфоне/планшете PUSH не ходят, при его включении все накопленные уведомления будут доставлены.
3. PUSH работают под IOS и Android, для их работы используются специальные сервисы Apple APNS или Google Андроид GCM (Google Cloud Messaging). Т.е. работа PUSH не зависит от конкретного мобильного оператора или роуминга, это возможность операционной системы смартфона.
4. Возможности применения PUSH в Универсале:
- дополнительное к смс информирование о любых событиях (т.к. ходят быстрее);
- взамен смс (т.к. бесплатны);
5. Дополнительные возможности PUSH в Универсале:
- гибкая настройка (гибче, чем для смс) - пользователь сам указывает, для каких именно событий использовать PUSH;
- для управления PUSH не нужен конфигуратор или доступ к централи - все конфигурируется на сайте мониторинга;
- 3 стратегии настройки PUSH: для всех событий; для избранных событий; для всех, исключая указанные события;
- возможность настройки индивидуальных звуков под разные события (что-то типа индивидуальной мелодии на контакты в телефоне);
- возможность настройки индивидуальных приоритетов под разные события (например, ночью все события звучат тихо, а события тревоги звучат громко);
Результаты:
Будущее - за PUSH-уведомленими. Вначале это была экзотика, т.к. не у всех были смартфоны (данная статья писалась в 2013 году.) По состоянию на конец 2015 г. смартфоны практически вытеснили обычные телефоны, на всех смартфонах есть интернет, постепенно смс начали отмирать, уступая дорогу PUSH-уведомлениям. Яркий пример - Приватбанк: там давно поняли эту тенденцию и все больше их клиентов пользуются мобильным приложением Приват24, в котором работают PUSH-уведомления (Приват приведен не в качестве рекламы, а как показатель отношения у современным технологиям крупнейшего банка Украины). PUSH действительно могут полностью заменить смс, т.к. работают стабильно и надежно. Можно использовать разные "каналы-поставщики" PUSH одновременно (аналог для смс - доставка смс через двух разных операторов), что в 2 раза повышает надежность. PUSH значительно сократили мое время при эксплуатации централи, т.к. есть возможность настройки индивидуальных звуков на разные события. Второй яркий пример - viber или WhatsApp, они ведь также используют технологию PUSH-уведомлений. Если коротко - никто смс уже не использует, это отстой, неудобно, дорого, неэффективно, устаревшая технология.


Как начать пользоваться PUSH?
Мы не работаем напрямую с Аpple APNS или Google Андроид GCM (это дорого), а используем уже существующие сервисы-посредники, на данный момент они бесплатны (примечание: по состоянию на конец 2015 г. бесплатна только ICQ, клиент от pushover.net платный, но недорого).
Если у вас есть андроид или IOS-устройство со включенным интернетом, я рекомендую вначале попробовать, что это вообще такое, займет не более 5 минут.
Провайдер 2: pushover.net
Шаги:
- заходите туда и регистрируетесь;
- качаете мобильный клиент на свое мобильное устройство, ссылки там приведены;
- в клиенте вводите регистрационные данные;
- с сайта отправляете себе тестовое сообщениие: Send a Notification
- и так несколько раз, оцениваете быстроту работы, интерфейс клиента, в общем решаете для себя, подходит оно вам или нет;
- если подходит, у нас на страничке ставите галку напротив "Включить поддержку PUSH уведомлений провайдера 2" и в поле "Provider2 Token (Your User Key)" вводите токен из поля Your User Key из личного кабинета на pushover.net
- тестируете работу: в поле "Тестирование работы уведомлений" вводите любой из имеющихся кодов событий, жмете кнопку "Отправить уведомления" - система сэмулирует сработку данного уведомления и пришлет вам необходимую информацию через PUSH или e-mail, на страничке будет подробный лог выполнения операций, обработки личных кодов и кодов исключения.

Провайдер 1: когда-то тут был провайдер jeapie.com, в августе 2015 г. они прекратили свою работу. Поэтому вместо него введена обычная аська (ICQ). Для мобильных устройств есть куча-куча клиентов, лично я на Андроиде рекомендую использовать Mandarin (проверен на практике 2-х лет, проблем нет). Инструкцию не даю, аська штука очень известная, от вас требуется только ваш номер аськи. Кто не пользуется аськой - вот ссылка, по которой можно запустить web-ICQ клиент и выполнить все необходимые операции (включая регистрацию) с любого браузера.
Зачем 2 провайдера?
Для надежности, охранная система все же. Это как смс через 2-х разных операторов - надежность проктически 100%.

Рекомендую использовать pushover.net, т.к. у него есть 2 уникальные возможности:
- можно использовать индивидуальные звуки на разные события (классная штука! Например, на тревогу - резкий длинный звук, на включение выходов - что-то другое, на постановку/снятие с охраны - что-то третье и т.д.);
- можно задавать PUSH-уведомления с повышенным приоритетом (для таких уведомлений всегда будет громкий звук, независимо от того, как настроены текущие регулировки громкости на смартфоне/планшете; например, для тревоги ночью, когда смартфон в беззучном/тихом режиме).

Добавление от 22.12.2015 г.
Произошло 2 события:
- пуш-уведомления от pushover.net на операторе MTS стали ходить неудовлетворительно - большая задержка. Т.е. лежат рядом 2 телефона - на Киевстар пуши от pushover приходят мгновенно, на МТС - с задержкой. Причины непонятны, но опытным путем проверено и подтверждено, что именно на МТС (без разницы, 2G или 3G), наблюдаются проблемы.
- я открыл для себя велосипед - голосовую озвучку пуш-уведомлений на смартфоне. Мне это очень понравилось (а если честно - я в полном восторге). Раньше (даже на pushover.net, с его разными звуками на события) для проверки, что именно означает звук, нужно было включать экран и входить в клиент. Теперь же - приятный женский голос озвучивает все события. Пример прямо сейчас:
- пришли 3 пуша, по звукам я определил, что это нарушение зон, но в дополнение к этому голос произнес, нарушение каких именно зон произошло.
Очень удобно, экономит время, нужно делать меньше телодвижений. Рекомендую попробовать.
В связи с этим в интерфейс альтернативного сервера внесены изменения: в "настройках" добавлено "Индивидуальная озвучка колонок таблицы".
Смысл этого такой:
Значения в "Индивидуальные обозначения колонок таблицы" ранее использовались в заголовках колонок таблицы. Они же использовались во всех уведомлениях - пушах и e-mail. Чтобы не запутаться, я для себя в этих полях использовал очень подробное описание. Например, у меня для одной из колонок было такое: "Выход N для включения питания наружного освещения, через диоды включаются выходы N1, N2, N3, настроена программная инверсия, на выходе N4 настроена аппаратная инверсия на реле".
(только не нужно смеяться: у меня действительно сложная система управления, 32 выхода, 16 зон, куча закольцовок через диоды, все это очень легко забыть и запутаться, поэтому подробное описание нужно обязательно).
Но для звуковой озвучки такое подробное описание просто неприемлемо. Поэтому и было введено новое поле "Индивидуальная озвучка колонок таблицы". Принцип его работы:
- если для описания конкретной зоны (выхода) в "Индивидуальной озвучке колонок таблицы" нет значения, то берется значение из "Индивидуальных обозначений колонок таблицы";

Пример: для выхода 3 в "Индивидуальных обозначений колонок таблицы" задано описание "Управление котлом отопления", в "Индивидуальной озвучке колонок таблицы" для выхода 3 не задано ничего. Тогда при включении выхода 3 будет такое уведомление:
Выход 3 (Управление котлом отопления) включен
.

- если для описания конкретной зоны (выхода) в "Индивидуальной озвучке колонок таблицы" есть значение, то берется именно это значение для передачи через пуш-уведомления и e-mail cсообщения.

Пример: для выхода 3 в "Индивидуальных обозначений колонок таблицы" задано описание "Управление котлом отопления", в "Индивидуальной озвучке колонок таблицы" для выхода 3 задано "Управление отоплением". Тогда при включении выхода 3 будет такое уведомление:
Выход 3 (Управление отоплением) включен
.


Инструкция по звуковой озвучке пуш-уведомлений на устройстве под управлением Андроид:
1. Нужен андроид версии 4.4.x (KitKat) или старше (т.к. именно с этой версии действует стандарт API взаимодействия программ со строкой уведомлений).
2. На устройстве должен быть установлен синтезатор речи (желательно от гугла, т.к. там нет проблем с озвучкой русского языка). Проверка синтезатора: Настройки - Язык и ввод - Голосовой ввод - Синтез речи - Синтезатор речи Google (в его настройках Голосовые данные - Русский (Россия).
3. Программа Tasker (можно найти ломанную, можно и купить (1,76$ для Украины).
4. Программа Notification Listerner - она free, премиум функции не обязательны, хотя и можно купить, цена для Украины 1$.

Краткий смысл операций по настройке задачи в Tasker (ниже описание для перехвата пуш-уведомлений для ICQ клиента Mandarin):
- в профилях, через плагин Notification Listerner, создается профиль на событие прихода уведомления от Mandarin;
- на этот профиль вешаем задачу звуковой озвучки уведомлений от Mandarin.

Вуаля, все работает. Без проблем, гарантия 100%, правда я сижу на лолипопе. Для pushover - все аналогично.
Ниже - пример моего профиля и задачи, можете скачать, импортировать в tasker и посмотреть детально, если что не понятно.
профиль
задача
ps: написано для людей, кто более-менее разбирается в Андроид и работал с Таскером. Для новичков - это все звучит как абракадабра, я понимаю. Разбирайтесь, эта задача была не очень сложная, но и не тривиальная, я сам разбирался с нюансами параметров этой задачи несколько дней. Дополнительная информация есть на форуме.


Если есть вопросы или пожелания - лучше писать мне на мыло: izograv@gmail.com