FMOTC CORE

Документация

Быстрый старт

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.