IoT / устройствасобственный продукт

DeviceHub

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

Скриншот DeviceHub

DeviceHub — подробно

IoT-проект на ESP32-S3, который собирает данные из нескольких бизнес-систем и выводит ключевые показатели на компактный физический экран.

Продажи, остатки, маршруты, предупреждения и другие оперативные метрики можно видеть прямо на рабочем столе — без необходимости постоянно открывать браузер, BI-систему или мобильное приложение.

Главная особенность DeviceHub — устройство не привязано к конкретной бизнес-системе. Сегодня экран показывает показатели Killoos, через несколько секунд — данные Georeis, а завтра к нему можно подключить новый источник.

При этом изменение состава дашборда не требует перепрошивки ESP32.

01

Зачем понадобился DeviceHub

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

Первый прототип напрямую подключался к Killoos и Georeis.

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

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

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

Физический гаджет постепенно начинает содержать бизнес-логику сразу нескольких систем.

Поэтому архитектура была изменена.

Между источниками данных и устройством появился отдельный сервис — DeviceHub.

02

Как работает DeviceHub

Теперь архитектура выглядит значительно проще:

Бизнес-системы → DeviceHub → API → ESP32 → физический экран

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

ESP32 больше не нужно знать, где находятся продажи, остатки или информация о маршруте.

Устройство получает готовое описание:

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

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

03

Один экран — несколько бизнес-систем

Сейчас DeviceHub работает с двумя моими проектами: Killoos и Georeis.

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

Из Georeis — информацию об активных маршрутах, остановках, пробеге, состоянии доставки и других оперативных показателях.

На одном физическом устройстве эти данные превращаются в последовательность информационных экранов.

Например:

Продажи за вчера → продажи за месяц → остатки → график товара → активные маршруты → состояние доставки.

Для пользователя это выглядит как обычный компактный бизнес-дашборд.

Внутри же показатели могут поступать из совершенно разных информационных систем.

04

Дашборд можно менять без перепрошивки ESP32

Одна из ключевых идей проекта — отделить данные от прошивки устройства.

В традиционном варианте состав экрана часто задаётся непосредственно внутри программы микроконтроллера.

В DeviceHub используется другой подход.

Прошивка знает ограниченный набор универсальных шаблонов отображения:

KPI-карточки, графики и текстовые информационные блоки.

А какие именно показатели должны находиться внутри этих шаблонов, определяет сервер.

Например, сегодня четыре ячейки экрана могут показывать:

Выручка / Заказы / Продажи / Остатки

А завтра:

Маршруты / Остановки / Пробег / Предупреждения

Для такого изменения не требуется переписывать и заново прошивать ESP32.

Достаточно изменить конфигурацию экрана на стороне DeviceHub.

05

Метрики как универсальные элементы

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

Например:

killoos.totals.yesterday.revenue

или

georeis.route_pulse.active_routes

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

DeviceHub сам получает исходные данные и передаёт ESP32 уже готовое значение.

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

Подключение нового показателя в большинстве случаев не требует изменения API или прошивки устройства.

06

Откуда DeviceHub получает данные

В текущей версии DeviceHub использует read-only подключения к PostgreSQL работающих продуктов.

Это означает, что сервис может читать необходимые показатели, но не изменяет исходные бизнес-данные.

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

Такой подход позволил не создавать специальные API-методы внутри Killoos и Georeis только ради физического устройства.

DeviceHub самостоятельно получает необходимые данные, выполняет нужные агрегаты и формирует готовый ответ для ESP32.

Отдельный ETL-процесс для физического дашборда также не требуется.

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

07

Единый API для физических устройств

ESP32 взаимодействует только с DeviceHub.

Устройство больше не подключается отдельно к Killoos, Georeis или другим бизнес-системам.

Для гаджета существует один API и один формат данных.

DeviceHub собирает показатели из разных источников и возвращает готовый JSON с набором экранов.

Таким образом архитектура разделяется на три независимых слоя:

Источники данных → серверная обработка → физическое отображение.

Изменения внутри одной бизнес-системы больше не требуют изменения всей цепочки.

08

Сам физический гаджет

Первый рабочий прототип построен на ESP32-S3 с цветным сенсорным дисплеем 320×240.

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

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

По сути ESP32 работает как лёгкий клиент.

Основная обработка данных остаётся на сервере.

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

09

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

DeviceHub имеет собственный API управления.

Через него можно:

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

У каждого устройства есть собственный ключ доступа.

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

На текущем этапе эта схема протестирована на одном реальном устройстве; работа с несколькими физическими гаджетами заложена архитектурно, но ещё не проверена в реальной эксплуатации.

10

Self-hosted инфраструктура

DeviceHub работает в собственной серверной инфраструктуре.

Backend, базы данных и связанные сервисы размещены внутри self-hosted контура.

Такой вариант особенно удобен для IoT и внутренних бизнес-систем: DeviceHub находится рядом с источниками данных и может получать необходимые показатели без создания дополнительных внешних интеграций.

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

11

Что получилось

Главный результат проекта — физическое устройство перестало быть частью конкретной бизнес-системы.

Killoos не должен знать, какой дисплей показывает его показатели.

Georeis не должен иметь отдельный API специально для ESP32.

А прошивке ESP32 не нужно понимать внутреннее устройство каждого продукта.

Между ними находится DeviceHub, который превращает данные разных систем в единый формат физического дашборда.

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

12

Где такой подход можно использовать

Концепция физического бизнес-дашборда не ограничивается моими проектами.

Подобное устройство может постоянно показывать несколько наиболее важных показателей компании:

Продажи — выручка, заказы, средний чек, выполнение плана.

E-commerce — продажи маркетплейсов, остатки, товары с риском Out-of-Stock.

Логистика — активные маршруты, опоздания, пробег, количество доставок.

Производство — выпуск продукции, состояние оборудования, отклонения от плана.

IT и инфраструктура — состояние серверов, сервисов, очередей и фоновых процессов.

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

13

Что дальше

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

Главная идея остаётся простой:

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

Нужны живые метрики на столе, а не в очередной вкладке?

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

Обсудить похожую задачубесплатно · 25–30 минут
Другие проекты

Ещё в портфолио

KILLOOS

Интеллектуальная система бизнес-аналитики, переводит данные в управленческие решения и предупреждает риски до потерь.

Подробнее →

Vizgen

Визуальный редактор для работы с контентом: генерация карточек товара, визуализация и апскейл — доставляется через REST API.

Подробнее →

Georeis

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

Подробнее →

Geo101

Приложение для активных путешественников: GPX-маршруты и офлайн-навигация для трейла, эндуро и пешего туризма.

Подробнее →

Kitchen 3D Planner

Планировщик кухни для мебельных компаний: подбор модулей, фасадов и техники по размерам помещения, с 3D-сборкой на выходе.

Подробнее →

Driver.Georeis

Приложение для водителей Georeis: распознаёт адреса с фото путевого листа, сверяет по адресной базе и строит порядок объезда с расчётом времени прибытия.

Подробнее →

OpenSEO

Генерация SEO-статей по заданной структуре — с очеловечиванием стиля и независимой валидацией результата перед публикацией.

Подробнее →

Rilso

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

Подробнее →

Лабсервер

Собственный GPU-сервер для тестирования моделей, подбора параметров и сборки MVP в закрытом контуре — без выхода данных наружу.

Подробнее →