Добрый день и хорошего настроения!

Это небольшой тьюториал по настройке NIDD (Non-IP Data Delivery) в облачном сервисе МТС с говорящим названием «М2М-менеджер». Суть NIDD — в энергоэффективном обмене небольшими пакетами данных по сети NB-IoT между устройствами и сервером. Если раньше GSM-устройства общались с сервером, обмениваясь пакетами TCP/UDP, то для устройств NB-IoT стал доступен дополнительный способ связи — NIDD. При этом сервер взаимодействует с сетью оператора, используя унифицированные POST/GET-запросы. Пишу для себя (чтобы не забыть) и всех, кому это окажется полезным.

Про NB-IoT можно почитать:

NB-IoT, Narrow Band Internet of Things. Общая информация, особенности технологии
NB-IoT, Narrow Band Internet of Things. Режимы энергосбережения и команды управления

Теория NIDD от МТС

Документация на модуль NB-IoT, который использовался в процессе тестирования:
Neoway N21.

Сервис МТС для управления устройствами М2М.

Чтобы пощупать NIDD, нам потребуется:

  • SIM-карта NB-IoT МТС
  • устройство NB-IoT с поддержкой NIDD
  • пароль и логин от М2М-менеджера МТС

В качестве устройства я использовал плату N21 DEMO, а пароль и логин для доступа к М2М-менеджеру мне любезно предоставили сотрудники МТС. За это, а также за разнообразную помощь и многочисленные консультации большое им спасибо.

Итак, заходим в М2М-менеджер и проверяем, что:

  • в пункте меню «SIM-менеджер» есть «Центр управления NB-IoT»;
  • в «Центре управления NB-IoT» появилась наша карточка NB-IoT, а также разделы:
    NIDD APN
    NIDD Аккаунты
    NIDD Безопасность
  • в самом низу есть пункт меню «API M2M» с «Руководством разработчика NIDD»

Выглядеть всё это хозяйство должно примерно так:



Если чего-то в М2М-менеджере не хватает — смело отправляйте запрос вашему менеджеру в МТС с подробным описанием ваших пожеланий.

Если нужные пункты Центра управления NB-IoT на месте, можно начинать их заполнять. Причем пункт «NIDD Аккаунты» — в последнюю очередь: для него понадобятся данные из соседних разделов.

  1. NIDD APN: придумываем и заполняем имя нашего APN и «ID приложения».
  2. NIDD Безопасность: здесь указываем IP-адрес нашего сервера приложений, который будет общаться с устройствами NB-IoT через сервис (сервер) МТС.
  3. NIDD Аккаунты: просто заполняем все поля и нажимаем «Сохранить».

Как только все пункты заполнены, можно начинать разбираться с запросами, которые должен формировать наш сервер. Идём в «API M2M» и читаем «Руководство разработчика NIDD». Чтобы устройство могло зарегистрироваться в сети NB-IoT (в режиме NIDD!), нужно создать SCS AS конфигурацию:



В руководстве есть описание отдельных параметров запроса, я только приведу пару небольших комментариев:

  1. ссылка для передачи запросов: m2m-manager.mts.ru/scef/v1/3gpp-nidd/v1/{scsAsId}/configurations, где scsAsId — это «ID приложения» из пункта меню «NIDD APN»;
  2. базовый метод авторизации с логином и паролем — используйте логин и пароль, придуманные вами при заполнении пункта меню «NIDD Аккаунты»;
  3. notificationDestination — адрес вашего сервера. С него вы будете посылать non-ip-сообщения на устройства, и на него сервер МТС будет посылать уведомления об отправке и получении сообщений non-ip.

Когда конфигурация SCS AS создана, а устройство успешно зарегистрировалось в режиме NIDD в NB-IoT-сети оператора, можно попробовать обменяться первыми сообщениями non-ip между сервером и устройством.

Для передачи сообщения от сервера на устройство изучаем раздел «2.2 Отправка сообщения» руководства:



{configurationId} в ссылке запроса — значение типа «hex-абракадабра», полученное на этапе создания конфигурации. Имеет вид: b00e2485ed27c0011f0a0200.

data — содержимое сообщения в кодировке Base64.

Настройка устройства NB-IoT для работы в NIDD


Конечно, для обмена данными с сервером наше устройство должно не только уметь работать в сети NB-IoT, но и поддерживать режим NIDD (non-ip). В случае отладочной платы N21 DEMO или иного устройства на базе NB-IoT-модуля N21 последовательность действий для передачи non-ip-сообщений описана ниже.

Активируем конфигурацию с APN, который мы придумали при заполнении пункта «NIDD APN» М2М-менеджера (здесь — EFOnidd):

AT+CFGDFTPDN=5,«EFOnidd»

и просим устройство перерегистрироваться в сети:

AT+CFUN=0

AT+CFUN=1

после этого подаем команду

AT+CGACT=1,1

и передаем сообщение «test»:

AT+NIPDATA=1, «test»

При получении non-ip-сообщения на UART модуля N21 выдается незапрашиваемое сообщение вида:

+NIPDATA:1,10,3132333435 // принято non-ip-сообщение '12345'
где
1 — CID, pdp context
10 — количество байт данных после запятой

На сервер сообщение поступает в кодировке Base64 (в POST-запросе).

P. S. Для имитации передачи данных с сервера удобно использовать программу Postman. Для приема сообщений можно использовать любой скрипт, имитирующий HTTP-сервер.

Надеюсь, кому-нибудь пригодится.
Спасибо.