Общая информация

Функционал службы

Служба может

  • Автоматически обновлять курсы валют на табло в соответствии с данными, загружаемыми с удалённого сервера.

  • Автоматически обновлять значения стоимости топлива на табло АЗС, загружаемыми с удалённого сервера.

  • Синхронизировать часы табло с часами сервера, на котором запущена служба.

  • Отправлять email-сообщения при потере и восстановлении связи службы с табло.

  • Воспроизводить звуковые сигналы на табло согласно расписанию.

Базовое описание логики работы службы

Во время запуска служба считывает конфигурационный файл и проверяет его корректность. Если в конфигурационном файле допущена ошибка, тогда служба завершает свою работу и выводит соответствующее сообщение. Если для работы службы не были предоставлены ключи, тогда она укажет какие ключи ей необходимы для работы и завершит своё выполнение.

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

Для установки курсов валют служба обращается к удалённому серверу, получает значения для всех курсов валют. Затем служба обращается ко всем табло из списка и устанавливает значения, необходимые для каждого из них. Например, в общем наборе значений валют могут присутствовать 5 различных валют, а у табло будет установлено 2 из них. В этом случае служба установит необходимые значения курсов валют на данное табло.

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

Аналогичная логика применяется и для установки значений на табло АЗС.

Типы источников данных для курсов валют

Служба может получать информацию из официального источника Центрального Банка РФ, JSON-документа, доступного по протоколу HTTP, либо поставлять произвольные данные.

Центральный банк РФ

Служба поддерживает данные, получаемые со стандартного источника данных о валютах Центрального банка РФ. Пример структуры XML-документа, который поддерживает служба представлен ниже.

<?xml version="1.0" encoding="utf-8"?>
<ValCurs Date="27.04.2016" name="Foreign Currency Market">
    <Valute ID="R01010">
        <NumCode>036</NumCode>
        <CharCode>AUD</CharCode>
        <Nominal>1</Nominal>
        <Name>Австралийский доллар</Name>
        <Value>51,4302</Value>
    </Valute>
    <Valute ID="R01020A">
        <NumCode>944</NumCode>
        <CharCode>AZN</CharCode>
        <Nominal>1</Nominal>
        <Name>Азербайджанский манат</Name>
        <Value>44,2862</Value>
    </Valute>
</ValCurs>

Данный формат можно использовать не только для получения данных от Центрального банка, но также и любой другой информационной системой, предоставляющей информацию в данном формате. Получение данных происходит по протоколу HTTP.

Для работы службы с данным источником необходимо обеспечить прямой доступ к сети интернет для службы.

JSON-документ

Пример структуры JSON-документа, необходимого для службы представлен ниже.

{
   "currencies":[
      {
         "name":"GBP",
         "sell_rate":102.3,
         "purchase_rate":83.7
      },
      {
         "name":"EUR",
         "sell_rate":81.4,
         "purchase_rate":66.6
      },
      {
         "name":"JPY",
         "sell_rate":66.0,
         "purchase_rate":54.0
      }
   ]
}

Для каждой валюты указывается курс покупки, продажи и название валюты.

В простейшем случае данный файл может быть размещён на веб-сервере, откуда будет получаться службой. Файл также может быть размещён на жёстком диске, тогда в качестве источника следует указать

Для интеграции с информационной системой (ИС) необходимо, чтобы ИС предоставляла данные в таком формате по протоколу HTTP.

Для правильного отображения крилицы, необходимо создать документ в кодировке, которую использует операционная система, на которой запущен сервис: Windows - windows-1251, UNIX - UTF-8.

Специализированный источник данных

Если в представленном выше списке нет подходящего варианта, тогда свяжитесь с нами, чтобы мы могли предоставить вам необходимое решение.

Случайные данные

Служба способна самостоятельно генерировать произвольные данные для отображения на табло. Данный режим подходит для первоначального тестирования конфигурации службы и связи между службой и табло.

Типы источников данных для расписания звонков

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

JSON-документ

Пример структуры JSON-документа, описывающего расписание звонков, приведён ниже.

{
  "alarms": [
    {
      "name": "First alarm",
      "value": "0 0/5 * * * ?"
    },
    {
      "name": "Second alarm",
      "value": "0 30 10-13 ? * WED,FRI"
    }
  ]
}

В данном примере указываются два расписания для звонков. Каждому из них присваивается имя, которое записывается в журнал событий при срабатывании. Само расписание описывается с помощью расширенного синтаксиса Cron. В Приложение 1. Описание расширенного формата Cron подробно описан синтаксис данных выражений.

В примере первое расписание указывает, что звонок должен звонить каждые 5 минут. Т.е. команды будут посылаться в 10:30, 10:35, 10:45 и т.д. Второе расписание указывает расписание звонков, которое сработает в 10:30, 11:30, 12:30 и 13:30 в каждую среду и пятницу.

Типы источников данных для топливных табло

Служба в настоящий момент может получать данные из JSON-документа, предоставяемого веб-службами или локально на компьютере. Также служба может предоставлять случайные значения.

JSON-документ

Пример структуры JSON-документа, предоставляющего значения для службы, приведён ниже.

{
  "petrols": [
    {"name": "92", "price": 36.6},
    {"name": "95a", "price": 38.4},
    {"name": "98", "price": 40},
    {"name": "дт", "price": 35.5}
  ]
}

В данном примере указаны цены для четырёх видов топлива. Для каждого вида топлива указывается цена. В качестве ключа необходимо использовать название топлива, которое можно выбрать в веб-интерфейсе.

Случайные данные

Служба способна самостоятельно генерировать произвольные данные для отображения на табло. Данный режим подходит для первоначального тестирования конфигурации службы и связи между службой и табло.

Файлы лицензии

Для каждого табло, указанного в файле основном файле конфигурации (config.json) должен быть предоставлен лицензионный ключ. Файлы лицензионных ключей должны располагаться в директории, указанной в основном файле конфигурации (параметр licencePath). Если для какого-либо табло в файле конфигурации отсутствует лицензионный ключ, то служба не будет работать с данным табло. Приобрести лицензионный ключ можно у производителя табло.

Запуск и установка

Служба может быть использована на любой платформе с установленной Oracle Java 8. Для установки и удаления службы на платформе Windows предоставляются дополнительные скрипты.

Службу можно запустить как обыкновенное приложение или как службу операционной системы. Первый вариант рекомендуется для первичной настройки приложения и проведения тестирования. Второй вариант рекомендуется для постоянного использования.

Для работы службы необходимо установить редакцию Oracle Java 8, совпадающую с версией операционной системы. В частности, для 64-разрядной версии ОС Windows необходимо установить 64-разрядную версию Oracle Java 8. Скачать установочный файл можно с официального сайта.

Для соединения с табло программа использует порты 5001 и 5002 протокола UDP. Также программа в некоторых случаях может посылать широковещательные пакеты (255.255.255.255).

Работа в режиме обычного приложения

Для запуска приложения обычным образом запустите файл BankService.bat в каталоге bin. Для завершения приложения просто закройте окно интерпретатора cmd.

Работа в режиме службы (для ОС Windows)

Для работы в режиме службы сначала разместите приложение на постоянное местоположение, например в каталог C:/BankService/, а затем уже производите установку и запуск службы. В случае перемещения из одного местоположения в другое корректная работа службы не гарантируется. Для управления жизненным циклом приложения как службой в поставку с программой входят следующие файлы.

  • install_service.bat позволяет зарегистрировать приложение в качестве службы ОС Windows. Важно! После регистрации службы нельзя перемещать каталог с приложением.

  • uninstall_service.bat позволяет убрать приложение из списка служб ОС.

  • start_service.bat позволяет запустить зарегистрированную службу.

  • stop_service.bat позволяет остановить работу зарегистрированной службы.

После установки служба становится доступна под названием LedBoardController и ей можно управлять штатными средствами ОС.

Пользовательский веб-интерфейс

Вместе со службой поставляется веб-интерфейс, который позволяет настроить следующие функции службы без её перезапуска:

  • Управлять списками групп и табло для групп.

  • Для каждой группы указать имя и файл с расписанием звонков.

  • Управлять файлами расписания звонков и их содержимым.

  • Управлять действиями табло: проигрывание звонков и изменение курсов валют.

  • Изменять содержимое информационной строки и режим ее отображения

Все остальные функции табло в настоящий момент необходимо настраивать путём редактирования файла настроек.

Веб-интерфейс службы работает на порту 8700. Если Вы запустили службу на данном компьютере, то веб-интерфейс доступен по адресу http://localhost:8700

Доступ к веб-интерфейсу

Для доступа к функциям веб-интерфейса каждый пользователь должен пройти процедуру авторизации.

Изначально система имеет двух пользователей, информация о которых представлена ниже.

web interface passwords

Веб-интерфейс предполагает работу с двумя типами пользователей: администраторы и пользователи.

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

  • добавлять, изменять или удалять пользователей и других администраторов из системы;

  • запускать и останавливать работу отдельных служб.

Структура веб-интерфейса

Веб-интерфейс сейчас состоит из следующих элементов.

Структура веб-интерфейса

Веб-интерфейс для редактирования файлов расписаний звонков

Данный редактор предоставляет возможность для редактирования файлов расписаний звонков, которые расположены в каталоге conf/schedules.

Список файлов расписаний звонков

Интерфейс для управления расписаниями звонками начинается со страницы со списком файлов.

Список файлов

На данной странице предоставлен список файлов, отсортированных по имени.

Для создания нового файла необходимо нажать на кнопку «Создать новый файл». После этого необходимо будет указать новое имя файла и он будет создан.

Для уже созданных файлов можно перейти на страницу редактирования, нажав на соответствующую кнопку в списке файлов.

Расписание звонков

Расписание звонков

Данная страница позволяет переименовывать файл, а также удалять его, если он более не нужен.

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

Для переименования файла введите новое название в поле «Имя файла» и нажмите на кнопку «Переименовать файл».

Для удаления файла нажмите на кнопку «Удалить файл». В настоящее время служба сразу же удалит файл без дополнительного предупреждения.

Логика работы со списком расписаний совпадает с логикой работы со списком файлов. Кнопка «Добавить звонок» добавляет новый звонок. Кнопка «Редактировать» позволяет перейти к интерфейсу редактирования звонка. Порядок звонков совпадает с порядком их расположения в файле.

Для файла расписания действуют правила наименования файлов. Имя может состоять из:

  • Символов от "A" до "Z" в любом регистре

  • Цифр

  • Специальных символов "-" и "_"

Редактор звонка

Редактор звонка

Данная страница позволяет настроить отдельный звонок: указать его имя и расписание.

Расписание можно ввести в виде Cron-выражения или отредактировать с помощью графического компонента. Для включения графического компонента используйте переключатель «Графический генератор». Данный генератор позволяет описать наиболее часто используемые расписания. Однако, более сложные выражения необходимо будет составлять вручную.

После включения графического редактора можно настроить каждый элемент расписания в отдельности: секунды, минуты, часы, дни месяца, месяцы. Для каждого из этих значений можно выбрать различные способы настроек: указать очерёдность или указать конкретные значения.

Веб-интерфейс для редактирования групп

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

Список групп

Список групп

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

Для создания новой пустой группы нажмите на кнопку «Создать группу».

Для редактирования группы нажмите на кнопку «Редактировать», расположенную в соответствующей строке.

Редактор группы

Редактор группы

На данной странице представлена информация о группе, элементы управления группой и список устройств, относящихся к данной группе. Информация о группе представлена в полях «Название группы» и «Расписание звонков». Для сохранения информации, содержащихся в этих полях необходимо нажать на кнопку «Сохранить».

Для возвращения к списку групп необходимо нажать на ссылку «Список групп» в панели навигации. При нажатии на эту кнопку все несохранённые данные о группе будут потеряны.

Для удаления группы используется кнопка «Удалить группу». Во время удаления группы из конфигурации будут удалены устройства, относящиеся к этой группе, а также файлы лицензий для этих устройств.

Список управления табло, относящихся ко группе настраивается также, как и список групп.

Интерфейс содержит поля для редактирования настроек всех устройств находящихся в данной группе:

Поля выполняющие установку значений для всех устройств в группе

Редактор табло

Общие настройки
Редактор устройства(обобщенный вид)

Страница редактирования табло содержит в себе информацию о табло. Эта информация записана в поля «Названия», «IP-Адрес» и «Файл лицезнии». Название и IP-Адрес устройства можно изменять при помощи полей для редактирования соответствующей информации. Для загрузки файла лицензии для данного устройства необходимо нажать на кнопку «Загрузить файл», после чего в диалоге выбора файла выбрать необходимый файл лицензии.

В сложных сетях может потребоваться указать отличный от стандартного IP и порт работы табло. Например: ПО установлено в Москве, филиал в Владимире и имеет 3 табло. В данном случае необходимо указать внешний IP данного филиала (например 213.167.192.0 (адрес в примере случайный)) и для каждого устройства прописать порт, на который будет происходить отправка/получение пакетов:
Табло A: 213.167.192.0:4500
Табло Б: 213.167.192.0:4501
Табло С: 213.167.192.0:4502
В сетевом оборудовании филиала необходимо прописать маршруты с внешнего адреса и порта до каждого табло:
Табло A: 213.167.192.0:4500 → 192.168.0.150:5001
Табло Б: 213.167.192.0:4501 → 192.168.0.151:5001
Табло С: 213.167.192.0:4502 → 192.168.0.152:5001
Табло работает только с портом 5001. Так же сетевое оборудование не должно препятствовать ответу табло.

После окончания редактирования информации об устройстве необходимо нажать на кнопку «Сохранить». При возникновении ошибок пользователь останется на данной странице и увидит сообщения ошибок. При отсутствии ошибок после нажатия на кнопку «Сохранить» пользователь перейдет на страницу редактирования группы.

При нажатии на кнопку «Удалить табло» из файла конфигурации будет удалена информация о данном устройства, а также будет удален файл лицензии для данного устройства.

Яркость
Секция яркость

Для табло можно указать уровень яркости вручную или поставить галочку в пункте «Автонастройка», чтобы табло автоматически настраивало уровень яркости.

Информационная строка(Бегущая строка)
Секция информационной(бегущей) строки

В поле «Содержимое информационной строки» вводится текст, который необходимо отображать в виде бегущей строки на табло. Если поле пусто, то берётся содержимое поля родительской группы. В поле «Режим отображения информационной строки» выбирается скорость движения бегущей строки.

JSON-документ в Информационной строчке

Так же поддерживается работа с JSON документом. Для этого необходимо указать полный путь к фалу JSON в поле "Информационная строка" Пример структуры JSON-документа, необходимого для службы представлен ниже.

{
    "mode":0,
    "data":["ITLINE","ITLINE-PRO"],
    "weather":"http://meteoinfo.ru/pogoda/russia/moscow-area/moscow",
    "rstr[0]":"#temperatureС°",
    "rstr[1]":"#humidity%"
}

Параметр mode устанавливает режим табло. Внимание! изменение режима табло может привести к временной неработоспособности. Данная функция рассчитана на многорежимные табло.

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

Параметр weather для ввода URL адреса на сайт Гидрометцентра России. Чтобы использовать данные, необходимо ввести в текст параметров data или rstr[] следующие теги:

Внимение! Данные с сайта описанным тегом weather обновляются при каждом опросе табло. Данная мера обеспечит наиболее своевременные данные с Гидрометцентра России. Так же дизайн сайта может быть изменен, потребуется обновление данного ПО.

#pressure - Атмосферное давление на уровне станции, мм рт.ст.
#temperature - Температура воздуха, °C
#temperature_int - Температура воздуха, °C (значение после точки не отображается)
#humidity Относительная влажность, %
#wind_speed - Скорость ветра, м/с
#cloudiness - Балл общей облачности
#visibility - Горизонтальная видимость, км

Если табло поддерживает работу с параметрами rstr[], то необходимо указать текст для данной строчки. Поля rstr[] энергозависимые, длиной 127 символов.

Для правильного отображения криллицы, необходимо создать документ в кодировке, которую использует операционная система, на которой запущен сервис: Windows - windows-1251, UNIX - UTF-8.

Управление валютами
Секция настроек валют

Управлять валютами можно, нажимая на кнопки «Добавить валюту» и «Удалить» в соответствующей строчки. Валюта выбирается в выпадающем списке.

Настройки удаленного управления
Секция настроек паролей удаленного управления

Через данную форму так же можно задать пароли для удаленного управления устройствами через ИК пульт с возможностями администратора или пользователя.

Настройка службы

Служба настраивается при помощи файла конфигурации config.json, расположенного в подкаталоге conf каталога службы. После редактирования файла конфигурации службу необходимо перезапустить, чтобы изменения вступили в силу.

Если в файле конфигурации были допущены ошибки, то служба не запустится. Информация о конкретной ошибке будет выведена либо на стандартный поток вывода, либо в файлы startup.out.log и startup.err.log. Эти файлы создаются в подкаталоге logs, из которого запускается служба.

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

  • 100 — Не указан путь к файлу конфигурации.

  • 101 — Не удалось прочитать файл конфигурации.

  • 102 — Не удалось инициализировать подсистему журналирования сообщений.

  • 103 — В файле конфигурации не заданы настройки почтового взаимодействия.

  • 104 — Неправильные настройки почты в файле конфигурации.

  • 105 — В файле конфигурации отсутствует список табло.

  • 106 — В файле конфигурации не задано расположение файлов лицензии.

  • 107 — Ошибка в параметрах одного из табло в файле конфигурации.

  • 108 — Не удалось открыть сетевой сокет для соединения с табло.

  • 109 — Ошибка в конфигурации корректировок значений для Центрального Банка РФ

  • 150 — Файл лицензии содержит некорректные данные.

  • 151 — Не удалось прочитать файл лицензии.

Ниже приведён перечень параметров конфигурации службы

Корневая секция

  • logPath - путь к директории для записи журналов сообщений. Может содержать как абсолютный, так и относительный путь. Изначально установлен равным logs.

  • licencePath - путь к директории, в которой содержатся файлы-лицензии. Может содержать как абсолютный, так и относительный путь. Изначально установлен равным licences.

  • useBroadcastAddress - если равен true, то программа использует широковещательный (255.255.255.255) адрес для взаимодействия с табло, если false – используются IP-адреса табло, указанные в секции конфигурации табло. В сложных конфигурациях рекомендуется использовать IP-адреса, т.е. устанавливать данное значение равным false. По умолчанию данное значение равно false.

  • sendEmailNotifications - если равен true, программа будет отправлять email-сообщения при потере и восстановлении связи с табло. Если false, сообщения отправляться не будут. По умолчанию данное значение равно false.

  • devicePollingPeriod - период опроса устройств в секундах. Указывает промежуток времени через который производится опрос устройств и настройка статических параметров (названия, курсы валют, яркость). По умолчанию равен 3600 секундам (одному часу).

  • providersPollingPeriod - период опроса источников данных. Период применяется для всех источников данных (валют и расписаний звонков). По умолчанию равен 3600 секундам (одному часу).

Пример корневой секции приведён ниже.

{
    "logPath": "logs",
    "licencePath": "licences",
    "useBroadcastAddress": false,
    "sendEmailNotifications": true,
    "devicePollingPeriod": 3600,
    "providersPollingPeriod": 3600
}

Секция mailConfig

Здесь собраны параметры, которые служба использует для соединения с SMTP-сервером при отправке email-сообщений

  • smtpServerHost - хост, на котором расположен SMTP-сервер.

  • smtpServerPort - порт на хосте smtpServerHost, который использует SMTP-сервер.

  • useSsl - использовать SSL при соединении с SMTP-сервером.

  • sourceAddress - почтовый адрес, который будет использоваться в качестве адреса отправителя при отправке email-сообщений.

  • login - логин почтового ящика, с которого будут отправляться email-сообщения.

  • password - пароль почтового ящика, с которого будут отправляться email-сообщения.

  • destinationAddress - почтовый адрес, на который будут отправляться email-сообщения.

Пример секции mailConfig.

{
    "mailConfig": {
        "smtpServerHost": "smtp.yandex.ru",
        "smtpServerPort": 465,
        "useSsl": true,
        "sourceAddress": "from@yandex.ru",
        "login": "from",
        "password": "from-password",
        "destinationAddress": "admin@yandex.ru"
    }
}

Секция groups

Данная секция содержит в себе описание групп устройств. Устройства описываются с помощью иерархической структуры. Узлами данной структуры выступают группы, в которые входят устройства и другие группы.

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

Все источники данных, включая строку, применяются как для устройств текущей группы, так и для устройств во вложенных группах.

Каждая группа описывается следующими параметрами:

  • name - название группы.

  • groups - список вложенных групп.

  • currencyProviderConfig - настройка источника данных для курсов валют. Содержимое данной секции описано ниже.

  • alarmProviderConfig - настройка источника данных для расписания звонков. Содержимое данной секции описано ниже.

  • commonDataString - строка, которая должна быть установлена для ВСЕХ устройств данной группы без собственных настроек.

  • commonTickerMode - режим отображения, который устанавливается для ВСЕХ табло без соответсвенной настроки, на табло информацонной строки

    • "DYNAMIC_FAST" быстрая перемещающаяся динамическая строка,

    • "DYNAMIC_MEDIUM" перемещающаяся со средней скоростью динамическая строка,

    • "DYNAMIC_LOW" медленно перемещающаяся динамическая строка,

    • "STATIC" статическая строка

  • devices - список устройств, входящих в текущую группу. Описание устройств приведено ниже.

Пример секции groups.

{
  "groups": [
    {
      // The speed of showing the common string data
      "commonTickerMode": "DYNAMIC_FAST",
      // String data
      "commonStringData": "Example string",
      // Alarm schedule data provider
      "alarmProviderConfig": {
        "url": "conf/alarm_schedule.json"
      },
      // Currency data provider
      "currencyProviderConfig": {
        "dataProviderType": "stub"
      },
      // Panels configurations
      "devices": [
        {
          "name": "Устройство №1",
          "macAddress": "A1:01:02:03:04:05",
          "ipAddress": "10.5.33.15",
          "currencies": [
            "USD",
            "EUR"
          ]
        }
      ]
    }
  ]
}

Описание устройства (элемент списка devices)

Секция должна содержать список табло, входящих в конкретную группу. Для каждого табло должны быть указаны следующие параметры.

  • name - название табло. Строка используется в лог-файлах и email-сообщениях. Табло модели "u430" принимают названия, состоящие из латинских букв, цифр и пробелов. Табло модели "u653" принимают названия, состоящие из латинских и русских букв, цифр и пробелов. Длина строки не должна превышать 30 символов.

  • macAddress - MAC-адрес табло.

  • ipAddress - IP-адрес устройства. Необязательный параметр, если не задан, используется широковещательный адрес. Рекомендуется указывать.
    В сложных сетях может потребоваться указать отличный от стандартного порта работы табло. Например: ПО установлено в Москве, филиал в Владимире и имеет 3 табло. В данном случае необходимо указать внешний IP данного филиала (например 213.167.192.0 (адрес в примере случайный)) и для каждого устройства прописать порт, на который будет происходить отправка/получение пакетов:
    Табло A: 213.167.192.0:4500
    Табло Б: 213.167.192.0:4501
    Табло С: 213.167.192.0:4502
    В сетевом оборудовании филиала необходимо прописать маршруты с внешнего адреса и порта до каждого табло:
    Табло A: 213.167.192.0:4500 → 192.168.0.150:5001
    Табло Б: 213.167.192.0:4501 → 192.168.0.151:5001
    Табло С: 213.167.192.0:4502 → 192.168.0.152:5001
    Табло работает только с портом 5001. Так же сетевое оборудование не должно препятствовать ответу табло.

  • licenseExpirationDate - дата истечения лицензии на табло в формате "дд.мм.гггг". Необходимо обязательно указывать, если лицензия имеет ограниченный срок действия. Если лицензия имеет неограниченный срок действия, то поле должно быть пустым. По умолчанию значение отсутствует.

  • monitorState - если true, программа будет следить за состоянием табло и отправлять email-сообщения в случае потери связи, если false – не будет. По умолчанию значение равно true.

  • autoSyncTime - если true, программа будет автоматически синхронизировать часы табло с часами на компьютере, на котором запущена программа, если false – автоматическая синхронизация будет отключена. По умолчанию значение равно true.

  • playAlarm - указывает проигрывать ли звонок на данном устройстве или нет. Если значение равно false, тогда на данное устройство не посылается команда на проигрывание звонка. По умолчанию равно true.

  • deviceType - модель табло, которым необходимо управлять. Возможные варианты значений: "u430", "u653". По умолчанию используется "u653".

  • currencies - список валют, которые необходимо установить на устройство. Порядок валют важен - в соответствии с этим порядком данные будут записаны на устройство. Если на Вашем устройстве первой идёт валюта USD, то укажите её первой в списке валют.

  • remoteControlUserPassword - пароль пользователя для редактирования настроек табло с ИК-пульта. Если значение равно -1, то значение пароля не устанавливается. По умолчанию значение равно 2222.

  • remoteControlAdminPassword - пароль администратора для редактирования настроек табло с ИК-пульта. Если значение равно -1, то значение пароля не устанавливается. По умолчанию значение равно 1111.

  • dataString - строка, которая устанавливается ТОЛЬКО для текущего устройства.

  • tickerMode - режим отображения, который ТОЛЬКО для данного устройства, на табло информацонной строки

    • "DYNAMIC_FAST" быстрая перемещающаяся динамическая строка,

    • "DYNAMIC_MEDIUM" перемещающаяся со средней скоростью динамическая строка,

    • "DYNAMIC_LOW" медленно перемещающаяся динамическая строка,

    • "STATIC" статическая строка,

    • "FROM_PARENT" использовать настройки группы

Пример секции devices.

{
    "devices": [
       {
            "name": "Моё банковское табло u653",
            "macAddress": "00:40:00:00:01:1B",
            "ipAddress": "192.168.0.151",
            "licenseExpirationDate": "01.12.2017",
            "currencies": ["EUR", "USD"]
        },
        {
            "name": "Моё часовое табло",
            "macAddress": "00:40:00:00:01:1C",
            "ipAddress": "192.168.0.152"
        },
        {
            "name": "Bank board u430",
            "macAddress": "00:40:00:00:01:1A",
            "ipAddress": "192.168.0.150",
            "deviceType": "u430",
            "password": 2222,
            "currencies": ["USD"]
        }
    ]
}

Секция currencyProviderConfig

Секция описывает конфигурацию службы для получения данных.

  • dataProviderType - тип источника данных. Возможные значения:

    • "stub" для получения случайных значений,

    • "json" для получения со службы, возвращающей данные в формате JSON,

    • "central_bank_rf" для получения с сервиса Центрального банка РФ.

  • url - полный путь к службе, возвращающей данные. Используется для службы JSON.

  • pollingPeriod - задержка между опросом службы в секундах.

  • currencyAdjustments - корректировки для значений покупки и продажи, полученых с Центрального банка РФ. Если поле отсутствует, то корректировок к значениям с Центрального банка РФ не применяется.

Пример настройки службы для получения данных из JSON-источника.

{
    "currencyProviderConfig": {
        "dataProviderType": "JSON",
        "url": "http://bankname.com/currency/json"
    }
}

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

{
    "currencyProviderConfig": {
        "dataProviderType": "STUB"
    }
}

Пример настройки службы для получения данных с сервиса Центрального банка РФ.

{
    "currencyProviderConfig": {
        "dataProviderType": "CENTRAL_BANK_RF",
        "url": "http://www.cbr.ru/scripts/XML_daily.asp",
        "currencyAdjustments": [
            {
                "currency": "USD",
                "purchaseMultiplier": 0.99,
                "purchaseAddition": -10,
                "sellMultiplier": 1.01,
                "sellAddition": 10
            },
            {
                "currency": "EUR",
                "purchaseMultiplier": 0.98,
                "purchaseAddition": -5,
                "sellMultiplier": 1.02,
                "sellAddition": 5
            }
        ]
    }
}

Корректировки значений для Центрального банка РФ currencyAdjustments

В данной секции указываются корректировки для значений покупки и продажи. Для рассчёта корректировки используется следующая формула: Полученное_значение * Multiplier + Addition

  • currency - название валюты, значение которой необходимо корректировать.

  • purchaseMultiplier - величина, на которую необходимо умножить полученное значение для получения значения покупки. Величина должна быть не больше 1. Если не указана, то считается 1.

  • purchaseAddition - величина, которую необходимо прибавить к полученному значению для получения значения покупки. Величина должна быть не больше 0. Если не указана, то считается 0.

  • sellMultiplier - величина, на которую необходимо умножить полученное значение для получения значения продажи. Величина должна быть не меньше 1. Если не указана, то считается 1.

  • sellAddition - величина, которую необходимо прибавить к полученному значению для получения значения продажи. Величина должна быть не меньше 0. Если не указана, то считается 0.

Секция alarmProviderConfig

Секция описывает источник данных для расписания звонков.

  • url - путь к JSON-документу, в котором описано расписание звонков. Документ может быть расположен в директории проекта, на сетевом ресурсе.

Пример настройки источника для получения данных из каталога проекта. В данной конфигурации система будет считывать файл alarm_schedule.json, расположенный в подкаталоге conf.

{
  "alarmProviderConfig": {
    "url": "conf/alarm_schedule.json"
  }
}

Пример настройки источника для получения данных с HTTP-ресурса.

{
  "alarmProviderConfig": {
    "url": "http://some-server.org/schedule"
  }
}

Приложение 1. Описание расширенного формата Cron

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

  1. Секунды

  2. Минуты

  3. Часы

  4. День месяца

  5. Месяц

  6. День недели

  7. Год (опциональное поле)

Примером полного выражения является строка 0 0 12 ? * WED, которая описывает расписание «каждую среду в 12:00».

Каждое индивидуальное подвыражение может содержать не только конкретное значение, но также и диапазоны, и перечни. Например конкретное значение из примера WED может быть заменено на MON-FRI (с понедельника по пятницу), MON,WED,FRI (понедельник, среда и пятница) или даже MON-WED,SAT (с понедельника по среду и в субботу).

Знак * («звёздочка») обозначает, что подходит любое значение из данного поля. Следовательно знак * в приведённом примере обозначает, что данное правило должно срабатывать в любом месяце. Если заменить WED на *, то правило будет срабатывать во все дни недели.

Аналогичным следует считать и ?. Его можно использовать ТОЛЬКО для полей «День месяца» и «День недели». Оно не накладывает никаких ограничений на данное поле. Оно обычно используется в тех случаях, когда необходимо указать значение только для одного из этих полей, но не для другого.

Для каждого из полей можно указать следующие значения.

  1. Секунды: от 0 до 59.

  2. Минуты: от 0 до 59.

  3. Часы: от 0 до 23.

  4. День месяца: от 1 до 31.

  5. Месяцы: от 0 до 11. 0 - январь, 11 - декабрь. Или с использованием строковых названий JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV и DEC.

  6. День недели: от 1 до 7. 1 - воскресенье, 2 - понедельник. Или с использованием строковых названий SUN, MON, TUE, WED, THU, FRI и SAT.

Помимо точных указаний времени, можно также описать через какие промежутки времени будет проигран звонок. Для описания временного отрезка, через который необходимо проиграть звонок, используйте символ /. Например, если написать 0/15 в поле минут, то звонок прозвенит «каждые 15 минут часа, начиная с минуты 0». Если написать 3/20 в поле минут, то звонок прозвенит «каждые 20 минут часа, начиная с минуты 3». Это можно также описать выражением 3, 23, 43 в поле минут.

Учтите, что выражение 0/45 в поле минут не означает, что звонок прозвенит «каждые 45 минут». Это означает, что звонок прозвенит «каждые 45 минут часа, начиная с минуты 0». Это выражение равнозначно выражению 0,45.

Примеры Cron-выражений

Запуск звонка каждые пять минут. 10:00, 10:05 и т.д.

0 0/5 * * * ?

Запуск звонка каждые пять минут, в 10 секунд после начала минуты. 12:00:10, 12:05:10 и т.д.

10 0/5 * * * ?

Запуск звонка в 30 минут каждого часа с 10 до 13 (10:30, 11:30, 12:30 и 13:30) каждые среду и пятницу.

0 30 10-13 ? * WED,FRI

Запуск звонка каждые 30 минут между 8 и 10 часами утра 5 и 20 числа каждого месяца. Внимание, этот звонок не сработает в 10:00.

0 0/30 8-9 5,20 * ?

Запуск звонка в 10:15 каждый день.

"0 15 10 ? * *"

Запуск звонка в 10:15 каждый день.

"0 15 10 * * ?"

Запуск звонка в 10:15 каждый день 2005-го года.

"0 15 10 * * ? 2005"

Запуск звонка каждую минуту, начиная с 14:00 и заканчивая в 14:59.

"0 * 14 * * ?"

Запуск звонка каждые 5 минут, начиная с 14:00 и заканчивая в 14:55.

"0 0/5 14 * * ?"

Запуск звонка каждые 5 минут, начиная с 14:00 и заканчивая в 14:55, И начиная в 18:00 и заканчивая в 18:55.

"0 0/5 14,18 * * ?"

Запуск звонка каждую минуту, начиная с 14:00 и заканчивая в 14:05

"0 0-5 14 * * ?"

Запуск звонка в 14:10 и 14:44 каждую среду марта

"0 10,44 14 ? 3 WED"

Запуск звонка в 10:15 каждый понедельник, вторник, среду, четверг и пятницу.

"0 15 10 ? * MON-FRI"

Запуск звонка в 10:15 15-го числа каждого месяца.

"0 15 10 15 * ?"

Запуск звонка в 10:15 каждый последний день месяца

"0 15 10 L * ?"

Запуск звонка в 10:15 каждую последнюю пятницу месяца

"0 15 10 ? * 6L"

Запуск звонка в 10:15 каждую третью пятницу месяца

"0 15 10 ? * 6#3"