Киберпанк на столе: исследуем возможности Divoom Timegate и интегрируем его с Baldur’s Gate 3
Приветствую! Меня зовут Владимир Туров, я занимаюсь разработкой в Selectel. Недавно алгоритмы маркетплейсов подбросили мне любопытный гаджет в стиле киберпанк — Divoom Timegate. Это одновременно и стильные часы, и программируемый пиксельный дисплей. Устройство мгновенно подкупает своим визуалом, но наличие обязательной регистрации в приложении настораживает: неужели управление завязано исключительно на облачные серверы производителя?
Я решил разобраться в интерфейсах этого девайса. В этом материале я поделюсь результатами обзора, разберу особенности API и продемонстрирую возможности локального управления на примере шуточной, но функциональной интеграции с миром Baldur’s Gate 3.

Технические характеристики и первое знакомство
Divoom Timegate представляет собой умную систему на базе контроллера ESP32. Устройство оснащено пятью LCD-дисплеями диагональю 1.44” с разрешением 128×128 пикселей. Эстетику дополняет настраиваемая RGB-подсветка корпуса и тыльной панели.
Взаимодействовать с часами можно либо через пять физических кнопок, либо через мобильное приложение по Wi-Fi (поддерживается только диапазон 2,4 ГГц). На текущий момент стоимость гаджета составляет около 8 000 рублей.
Несмотря на то что устройство позиционируется как готовый продукт с набором виджетов (курсы валют, погода, RSS-ленты), для меня ключевым вопросом стала возможность кастомизации. Официальное ПО для мониторинга ресурсов ПК от производителя часто критикуют за нестабильность, что подталкивает к поиску альтернативных путей управления.
Сетевая активность и автономность
При включении Timegate сразу пытается выйти в сеть. Устройство связывается с сервером api.divoom-gz.com, используя протоколы MQTT и HTTPS. В облако улетает техническая информация: локальный и внешний IP, ID устройства и географические координаты для прогноза погоды.
Основные выводы по сетевому поведению:
- Раз в 15 секунд отправляются heartbeat-запросы.
- Управление через приложение реализовано через MQTT-команды от сервера к часам. Это позволяет менять настройки удаленно, даже находясь в другой сети.
- Автономность: Если заблокировать устройству доступ в интернет на уровне роутера, управление через приложение перестанет работать. Однако локальные интерфейсы становятся доступными только после того, как часы хотя бы раз «отстучались» на сервер производителя при загрузке.
На борту имеется микрофон для визуализации звука, но признаков передачи аудиопотока во внешнюю сеть в ходе тестов обнаружено не было.
Локальное управление: тернистый путь API
Для взаимодействия с часами в локальной сети не требуется аутентификация — достаточно знать IP-адрес. Все команды отправляются POST-запросами на эндпоинт /post в формате JSON.
Документация API оставляет желать лучшего: она полна опечаток и неточностей. Например, параметр фонового изображения назван BackgroudGif (с пропущенной буквой ‘n’), и именно в таком виде устройство его принимает.
Ключевые нюансы работы с дисплеями:
- Часы поддерживают форматы GIF и JPEG (base64).
- Шрифты вшиты в память. Методом перебора удалось найти рабочие варианты: индексы 2, 4 и 32 поддерживают кириллицу.
- Главная проблема — обновление текста. При прямой отправке данных на экране на долю секунды появляется иконка загрузки, что портит визуальный эффект.
Лайфхак: Чтобы избежать «экранов загрузки», стоит использовать механизм «интернет-текста» (тип 23). В этом режиме часы сами обращаются по указанному вами URL и обновляют содержимое без лишней индикации.
# Пример полезной нагрузки для обновления через URL
lcd_payload = {
"Command": "Draw/SendHttpItemList",
"LcdIndex": 0,
"NewFlag": 1,
"BackgroudGif": "http://yourserver.com/bg.gif",
"ItemList": [
{
"TextId": 1,
"type": 23,
"TextString": "http://yourserver.com/api/status",
"update_time": 1
}
]
}
Кейс: Интеграция с Baldur’s Gate 3
Чтобы протестировать устройство в деле, я реализовал экспорт состояния игрового отряда на дисплеи Timegate. Идея в том, чтобы видеть портреты персонажей и их актуальное здоровье в реальном времени.
Шаг 1: Игровой мод
С помощью Script Extender для BG3 я написал Lua-скрипт, который раз в секунду опрашивает базу данных игры (DB_PartyMembers), собирает данные о HP (текущем, максимальном и временном) и сохраняет их в JSON-файл в локальную папку.
Шаг 2: Прослойка на Python
Скрипт на базе FastAPI выполняет роль посредника:
- Мониторит изменения в JSON-файле, созданном игрой.
- При изменении состава группы или уровня здоровья отправляет команды на Divoom.
- Раздает статические изображения (портреты героев) и строки со значениями HP.

Выявленные ограничения
В процессе разработки я столкнулся с рядом аппаратных и программных лимитов:
- Невозможно узнать версию прошивки через API.
- Выравнивание текста (центровка) не работает, несмотря на описание в документации.
- Отсутствует возможность рисовать графические примитивы или прогресс-бары штатными средствами локального API (только текст и картинки).
- Слишком частые запросы (чаще раза в секунду) могут приводить к зависанию RGB-подсветки.
Итоги
Divoom Timegate — устройство своенравное. Оно требует терпения при настройке локального взаимодействия и «костылей» для обхода облачных ограничений. Однако для энтузиастов автоматизации и любителей кастомного железа это отличная площадка для творчества.
Если вам нравится эстетика пиксель-арта и вы готовы потратить вечер на разбор JSON-структур, этот девайс станет отличным дополнением вашего сетапа.



