IoT-системы от датчика до cloud
Все объяснения, задачи и лабораторная в одном месте.
Можно сохранить страницу в PDF через печать браузера. Для печати разборы ответов раскрываются автоматически.
1. Device constraints и sensor interfaces
Объяснение
Устройство ограничено энергией, памятью и каналом связи. Частота измерения и отправки — разные параметры. Локальная фильтрация снижает трафик, но может удалить полезные события.
Задача для самостоятельного решения
Датчик меряет раз в секунду, отправляет раз в минуту. Что хранить?
Показать разбор ответа
По задаче: сырые 60 значений или агрегаты min/max/mean с количеством и временем. Одно среднее скрывает короткий выброс.
2. MQTT/CoAP и data contracts
Объяснение
MQTT использует topics и брокер, QoS определяет гарантии доставки протокола. Повторы всё равно требуют понимания бизнес-семантики. Контракт сообщения задаёт устройство, время, единицу и версию.
Задача для самостоятельного решения
Почему QoS 1 может дать повторное показание?
Показать разбор ответа
Допускается доставка как минимум один раз. Используйте event_id/sequence и дедупликацию, если повтор влияет на расчёт.
3. Edge processing и offline behavior
Объяснение
Offline-режим требует буфера ограниченного размера и политики переполнения. Часы устройства могут быть неточными. Нужно различать время измерения и время приёма сервером.
Задача для самостоятельного решения
Что делать при заполнении буфера без связи?
Показать разбор ответа
Применить явное правило: сохранить критичные события, агрегировать или удалять старые с учётом задачи; сообщить о потере данных после восстановления.
4. Cloud ingestion и time-series data
Объяснение
Ingestion проверяет identity, схему и квоты до записи. Time-series хранение оптимизирует временные диапазоны. Один повреждённый датчик не должен исчерпать ресурсы всех клиентов.
Задача для самостоятельного решения
Как ограничить устройство, отправляющее в тысячу раз чаще нормы?
Показать разбор ответа
Пер-device quota/rate limit, наблюдение и управляемая блокировка. Общий лимит без изоляции позволяет одному устройству мешать остальным.
5. Device identity, secure boot и keys
Объяснение
Уникальная identity устройства ограничивает последствия компрометации. Secure boot проверяет доверенность firmware, но не гарантирует отсутствие её ошибок. Общий ключ всей партии затрудняет индивидуальный отзыв.
Задача для самостоятельного решения
Почему один секрет на все датчики опасен?
Показать разбор ответа
Извлечение из одного устройства раскрывает всю группу. Используйте индивидуальные credentials и механизм ротации/отзыва.
6. Fleet management, OTA и observability
Объяснение
Fleet management учитывает версии, состояние и совместимость устройств. OTA разворачивают партиями с контролем здоровья. Недоступность части устройств — нормальная ситуация, требующая продолжения позже.
Задача для самостоятельного решения
Как выпускать firmware на тысячу датчиков?
Показать разбор ответа
Начать с небольшой группы, проверить ошибки и расход энергии, затем расширять; сохранять возможность отката и учитывать устройства вне сети.
Лабораторная работа
Подготовка
Python 3, синтетические события датчика.
Учебный пример
from collections import deque
buffer=deque(maxlen=3)
for sequence in range(5):
buffer.append({'seq':sequence,'temperature_c':20+sequence})
print([event['seq'] for event in buffer])Как работает пример и что ожидать
Вывод [2,3,4]: deque с maxlen удаляет старые элементы при переполнении. Для реального устройства такая потеря должна быть осознанной и учитываться счётчиком; критичные события могут требовать другой политики.
Итоговая работа
Создайте прототип sensor→buffer→broker→storage с версией схемы. Отключите связь, восстановите её, проверьте дубликаты и время события. Добавьте индивидуальную identity, quota и staged OTA-план.
Проверка результата
1. Опишите исходные данные и условия запуска, чтобы другой человек мог повторить работу.
2. Приложите результат обычного сценария и сравните его с ожидаемым.
3. Проверьте неверный вход, граничный случай и отказ зависимости, если она есть.
4. Объясните выбранное решение и известное ограничение.
5. Сохраните исправления после самопроверки вместе с примером, который раньше не работал.
Как оценить работу
По каждому пункту поставьте 0 (не выполнено), 1 (выполнено с пробелами) или 2 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.