Редактор экранов и удаленное управление: разработали ПО для дорожных табло

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

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

Редактор экранов и удаленное управление: разработали ПО для дорожных табло
Заказчик

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

Оборудование компании размещено в 110 городах, а количество выполненных объектов составляет порядка 6,5 тысяч.

Цель и задачи

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

Задачи:

  1. Спроектировать и разработать серверную часть, административную панель и клиентское плеер-приложение.
  2. Организовать безопасную аутентификацию пользователей с разграничением ролей.
  3. Создать визуальный редактор экранов с поддержкой виджетов.
  4. Внедрить механизм плейлистов и удаленного управления устройствами.
  5. Реализовать интерактивную карту устройств с отображением их статуса.
Ситуация до начала проекта

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

Заказчик четко осознавал потребности в функционале и подготовил развернутое техническое задание со схемами, описанием бизнес-логики и требованиями к API. С этим ТЗ он обратился к нам, и мы начали проект с глубокого анализа и создания частных технических заданий (ЧТЗ) на каждый этап разработки.

«Клиент пришел с четким ТЗ, у него уже были сформированные пожелания. Но даже с таким подготовленным заказчиком мы всё равно делали ЧТЗ с макетами, скриншотами, диаграммами на каждый этап. Потому что наш подход заключается в том, чтобы заказчик видел, как будет работать система, ещё до начала разработки. Это исключает риск получить «не то, что ожидалось», и гарантирует, что финальный продукт полностью соответствует бизнес-задачам клиента».

Создание архитектуры решенияние

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

Авторизация и управление пользователями

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

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

Мы реализовали защиту от перебора паролей. Если пользователь ввел неверный пароль пять раз, то его учетная запись блокируется на 5 минут.

Журналирование действий

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

В журнал событий попадают все запросы к серверу и фиксируется пользователь, выполнивший запрос, параметры и время запроса, результат (успешно/ошибка).

Редактор экранов и удаленное управление: разработали ПО для дорожных табло
Редактор экранов и удаленное управление: разработали ПО для дорожных табло

Администратор создает учетные записи и видит всех зарегистрированных сотрудников, может активировать/деактивировать их одним кликом.

Редактор экранов и удаленное управление: разработали ПО для дорожных табло

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

Управление устройствами

Регистрация устройств инициируется клиентским ПО. При первом запуске оператор вводит адрес сервера и уникальный ключ (UID). После подтверждения устройство автоматически появляется в списке административной панели.

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

Чтобы упростить управление большим количеством табло, мы реализовали возможность объединять устройства в группы. Назначение плейлиста, перезагрузка, изменение расписания могут выполняться для всей группы одновременно. Это экономит часы ручной работы. Устройство нельзя включить в группу, если его размеры экрана не совпадают с размерами группы.

Интерактивная карта

Для визуального контроля всех зарегистрированных устройств система предоставляет интерактивную карту на основе внешнего картографического сервиса (Яндекс Карты). На ней отображаются все зарегистрированные устройства с разными маркерами для статусов «В сети/Активно», «В сети/Не активно» и «Не в сети». 

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

Редактор экранов и удаленное управление: разработали ПО для дорожных табло

Зеленый маркер — устройство онлайн и транслирует контент, серый — офлайн. При клике открывается попап с UID, статусом, группой и кнопкой перезагрузки.

Редактор экранов и плейлисты

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

В распоряжении оператора находятся шесть типов виджетов: Текст, Изображение, Дорожный знак, Время и дата, Индикатор трафика, Маршрут.

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

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

Мы автоматизировали сверку размеров устройства с размером экрана плейлиста при его назначении. Если размеры не совпадают — назначение блокируется с поясняющим сообщением. Это исключает ошибки отображения на этапе настройки.

Редактор экранов и удаленное управление: разработали ПО для дорожных табло

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

Редактор экранов и удаленное управление: разработали ПО для дорожных табло

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

Хранение данных и взаимодействие с клиентским ПО

Для хранения пользовательских изображений и GIF-анимаций мы внедрили S3-совместимое хранилище. Загрузка файла происходит напрямую в хранилище, а в базе данных сохраняется только метаинформация и публичная ссылка. Система контролирует допустимые форматы и размеры, а также запрещает удаление файлов, которые используются в экранах (с предупреждением и указанием, где именно).

Взаимодействие с клиентским плеер-приложением автономно. Устройство хранит актуальный плейлист и расписание в локальной СУБД SQLite, поэтому трансляция продолжается, даже если связь теряется. При изменении плейлиста или расписания сервер отправляет команду устройству, а клиентское ПО забирает данные и перезапускает воспроизведение без ручного вмешательства.

Результат
Индивидуальная разработка дает возможность закрыть любые, даже самые уникальные потребности, и автоматизировать процессы, для которых готовых решений просто не существует. А собственное ПО дает бизнесу двойное преимущество — технологическую независимость и мощный козырь среди конкурентов.

«ДиСофт» получил ПО, которое оптимизирует целый ряд рабочих процессов:

  • сократилось время на подготовку макетов благодаря внедрению редактора экранов;
  • выросла прозрачность благодаря журналированию действий операторов и истории каждого экрана;
  • увеличилась гибкость воспроизведения благодаря формированию групп устройств;
  • упростился контроль состояния мониторов благодаря дистанционному управлению экранами.

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