Вывод информации с устройства GSM-Универсал на рабочий стол смартфона (андроид) в виде виджета.


Интеграция охранного устройства со смартфоном является обязательной особенностью любой современной охранной системы.
Все управление подобными системами осуществляется со смартфона, при этом уведомления о всех действиях и наглядность информации являются неотъемлемыми элементами системы.
Реализация поддержки push-уведомлений рассмотрена в отдельном материале.
Ниже описывается один из вариантов удобного вывода информации на рабочий стол смартфона в виде виджета.

1. Штатными средствами это не предусмотрено, поэтому используем стороннее ПО - достаточно известный интегратор AnyBalance.
Вот цитата из его описания: "AnyBalance - это приложение для Андроид, которое позволяет любую информацию показывать на экране в виджете. В отличие от других аналогичных программ, AnyBalance не сама запрашивает информацию для отображения. Эта информация поступает ей от специальных провайдеров, которые являются плагинами AnyBalance и написаны на JavaScript".
2. Программа - платная, полноценных взломов вы не найдете. Стоит около 50 гривен.
3. К AnyBalance написаны сотни разных провайдеров, прежде всего это банковские услуги, счета мобильных операторов etc. У программы продуманный гибкий дизайн, широчайшие возможности кастомизации.
4. Я написал провайдер под GSM-Универсал, в данный момент он позволяет выводить в виджет такие параметры:
- температуру с датчиков 1...5;
- температуру модуля;
- уровень GSM-сети;
- баланс;
- дату.
Всего - 9 параметров.
В планах - вывод состояния 16-ти выходов.
5. Провайдер поставляется в "полуготовом" виде, т.е. нужно его чуть подкорректировать для своих потребностей в соответствии с описанием ниже. Для этого необходимо чуть потратить времени, зато можно все настроить гибко и индивидуально.
6. Установка:
- качаем архив, распаковываем;
- открываем для редактирования файл anybalance-manifest.xml, между строками <counters> и </counters> есть 9 строк, нужно их откорректировать, например в строке
<counter id="Temp1" name="Температура 1 " prefix="Ваше короткое название для Температура 1 " units="°"/>
нужно заменить "Ваше короткое название для Температура 1 " на понятное, короткое и удобное для вас описание места, где установлен температурный датчик №1 (например, "Улица" или "Спальня"). Это описание будет отображаться на виджете.
И так для всех 9 строк. Если нет какого-то датчика - эту строку не трогаете.
- открываем для редактирования файл main.js, ищем строку

var info = AnyBalance.requestGet('http://uni-gsm.ru/uni_anybalance_all.php?imei=ВАШIMEI');

Вместо ВАШIMEI прописываем реальные цифры IMEI вашего прибора.
- запаковываем эти отредактированные файлы обратно в zip-архив uniall.zip;
- помещаем этот архив на SD-карту смартфона в папку AnyBalance;
- заходим в программу AnyBalance -> Меню -> Установленные провайдеры -> Провайдер из файла -> Выбираем файл Uni-GSM-ALL v.2.2.16, устанавливаем;
- заходим в Установленные провайдеры -> кликаем на Uni-GSM-ALL -> отображаемые счетчики. Кликаем на любой счетчик и проверяем, что доступны все 9 счетчиков;
Все, закончили установку провайдера.
Далее стандартно для андроида выводим виджет на рабочий стол. Выбираем виджет от AnyBalance размером 1х2. Будет меню начальной настройки виджета, тут рекомендуется:
- эккаунт: Uni-GSM-ALL
- тип виджета: универсальный HTML;
- сохраненный шаблон - пользовательский шаблон;
- HTML-шаблон: вставляем туда через буфер обмена такой текст:
<table> <tr><td ifavailable="0"> (@0)<br/> (@1)<br/> (@2)<br/> (@3)<br/> (@4)<br/> (@5)<br/> (@6)<br/> (@7)<br/> (@8)<br/> (@9)<br/> </td></tr> </table>
- размер текста - 12sp
- внешний вид виджета:
    -отступ виджетов - отсутствуют;
    -убираем галочки из показать иконку провайдера и показать название эккаунта;
Все. Задаете интервал обновления виджета (это в настройках виджета или свойствах провайдера). Если какие-то из 9-ти выводимых параметров не нужны, скрываем их в настройках виджета. Далее по вкусу - меняем размер виджета, прозрачность, размеры текста. Для каждого параметра можно дополнительно выводить изменение величин за запрос, за день, за месяц, можно по-иному форматировать вывод в HTML-шаблоне. В общем, там все можно подстраивать для себя, нужно только почитать документацию.

Ссылки:
1. Главная веб-страница AnyBalance: https://github.com/dukei/any-balance-providers/
2. Описание форматирования HTML-шаблона: https://github.com/dukei/any-balance-providers/wiki/HtmlWidget

Примеры с картинками:
1. Виджет 1х2 с семью выводимыми параметрами (в том формате, что описан выше):



2. Виджет 1х2 с тринадцатью выводимыми параметрами + продвинутое форматирование (значения выделены синим цветом, это можно самому сделать, если хорошо изучить доки для AnyBalance:



Из полезных советов - AnyBalance имеет плагин для Tacker-а. Например, я через Tacker сделал автоматическое обновление виджета через 5 секунд после каждого включения экрана, но не чаще, чем в 5 минут. Это - чуть гибче, чем обновление провайдера стандартными интервалами AnyBalance.


Контакты: izograv@gmail.com или на форуме