IoT IoT
Whizz IoT Monitor — Backend & Monitoring Whizz IoT Monitor — Backend & Monitoring
IoT-мониторинг парка e-bike Whizz (США). MQTT — основной протокол: телеметрия, команды, TLV-логи, LBS. 13 Go-микросервисов, 20 000+ устройств, 350–400 msg/sec, latency < 50 мс. IoT monitoring for Whizz e-bike fleet (USA). MQTT is the core protocol: telemetry, commands, TLV logs, LBS. 13 Go microservices, 20,000+ devices, 350–400 msg/sec, latency < 50ms.
Go / MicroservicesMQTTClickHouseRedisFOTALBSOCRWebSocketJWTCQRSTelegram BotGeoHash
Ключевые метрики
20 000+
IoT-устройств в парке IoT devices in fleet
13
Go-микросервисов Go microservices
350–400
сообщений/сек messages/sec
<50 мс
latency end-to-end end-to-end latency
94
метрики в пакете 164 байта metrics in 164-byte packet
13
бинарных команд устройству binary device commands
Возможности системы
Мониторинг Monitoring
- Real-time дашборд (WebSocket), метрики online/offline Real-time dashboard (WebSocket), online/offline metrics
- Карта устройств Leaflet + кластеризация GeoHash (precision 7) Leaflet device map + GeoHash clustering (precision 7)
- Online/Parked/Locked/LowPower — адаптивные таймауты по iot_mode (30s–2h) Online/Parked/Locked/LowPower — adaptive timeouts by iot_mode (30s–2h)
- LBS — вышки + Wi-Fi AP, дополняет GPS; сервер уточняет координаты LBS — cell towers + Wi-Fi APs, supplements GPS; server refines coordinates
- История телеметрии: status, route, performance, battery, cellular Telemetry history: status, route, performance, battery, cellular
- Алармы о физическом воздействии на припаркованный байк — кража, попытка снять колёса Tamper alerts for parked bikes — theft attempts, wheel removal detection
- Фильтры и поиск устройств Device filters and search
Управление Control
- 13 бинарных команд устройству 13 binary device commands
- Lock / Unlock (безопасный алгоритм v2) Lock / Unlock (safe algorithm v2)
- Speed Limit / Throttle Limit Speed Limit / Throttle Limit
- Controller Power Limit / Motor Power Limit Controller Power Limit / Motor Power Limit
- Battery Min Voltage Limit Battery Min Voltage Limit
- Buzzer / Reboot / Config Update Buzzer / Reboot / Config Update
- Массовые команды (bulk operations) Bulk operations
- Двухуровневый lookup ответов: Redis → БД Two-level response lookup: Redis → DB
Задачи Tasks
- Ожидание онлайн, retry при сбоях — без потери прогресса Wait for online, auto-retry on failure — without losing progress
- Безопасный lock: плавное снижение скорости → блокировка → восстановление лимита Safe lock: gradual speed reduction → lock → restore speed limit
- Принудительное обновление прошивки (force_update): ожидание режима → верификация версии Force firmware update: wait for device mode → send → verify version
- Применение конфигурационных пресетов устройства Device configuration preset application
- Верификация каждого шага по телеметрии Per-step verification via telemetry
Прошивки (FOTA) Firmware (FOTA)
- OTA — обновление прошивки в фоне без потери функциональности OTA — background firmware update without loss of functionality
- Bootloader recovery Bootloader recovery
- whizz-flasher — Go CLI для сервис-инженеров whizz-flasher — Go CLI for service engineers
- Flash Layout API — карта памяти по модели устройства Flash Layout API — memory map per device model
- Beta-tester флаг Beta-tester flag
OCR OCR
- Telegram Bot: фото с SN + IMEI → OCR → авторегистрация байка в системе Telegram Bot: photo with SN + IMEI → OCR → automatic device registration
- Распознавание серийных номеров байков и комплектующих для инвентаризации на складе Serial number recognition for bikes and parts — warehouse inventory automation
- Фотоконтроль установки дополнительного оборудования на байк Photo-based verification of additional equipment installation on bikes
Аналитика Analytics
- TLV-логи устройств → ClickHouse Device TLV logs → ClickHouse
- Критические логи → Telegram-алерты Critical logs → Telegram alerts
- История команд и маршрутов Command and route history
- Логи устройств (device logs) Device logs
Безопасность Security
- JWT RS256 + 2FA TOTP JWT RS256 + 2FA TOTP
- Роли: admin, operator, viewer, service_engineer Roles: admin, operator, viewer, service_engineer
- Rate limiting, CSRF-защита Rate limiting, CSRF protection
- Безопасная аутентификация whizz-flasher Secure whizz-flasher authentication
Архитектура Architecture
- 13 Go-микросервисов (CQRS, event-driven) 13 Go microservices (CQRS, event-driven)
- Реляционная БД (HOT) + ClickHouse (COLD) + Redis Relational DB (HOT) + ClickHouse (COLD) + Redis
- Grafana — дашборды по телеметрии и системным метрикам Grafana — telemetry and system metrics dashboards
- Metabase — аналитика и отчёты для бизнес-пользователей Metabase — analytics and reports for business users
Описание
Протокол
MQTT 3.1 (Mosquitto, QoS 0/1) — единая шина: телеметрия 164 байта (94 метрики), команды устройствам, TLV-логи, LBS-пакеты геолокации.
Производительность
350–400 msg/sec, latency < 50 мс end-to-end, < 0.1 мс на парсинг одного пакета.
Архитектура
13 Go-микросервисов (CQRS, event-driven). Реляционная БД — «горячие» данные (device_status, команды, задачи). ClickHouse — «холодные» (телеметрия, логи, firmware_logs). Redis — очереди между сервисами и кэш.
Real-time
WebSocket для дашборда, SSE для обновлений устройств, Leaflet-карта с кластеризацией GeoHash (precision 7, ~150 м).
LBS
Вышки сотовой связи + Wi-Fi точки доступа через Unwired Labs API (точность 50–2000 м). Всегда передаётся параллельно с GPS — сервер уточняет координаты на основе обоих источников. Особенно полезен в помещении, тоннеле, под мостом.
Управление
13 бинарных команд: lock, unlock, speed_limit, throttle_limit, buzzer, reboot, config_update и др. Двухуровневый lookup ответов (Redis → БД).
Задачи
Принцип «создал и забыл»: оператор ставит задачу — система доводит до результата сама. Автоматически ждёт появления байка онлайн, выполняет все шаги, верифицирует каждое действие по телеметрии, повторяет при сбоях — без участия и мониторинга оператором. Безопасный lock — плавное снижение скорости перед блокировкой и восстановление лимита после. Принудительное обновление прошивки — ожидает нужного режима устройства перед отправкой.
FOTA
Чанкированная загрузка (Range-запросы), bootloader recovery, beta-tester флаг. whizz-flasher — Go-инструмент для сервис-инженеров с Flash Layout API.
Регистрация
OCR · Фото с SN + IMEI в Telegram-бот → распознавание → авторегистрация байка в системе. Также: OCR серийных номеров для инвентаризации на складе и фотоконтроль установки оборудования.
Безопасность
JWT RS256 + 2FA TOTP. Роли: admin, operator, viewer, service_engineer. Rate limiting, CSRF.
Protocol
MQTT 3.1 (Mosquitto, QoS 0/1) — unified bus: 164-byte telemetry (94 metrics), device commands, TLV logs, LBS geolocation packets.
Performance
350–400 msg/sec, latency < 50ms end-to-end, < 0.1ms per packet parse.
Architecture
13 Go microservices (CQRS, event-driven). Relational DB for hot data (device_status, commands, tasks). ClickHouse for cold data (telemetry, logs, firmware_logs). Redis for inter-service queues and cache.
Real-time
WebSocket for dashboard, SSE for device updates, Leaflet map with GeoHash clustering (precision 7, ~150 m).
LBS
Cell towers + Wi-Fi access points via Unwired Labs API (50–2000 m accuracy). Always sent in parallel with GPS — server refines coordinates using both sources. Especially useful indoors, in tunnels, under bridges.
Control
13 binary commands: lock, unlock, speed_limit, throttle_limit, buzzer, reboot, config_update etc. Two-level response lookup (Redis → DB).
Tasks
Fire-and-forget device operations: operator creates a task — the system takes care of the rest. Automatically waits for the bike to come online, executes all steps, verifies each action via telemetry, retries on failure — no monitoring required. Safe lock gradually reduces speed before engaging, then restores the limit. Force-update waits for the right device mode before sending firmware.
FOTA
Chunked download (Range requests), bootloader recovery, beta-tester flag. whizz-flasher — Go tool for service engineers with Flash Layout API.
Registration
OCR · Photo with SN + IMEI sent to Telegram bot → recognition → automatic device registration. Also: OCR of serial numbers for warehouse inventory and photo verification of equipment installation.
Security
JWT RS256 + 2FA TOTP. Roles: admin, operator, viewer, service_engineer. Rate limiting, CSRF.