Skip to content
Урок 6. ADR и Class A: как протокол экономит за узел

Урок 6. ADR и Class A: как протокол экономит за узел

Урок 6. ADR и Class A: как протокол экономит за узел

Паспорт урока

ПараметрЗначение
Место в модулеPowerSentry, модуль 3 «Масштаб города», урок 6 из 8
Длительность45 мин
Возраст14–16
Оборудованиеsentry_city_sim.py (ползунок SF), монитор порта узла
Предварительные знанияУроки 1–5: бюджет, ёмкость, airtime
ПредметИнформатика (протоколы, адаптивные системы)

Образовательные цели

ЦельБлумМиллерЧем доказывается
6.1Объяснять Class A как источник экономиипониматьзнает какРазбор приёмных окон
6.2Объяснять механизм ADR и его двойную выгодупониматьзнает какОтвет: экономия энергии и канала
6.3Обосновывать разделение ответственности узел/сервероцениватьзнает какОтвет: почему SF выбирает сервер
6.4Обосновывать, почему ADR выключен на стендеоцениватьзнает какАргументация предсказуемости отладки

Сценарий занятия (45 минут)

ВремяБлокЧто делает педагогЧто делают ученики
0–5RetrievalМини-квиз по уроку 5Пишут, разбор
5–12Вопрос«Узел спит. Как сервер что-то ему передаст?»Строят гипотезы
12–24Class AПриёмные окна, узел как инициаторРазбирают схему
24–35ADRКто выбирает SF и почему не узелСчитают выгоду
35–42ПрактикаЗадачиРешают
42–45Итог и ДЗФиксацияЗаписывают

Блок 1. Постановка вопроса (5–12 мин)

Провокация

«Наш узел спит 99,99% времени. Радио выключено. Вопрос: как сервер может что-то ему сказать — например, изменить настройки или попросить пискнуть для поиска?»

Сбор гипотез

ГипотезаОтвет педагога
«Пусть слушает постоянно»Приёмник потребляет миллиамперы. Считали: срок жизни упадёт до дней
«Пусть просыпается по расписанию слушать»Уже лучше, но нужна синхронизация и лишние пробуждения
«Пусть слушает после того, как сам что-то отправил»Точный ответ. Это и есть Class A

Формулировка принципа

«Узел — инициатор. Он не ждёт команд, он сам выходит на связь. И только сразу после своей передачи ненадолго открывает “почтовый ящик” — вдруг сервер что-то накопил.»


Блок 2. Class A (12–24 мин)

2.1. Базовый уровень (14 лет)

Через почтовое отделение до востребования.

Ты живёшь в глухой деревне без почтальона. Раз в месяц приезжаешь в город, отправляешь письмо и сразу спрашиваешь: нет ли чего для меня? Если есть — забираешь. Если нет — уезжаешь до следующего раза.

Тебе не нужно сидеть у окна круглосуточно в ожидании почтальона. Ты сам определяешь, когда быть на связи.

2.2. Углублённый уровень (14–16 лет)

Шаг 1. Три класса устройств LoRaWAN.

КлассКогда слушаетРасходЗадержка доставки команды
Aтолько после своей передачиминимальныйдо следующего уплинка
Bпо расписанию (синхронизация маяками)среднийсекунды
Cпостоянномаксимальныймгновенно

Наш узел — Class A, самый экономный. Class C применяют там, где есть питание от сети (например, уличное освещение).

Шаг 2. Схема приёмных окон.

   TX          RX1              RX2
 ┌────┐      ┌────┐           ┌────┐
 │узел│      │окно│           │окно│
 └────┘      └────┘           └────┘
   │           ↑                 ↑
   │        1 секунда        2 секунды
   └──── передача ────────────────────→ время
        затем радио ВЫКЛЮЧЕНО до следующего раза
  • RX1 открывается через 1 секунду после передачи, на той же частоте;
  • RX2 — через 2 секунды, на фиксированной частоте (869,525 МГц) и SF12;
  • Если в RX1 что-то принято, RX2 не открывается.

Оба окна коротки — единицы-десятки миллисекунд. Всё остальное время приёмник выключен.

Практическая деталь из журнала отладки проекта. В логах после каждого уплинка появляются строки вида Frequency = 869.525 MHz, SF = 12 — это не передача, а открытие окна RX2. Маркер в отладочном выводе: IQ: U означает передачу узла, IQ: D — приём.

Ученики, увидевшие эти строки, обычно решают, что узел передаёт слишком часто. Полезно показать этот пример: умение правильно прочитать лог — часть инженерной работы.

Шаг 3. Почему это экономно.

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

Шаг 4. Цена решения.

ПлюсМинус
минимальный расходкоманда с сервера ждёт следующего уплинка
простота узлапри heartbeat раз в 12 часов задержка до 12 часов

Для датчика протечки это приемлемо: срочные команды ему не нужны. Для устройства, которым надо управлять немедленно, выбирают Class C — и питание от сети.


Блок 3. ADR — адаптивный выбор скорости (24–35 мин)

3.1. Постановка

«У нас есть выбор SF от 7 до 12. Больше SF — дальше добивает, но дольше занимает эфир. Вопрос: кто должен выбирать SF для каждого узла

ВариантПроблема
Узел самон не знает, как его слышно на шлюзе; чтобы узнать, нужна обратная связь и вычисления
Настроить вручную при установкетысячи узлов, условия меняются (сезон, новая застройка)
Сервервидит качество всех принятых кадров — у него есть данные

3.2. Как работает ADR

ADR (Adaptive Data Rate) — механизм, при котором сетевой сервер анализирует качество принимаемых кадров (RSSI, SNR) и подсказывает узлу минимально достаточный SF.

узел передаёт на SF10
    → сервер видит: сигнал очень уверенный, запас большой
    → сервер в ответном окне: «переходи на SF7»
    → узел переходит
    → airtime падает с 289 мс до 41 мс

3.3. Двойная выгода

Что уменьшаетсяСледствие
Время в эфире (airtime)меньше энергии на кадр → дольше живёт батарея
Занятость каналаменьше нагрузка G → больше узлов на шлюз

Численно (кадр 10 байт):

SFAirtimeЭнергия на кадр (отн.)Ёмкость сети (отн.)
SF741 мс
SF9144 мс3,5×÷3,5
SF10289 мс÷7
SF12991 мс24×÷24
Ключевой вывод: узел, ушедший с SF12 на SF7, тратит в 24 раза меньше энергии на кадр и занимает в 24 раза меньше эфира. Одно решение улучшает обе метрики — снова «две стороны одной монеты», как на уроке 5.

3.4. Разделение ответственности

«Обратите внимание на архитектуру: тяжёлую работу — анализ качества связи, принятие решения — делает сервер, у которого есть питание, память и данные по всем узлам. Узел лишь исполняет команду и остаётся простым и экономным.»

Это общий принцип проектирования распределённых систем: сложность выносят туда, где есть ресурсы.

3.5. Почему на стенде ADR выключен

«В нашей прошивке стоит setADR(false). Почему мы отключили полезный механизм?»

СтендГород
Нужна предсказуемость: SF фиксирован, поведение воспроизводимоНужна эффективность: пусть сеть оптимизирует
Отладка: если SF меняется сам, трудно понять причину проблемыТысячи узлов вручную не настроить
Занятия короткие, оптимизация не успеет дать эффектГоды работы, экономия накапливается

Вывод: отключение ADR — не упрощение, а осознанное решение под задачу отладки. В продакшене его включают.


Блок 4. Практические задачи (35–42 мин)

Уровень A (14 лет)

A1. Почему узел Class A не может получить команду мгновенно?

Ответ

Потому что его приёмник включается только на короткие окна сразу после собственной передачи. Всё остальное время радио выключено ради экономии. Команда ждёт на сервере до следующего выхода узла на связь.

A2. Что делает ADR?

Ответ

Сервер анализирует качество принимаемых от узла кадров и подсказывает ему минимально достаточный SF: близким узлам — быстрый SF7, дальним — дальнобойный SF12. Это экономит энергию узла и освобождает эфир.

A3. Почему выбор SF доверили серверу, а не узлу?

Ответ

Узел не знает, насколько хорошо его слышно на шлюзе, — эта информация есть только у приёмной стороны. Сервер видит качество всех кадров и имеет ресурсы для анализа, а узел остаётся простым и экономным.

Уровень B (14–15 лет)

B1. Узел перешёл с SF12 (airtime 991 мс) на SF7 (41 мс). Во сколько раз сократился расход энергии на кадр?

Решение9914124 раза\frac{991}{41} \approx \mathbf{24\ \text{раза}}

Энергия на передачу пропорциональна времени в эфире при том же токе. Экономия почти в 24 раза — существенно даже для узла, передающего дважды в сутки.

B2. Что даёт городу переход тысячи узлов с фиксированного SF10 на индивидуальный ADR?

Разбор

Предположим, при ADR узлы распределятся: половина уйдёт на SF7–SF8 (близкие к шлюзу), часть останется на SF10, немногие в глубоких подвалах перейдут на SF11–SF12.

По энергии: узлы, ушедшие на быстрые SF, тратят в разы меньше на кадр — срок службы этой части флота вырастает кратно.

По ёмкости: суммарный занятый эфир сокращается (средний airtime падает), значит нагрузка G снижается и шлюз выдерживает больше узлов.

Ключевая мысль: обе выгоды получены бесплатно — без замены оборудования, только за счёт работы сервера. Именно поэтому ADR называют «экономией, которую даёт протокол».

B3. Почему на учебном стенде ADR намеренно отключён?

Ответ

Ради предсказуемости отладки. Если SF меняется автоматически, то при возникновении проблемы трудно понять причину: изменилось ли поведение из-за нашей правки или из-за того, что сеть переключила скорость.

На стенде важна воспроизводимость эксперимента, в городе — эффективность. Это разные задачи, и решения для них разные.

Уровень C (15–16 лет)

C1. Предложите, как измерить эффект ADR на реальной сети. Какие метрики собирать?

Разбор

План измерения:

  1. Базовый период (2–4 недели): ADR выключен, все узлы на фиксированном SF10. Фиксировать: распределение RSSI/SNR, PDR, число кадров, расчётный airtime.
  2. Экспериментальный период: ADR включён. Те же метрики.
  3. Сравнение:
МетрикаЧто покажет
Распределение узлов по SFсколько узлов смогли ускориться
Средний airtime кадрапрямой индикатор экономии эфира
Суммарная нагрузка Gвыигрыш по ёмкости
PDRне ухудшилось ли качество
Расчётный расход энергиивыигрыш по автономности

Важная деталь корректности: сравнивать надо периоды сопоставимой длительности и погодных условий (влажность и листва влияют на распространение). Иначе эффект ADR смешается с сезонными изменениями.

Это готовая методическая часть конкурсной работы.

C2. ADR может ошибиться: понизить SF узлу, у которого условия временно улучшились. Что произойдёт и как протокол это компенсирует?

Разбор

Сценарий: узел стоит в подвале, но дверь была открыта — сигнал прошёл хорошо. Сервер понизил SF. Дверь закрыли — сигнал стал слабым, кадры перестают доходить.

Компенсация в протоколе: узел ведёт счётчик неподтверждённых передач. Если после определённого их числа нет никакой реакции сети, узел самостоятельно повышает SF (постепенно возвращается к более надёжным настройкам) — это часть механизма ADR со стороны устройства.

Обобщение: любая адаптивная система должна иметь механизм отката при ухудшении условий, иначе оптимизация превращается в потерю связи. Это тот же принцип, что заморозка базы в RFCurtain: адаптация без страховки опасна.

C3. Сравните разделение ответственности в LoRaWAN и в системе, где узел сам выбирает SF. Какие ресурсы требуются в каждом случае?

Разбор
АспектРешение на сервере (LoRaWAN)Решение на узле
Данные о качествеесть (сервер принимает кадры)нужна обратная связь = даунлинки
Вычисленияна мощном серверена микроконтроллере
Энергия на решениене тратится узломприём + расчёт = расход
Взгляд на сеть целикоместь (учитывает соседей)нет
Сложность узламинимальнаявыше

Вывод: решение на сервере выигрывает по всем пунктам для этой задачи. Это не универсальное правило — в сетях без централизации (например, ячеистых) решение принимают узлы. Архитектура определяется наличием центра и стоимостью связи с ним.


Ответы на вопросы, которые прозвучат

Вопрос ученикаКак отвечать
«Зачем два приёмных окна, а не одно?»RX2 на фиксированной частоте и SF12 — резервное, максимально надёжное. Если RX1 не сработал (например, сеть заняла тот канал), остаётся второй шанс
«Что если сервер вообще ничего не хочет сказать?»Окна открываются и закрываются пустыми — это стоит считанные миллисекунды. Дешевле, чем механизм согласования
«Строки про 869.525 в логе — это передача?»Нет, это открытие окна RX2. Маркер IQ: D означает приём. Классическая ловушка при чтении логов
«Может ли ADR сделать хуже?»Да, если условия изменятся после понижения SF. Поэтому узел умеет сам возвращаться к надёжным настройкам при потере связи
«Class C совсем не годится для батарейки?»Практически нет: постоянно включённый приёмник — миллиамперы. Class C применяют там, где есть сетевое питание

Раздаточный лист (для печати)

Урок 6. ADR и Class A

Три класса LoRaWAN:

КлассКогда слушаетРасходЗадержка команды
A
Bпо расписаниюсреднийсекунды
C

Схема Class A — подпишите:

   TX          RX1              RX2
 ┌────┐      ┌────┐           ┌────┐
 └────┘      └────┘           └────┘
   │        ____ с          ____ с
   └── затем радио ______________ до следующего раза

Airtime и цена SF (кадр 10 байт):

SFAirtimeВо сколько раз дороже SF7
SF741 мс
SF9144 мс
SF10289 мс
SF12991 мс

ADR — двойная выгода:

Меньше SF → короче эфир → 1) ________________ 2) ________________

Разделение ответственности:

КтоЧто делаетПочему именно он
Сервер
Узел

Почему на нашем стенде ADR выключен?

____________________________________________________


Домашнее задание

Обязательная часть

Врайтап по рубрике А. Обязательный пункт: объясните, почему один и тот же переход на меньший SF улучшает сразу две метрики.

Уровень A

Найти три примера систем, где «клиент сам выходит на связь», а не ждёт постоянно (проверка почты, обновления приложений). Описать, чем это выгодно.

Уровень B

Посчитать, во сколько раз изменится расход энергии и ёмкость сети при переходе флота узлов с SF10 на SF8 (airtime SF8 ≈ 72 мс).

Ответ для педагога

289 / 72 ≈ 4 раза — и по энергии на кадр, и по занятости эфира. Ёмкость сети вырастет примерно вчетверо, расход на передачу уменьшится вчетверо.

Полезное замечание: выигрыш нелинейно зависит от шага SF — каждый шаг примерно удваивает airtime, поэтому два шага дают четырёхкратный эффект.

Уровень C

Спроектировать логику, по которой узел самостоятельно возвращается к надёжному SF при потере связи. Какие условия и сколько попыток?

Ориентир для педагога

Разумная логика: вести счётчик переданных кадров без единого ответа от сети. После N кадров (например, 32) повысить SF на шаг; повторять до возврата к максимальному SF; при получении ответа — сбросить счётчик.

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

Это фактически описание реального механизма ADR back-off в спецификации LoRaWAN.


Итог урока: что записать в журнал

Вывод урока 6

  1. Class A — узел является инициатором: передаёт, затем открывает два коротких приёмных окна (RX1 через 1 с, RX2 через 2 с), после чего радио выключено.
  2. Средний ток определяется сном, а не приёмом — это делает автономность возможной.
  3. Цена Class A: команда с сервера ждёт следующего уплинка.
  4. ADR — сервер по качеству кадров подсказывает узлу минимально достаточный SF.
  5. Меньший SF даёт двойную выгоду: меньше энергии на кадр и меньше занятого канала (SF7 против SF12 — в 24 раза).
  6. Тяжёлую работу делает сервер, у которого есть данные и ресурсы; узел остаётся простым — сложность выносят туда, где есть ресурсы.
  7. На стенде ADR выключен ради предсказуемости отладки, в городе включён ради эффективности.

Связь с курсом

Что родилось на этом урокеГде станет инструментом
Class A, приёмные окнаУрок 8 (защита проекта)
ADR, компромисс SFWarWalk урок 2 (дальность против ёмкости)
Разделение ответственностиПроектирование любых распределённых систем
Механизм отката адаптацииRFCurtain (заморозка базы)

Чек-лист педагога перед уроком

  • Симулятор с ползунком SF проверен
  • Готов лог с окнами RX2 (строки про 869.525) для разбора ловушки
  • Проверены значения airtime: SF7 = 41 мс, SF10 = 289 мс, SF12 = 991 мс
  • Раздаточный лист распечатан