Инженерная задача
Объединить разнородное оборудование и живую телеметрию в одном надёжном продукте, который работает при нестабильном интернете и неидеальных соединениях с устройствами.
Объединить разнородное оборудование и живую телеметрию в одном надёжном продукте, который работает при нестабильном интернете и неидеальных соединениях с устройствами.
Full-stack / Product Engineer. Я разработал фронтенд, интеграцию с бэкендом, модель данных, взаимодействие с оборудованием и развёртывание системы в автомобиле.
BLE- и последовательные устройства · Raspberry Pi · локальные сервисы · PostgreSQL · слой API · фронтенд на Next.js · синхронизация с облаком
Рабочая локальная и удалённая среда мониторинга, использующая реальные данные автомобиля вместо идеализированной тестовой телеметрии.
RV Monitor — работающая система, которую я построил для экспедиционного автодома, а не макет панели управления. Она объединяет электропитание и солнечную систему, воду, датчики среды, диагностику модема, GPS, камеры и управляемые устройства вокруг Raspberry Pi. Ключевое инженерное ограничение: система должна оставаться понятной и полезной, когда устройства отключаются, телеметрия устаревает или пропадает мобильный интернет.

Данные приходят из очень разных источников: контроллеров батареи и солнечной системы, датчиков воды и среды, ESP32-узлов, BLE-устройств, последовательного GPS-приёмника, диагностики модема и видеопотоков. Сервисы на Raspberry Pi собирают эти источники и приводят их к общей модели, с которой может стабильно работать остальная система.
Raspberry Pi работает как постоянно включённый компьютер внутри автомобиля. Особенности конкретного оборудования скрыты за границами сервисов, поэтому веб-приложение работает со стабильными состояниями и измерениями и не зависит напрямую от протокола каждого устройства.

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


Интерфейс на Next.js/React объединяет текущее состояние, исторические графики, GPS и маршруты, диагностику модема, камеры и прямое управление. Переиспользуемые карточки и шаблоны визуализации используют общую семантику состояний, хотя интеграции под ними сильно отличаются.

Стек приложения развёрнут на Raspberry Pi с Docker и Nginx и поддерживает как локальный доступ внутри автодома, так и удалённый просмотр при наличии связи. Работа с установленным оборудованием выявляет задержки, переподключения и поведение устаревших данных, которые не проявились бы на обычной панели с тестовыми данными.
В результате получился программный слой самого автомобиля: единый интерфейс для текущего состояния, истории, управления поддерживаемыми устройствами и удалённой проверки системы, когда находишься вне автодома.