Документация
Быстрый старт
1. Скачайте библиотеку FMOTC (раздел «Загрузки») и распакуйте в папку библиотек Arduino IDE.
2. Создайте устройство в личном кабинете и получите API-ключ.
3. Передайте ключ и Device ID в прошивку. Базовый URL — https://api.fmotc.net (путь /api/<версия>/ библиотека добавляет сама).
Справочник Device API
Все запросы устройства идут на api.fmotc.net (TLS), авторизация — заголовки Authorization: Bearer <key> и X-Device-ID.
POST /api/v1/logs — один лог.
POST /api/v1/logs/batch — пакет логов.
POST /api/v1/telemetry — телеметрия.
POST /api/v1/command/response — ответ устройства на команду.
GET /api/v1/firmware/check — проверка обновления.
GET /api/v1/firmware/download/:id — скачивание прошивки.
WSS /api/v1/ws — реал-тайм канал (логи, телеметрия, команды, прогресс OTA).
Библиотека для устройства
Клиентская C++ библиотека для ESP32 и ESP8266: транспорты HTTP/HTTPS и WebSocket Secure, offline-очередь, паттерн-фильтры, OTA.
Версия пути API задаётся одной константой FMOTC_API_VERSION (по умолчанию v1). При выходе серверного API v2 прошивка пересобирается с -DFMOTC_API_VERSION="v2" без правки кода — миграция парка постепенная.
При подключении по WebSocket устройство сообщает серверу версию библиотеки и версию API (кадр hello). Версия каждого устройства видна в мониторинге без опроса — удобно для парка: сразу понятно, какую прошивку пора пересобирать.
Биллинг
Списание линейное: ceil(размер_в_байтах / 10) + 1 кредит за лог.
Минута WebSocket-соединения — 30 кредитов.
Срабатывание триггера уведомления — 100 кредитов.
OTA-обновление
Загрузите прошивку для устройства. Команда ota_update уходит на устройство по WebSocket (если онлайн) либо устройство забирает обновление само через firmware/check. Во время прошивки соединение и баланс не блокируют процесс.
Прогресс в мониторинге строится по этапам (команда отправлена → устройство перезагружается → вернулось с новой версией): промежуточный процент устройство не шлёт, так как во время записи флеша канал занят.
Откат при сбое (rollback)
ESP32 — автоматический откат на предыдущую рабочую прошивку. Требует в Arduino IDE OTA-совместимой схемы разделов (Tools → Partition Scheme → любая с «OTA»). Bootloader официального Arduino-ESP32 core поддерживает откат по умолчанию. После загрузки прошивка проходит health-check; если не подтвердилась — bootloader откатывается.
ESP8266 — двойного банка нет, полноценный откат невозможен. Библиотека лишь фиксирует факт неудачного обновления. Для критичных установок используйте ESP32.