Embedded HandbookПриложения
Все разделы › X. Проектирование, сети и IoT
STM32F103, STM32F407 · уровень базовый · 10 мин чтения
Открыть в интерактивном справочнике

90. Архитектура IoT-решений

Прибор — только первое звено. Этот раздел собирает звенья из разделов 37 и 86–94 в систему: - из каких уровней состоит решение; - где лучше обрабатывать данные; - сколько стоит каждое сообщение; - как описать решение, чтобы его можно было построить и сопровождать.

Проверено моделью: сутки температуры на складе при разных правилах отправки — на переносимом C и независимо на Python.

Как это называется в документации

Оригинал Перевод
Internet of Things (IoT), machine-to-machine (M2M) интернет вещей, межмашинная связь
reference model эталонная модель
edge computing, fog computing вычисления на краю, туманные вычисления (на шлюзе)
report by exception, deadband отправка по изменению, зона нечувствительности
heartbeat контрольная посылка «я жив»
LPWAN, energy per bit маломощные сети дальнего действия, энергия на бит
data flow поток данных
high-level design (HLD) высокоуровневый проект решения
service level agreement (SLA) соглашение об уровне обслуживания

90.1 M2M и интернет вещей

M2M Интернет вещей
связь машина с машиной, точка-точка: модем и SMS, Modbus, прямой канал в диспетчерскую множество устройств через общую платформу
данные одной задаче многим приложениям сразу
сеть обычно закрытая интернет и облако
масштаб десятки устройств тысячи и миллионы
протоколы часто фирменные открытые: MQTT, LoRaWAN, CoAP

M2M не исчезает — машины по-прежнему говорят с машинами, — но вокруг появляется платформа. Данные прибора становятся общими: одни и те же показания температуры идут в тревоги, отчёты и учёт энергии.

За это приходится платить: - безопасность миллионов устройств; - обновление их прошивок; - цена ошибки в программе, которая стоит на тысячах объектов сразу; - отсутствие единого стандарта.

Всё это — задачи архитектуры, а не отдельного прибора.


90.2 Семь уровней эталонной модели

Эталонная модель делит решение на уровни, у каждого своя задача и свой хозяин. Уровень можно заменить, не трогая остальные:

Уровень Что это Где в справочнике
1. Устройства и контроллеры датчики, микроконтроллер, радиомодуль разделы 8–22, 81, 93
2. Связь провода, радио и протоколы: LoRaWAN, MQTT, CoAP, Ethernet, сотовая 37, 86, 89, 94
3. Вычисления на краю фильтрация, сжатие, тревоги — на приборе или шлюзе 90.4
4. Накопление данных базы данных и очереди — как PostgreSQL и Redis на стенде раздела 94 87, 94
5. Абстракция данных приведение к единому виду, декодеры, программные интерфейсы 88, 94
6. Приложения отчёты, аналитика, управление 91
7. Люди и процессы кто и как принимает решения, регламенты, обслуживание 90.7

Семь уровней эталонной модели и разделы справочника, которые их разбирают

Модель полезна в споре «чья это задача». Если прибор шлёт сырые данные каждую секунду, работу уровня 3 переложили на уровни 4–6. Платить за это будут эфиром, батарейкой и хранилищем.


90.3 LPWAN: дальность за счёт скорости

Маломощные сети дальнего действия построены на простом соотношении. Энергия на бит — это мощность, делённая на скорость. Вдвое меньше скорость при той же мощности — вдвое больше энергии на каждый бит, то есть +3 дБ, а в свободном пространстве дальность ×1,41. Именно так работает SF в LoRa (раздел 93).

Второй рычаг — частота. Потери на трассе растут с частотой:

Сравнение Разница Дальность в свободном пространстве
433 МГц против 868 МГц на 6,0 дБ лучше ×2,0, но штырь в четверть волны 17,3 см вместо 8,6
2,4 ГГц против 868 МГц на 8,8 дБ хуже в 2,8 раза меньше
5,8 ГГц против 868 МГц на 16,5 дБ хуже в 6,7 раза меньше

Поэтому LPWAN живёт ниже 1 ГГц. Диапазон 2,4 ГГц используют ради того, что он разрешён во всём мире, но дальность там короче. Диапазон 5,8 ГГц для LPWAN не годится: в списках свободных диапазонов для них ему не место.

Без лицензии — не значит без условий. LoRaWAN и Sigfox работают в свободных диапазонах. Передавать там может любой, отсюда помехи и правила вроде 1 % эфира (раздел 89). NB-IoT и LTE-M — тоже LPWAN, но в лицензированных диапазонах: оператор отвечает за сеть, а вы платите абонентскую плату.

Сильные стороны LPWAN Слабые стороны
километры дальности малая пропускная способность
годы на батарейке задержка: команда ждёт, пока прибор выйдет на связь (раздел 94.6)
сигнал проходит в подвалы и колодцы нет единого стандарта
тысячи приборов на шлюз помехи в свободных диапазонах

90.4 Где считать: на краю или в облаке

Датчик температуры меряет раз в секунду. Отправлять каждое измерение — 86 400 сообщений в сутки. Кадр такого прибора — 15 байт (90.5), и на SF7 это 4003 с эфира, 4,6 % времени вместо разрешённого 1 %. В LPWAN так нельзя вовсе, а в любой другой сети это пустая трата: почти все сообщения говорят «ничего не изменилось».

Решает прибор, уровень 3. Два правила:

struct edge {
    int32_t deadband;           /* порог изменения, в сотых долях */
    uint32_t heartbeat;         /* контрольная посылка не реже, с */
    int32_t last;               /* последнее отправленное значение */
    uint32_t last_time;         /* когда оно ушло, с */
    int started;
};

/* 1 — отправлять: значение отошло от отправленного на порог и больше или
 * давно ничего не уходило. Иначе прибор молчит, а получатель считает, что
 * значение — последнее присланное. */
int edge_should_send(struct edge *e, int32_t value, uint32_t now)
{
    int32_t d = value - e->last;
    if (e->started && d < e->deadband && -d < e->deadband && now - e->last_time < e->heartbeat)
        return 0;
    e->last = value;
    e->last_time = now;
    e->started = 1;
    return 1;
}

Третье правило — сводка за окно: минимум, максимум и среднее за 15 минут. Для неё не нужен массив отсчётов: минимум, максимум, сумма и счётчик занимают 24 байта вместе с выравниванием.

Модель. Сутки на складе: - ночью 18 °C, в полдень 24 °C; - шум датчика ±0,10 °C; - в 14:00:30 открыли ворота, и на 10 минут температура упала на 4 °C.

Правило Сообщений в сутки Худший час Ошибка получателя Ворота замечены через
каждую секунду 86 400 3600 0 0 с
по изменению на 0,5 °C, контрольная раз в 15 минут 98 6 до 0,33 °C 0 с
по изменению на 0,2 °C, контрольная раз в 15 минут 285 29 до 0,19 °C 0 с
сводка раз в 15 минут 96 4 — 869 с

Отправка по изменению шлёт так же редко, как сводка, но замечает событие в ту же секунду. Ошибка получателя всегда меньше порога — правило само держит точность. Сводка провал увидит, минимум в ней 18,81 °C, но только через 14,5 минуты.

Решает прибор: по изменению — так же редко, как сводка, но ворота замечены в ту же секунду

Порог 0,2 °C лежит слишком близко к шуму ±0,10 °C. Шум сам перешагивает порог, и сообщений втрое больше. В худший час их 29. На SF12 кадр в 15 байт идёт 1,155 с, и 1 % эфира пускает 31 сообщение в час: 29 ещё влезают, но без запаса — чуть больше шума, и на краю зоны прибор нарушит правила. Сначала шум фильтруют (раздел 81), потом выбирают порог.

⚠️ Контрольная посылка обязательна. Без неё молчание прибора нельзя понять: температура стабильна или прибор умер. С контрольной посылкой раз в 15 минут молчание дольше — уже тревога.

Второе место для вычислений на краю — шлюз, туманные вычисления. Он видит многие приборы сразу и может сводить их данные. Он может выполнять местные правила и продолжать работать, когда пропал интернет. Облако остаётся для истории, анализа по многим приборам и обучения моделей (раздел 85).


90.5 Сколько стоит сообщение: батарейка

Примем передачу 40 мА, сон 2 мкА, батарейку на 2400 мА·ч и 10 байт данных в кадре LoRaWAN (раздел 89). Окна приёма не учитываем:

Правило Сообщений в сутки SF7 SF12
раз в минуту 1440 6,4 года 101 сутки
по изменению на 0,2 °C 285 десятки лет 1,4 года
по изменению на 0,5 °C 98 десятки лет 4,0 года
сводка раз в 15 минут 96 десятки лет 4,0 года

«Десятки лет» значит, что батарейка раньше умрёт от саморазряда. Главное в сроке службы — сколько раз прибор выходит в эфир и на каком SF. Правило отправки на приборе окупается напрямую. Температура в сотых долях градуса — это 2 байта данных плюс 13 служебных, всего 15 байт на сообщение (раздел 94.8). Таблица посчитана с запасом, для 10 байт данных, как в разделе 89; с кадром в 15 байт сроки на четверть-треть дольше: раз в минуту — 8,3 года на SF7 и около 130 суток на SF12.


90.6 Требования, которые меняют архитектуру

Требование Что оно значит для прибора
масштабируемость тысячи приборов без ручной настройки каждого: подключение по воздуху (раздел 94.3), повторы с разбросом (раздел 88.6)
большие данные слать смысл, а не сырьё (90.4); двоичный формат вместо текста
облака не привязываться к одному серверу: адрес по имени, настройки обновляются по воздуху
реальное время LoRaWAN класса A не для управления: команда ждёт выхода прибора на связь, поэтому быстрые контуры замыкают на месте
распределённость любое звено может отказать: прибор копит данные, пока нет связи, и досылает
разнородность разные радио и протоколы сводят к единому виду на шлюзе или платформе (уровень 5)
безопасность ключи (раздел 94.3), шифрование канала (раздел 37.4), защита прошивки (разделы 43 и 77.9), обновления (раздел 48)
соответствие правилам частотные правила — доля эфира и мощность; закон о персональных данных, если прибор связан с людьми
интеграция понятный программный интерфейс и форматы наружу (раздел 88)

90.7 Как описать решение: высокоуровневый проект

Высокоуровневый проект (HLD) — документ, по которому решение строят, принимают и сопровождают. Обычный состав:

Раздел документа Что в нём
назначение, термины, связанные документы зачем система и о чём договорились
постановка задачи что должно работать и для кого
функции список возможностей
схема решения компоненты по уровням и связи между ними
требования к ресурсам серверы, сети, лицензии
резервное копирование что копируется, как часто, что будет при отказе
затраты разовые и ежемесячные
этапы работ обследование, установка, наладка, приёмка, эксплуатация, у каждого — ответственный и трудозатраты
мониторинг и SLA что проверяется, как часто, что считается отказом, за сколько восстанавливают

Для решения с приборами в нём обязательно должно быть ещё пять вещей:


90.8 Грабли

Прибор шлёт каждую секунду «на всякий случай». Эфир и батарейка кончаются раньше, чем польза.

Молчание прибора непонятно. Нет контрольной посылки, и умерший прибор неотличим от спокойной температуры.

Порог рядом с шумом. 0,2 °C при шуме ±0,10 °C даёт втрое больше сообщений, чем 0,5 °C.

Сводки вместо событий. Тревога приходит через 15 минут после события.

Управление через LoRaWAN класса A как в реальном времени. Команда ждёт, пока прибор сам выйдет на связь.

Прибор теряет данные при обрыве связи. Нет буфера, в который он складывает показания до восстановления канала.

Решение намертво привязано к одному облачному сервису. Нет программного интерфейса наружу и способа уйти.

Проект без потоков данных и без сценариев отказа. Такой документ нельзя ни проверить, ни сопровождать.

«LPWAN бесплатный, лицензия не нужна». В свободном диапазоне никто не отвечает за помехи.


90.9 Итоги

Дальше: раздел 91 «Платформы интернета вещей».

Открыть в интерактивном справочнике