Skip to main content

Создать multicast-группу

Создаёт multicast-группу: общий адрес и общие сессионные ключи, по которым несколько устройств принимают один и тот же downlink. Группа создаётся в приложении, к которому выполнено подключение.

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

Запрос и ответ: create_multicast_req → create_multicast_resp.
Доступ: только токен высокого уровня. С токеном низкого уровня сервер ответит ошибкой 1.

Текущая версия ONS

Отличия от описания v0.17:

  • Группа всегда создаётся в приложении, к которому выполнено подключение. Поле application_eui сервер только проверяет.
  • region по умолчанию 0 (EU), а не 6 (KZ865-868).
  • group_type принимает и значение 1 (класс A).
  • multicast_addr — ровно 8 hex-символов. Адрес из 7 символов, как в примере v0.17, сервер отклонит с ошибкой 3.
  • Поля app_key у группы нет: сервер его игнорирует.
  • freq, dr и ping_slot_period сервер записывает, но при передаче кадров не использует.

Запрос​

Поля без пометки «обязательно» можно не передавать.

ПолеТипОписание
cmdstringcreate_multicast_req
operation_idstringПроизвольная строка; сервер вернёт её в ответе — по ней сопоставляют запрос и ответ
multicast_euistringОбязательно. EUI группы, 16 hex-символов. Должен быть уникален на всём сервере среди групп и устройств
multicast_addrstringОбязательно. Адрес группы — DevAddr, с которым будут уходить её кадры, 8 hex-символов. Должен быть уникален на всём сервере среди групп и устройств
nwks_keystringОбязательно. NwkSKey группы, 32 hex-символа. Сервер наличие ключа не проверяет и создаст группу без него
apps_keystringОбязательно. AppSKey группы, 32 hex-символа. Сервер наличие ключа не проверяет и создаст группу без него
regionuint8Код региона — частотного плана группы, 0–23, см. Коды регионов. По умолчанию 0 (EU).
group_typeuint8Класс группы: 3 — C, 2 — B, 1 — A. По умолчанию 3
descriptionstringОписание группы, до 255 символов
application_euistringAppEUI одного из приложений владельца токена, 16 hex-символов. Сервер только проверяет, что такое приложение есть
freqfloatЧастота группы, МГц. Сервер значение только хранит
druint8Скорость передачи (DR) группы, 0–15. По умолчанию 0. Сервер значение только хранит
ping_slot_perioduint32Зарезервировано. По умолчанию 128
{
"cmd": "create_multicast_req",
"operation_id": "xyw",
"multicast_eui": "7DA50BE8C74CE6DC",
"multicast_addr": "C74CE6DC",
"description": "Street lights",
"nwks_key": "EEFBF983C00B35240C9A7C2D8D011301",
"apps_key": "6F17B97CEA2C63D1089EF4268FD68D38",
"group_type": 3,
"region": 6
}

Ответ​

ПолеТипОписание
cmdstringcreate_multicast_resp
operation_idstringЗначение из запроса. В ответах с ошибками 1 и 3 поля нет
statusuint81 — группа создана, 2 — ошибка
multicast_eui, multicast_addrstringEUI и адрес созданной группы
application_euistringAppEUI из запроса. Если поле не передавали — AppEUI одного из приложений владельца, не обязательно того, где создана группа
description, nwks_key, apps_key, group_type, ping_slot_period, freq, dr, regionЗаписанные значения: из запроса или по умолчанию. Типы — как в запросе. Поле, которого не было в запросе и у которого нет значения по умолчанию, равно null
error_code, error_textuint8, stringТолько при ошибке, см. ниже
{
"cmd": "create_multicast_resp",
"operation_id": "xyw",
"status": 1,
"multicast_eui": "7DA50BE8C74CE6DC",
"multicast_addr": "C74CE6DC",
"application_eui": "819EA8554FCD762A",
"description": "Street lights",
"nwks_key": "EEFBF983C00B35240C9A7C2D8D011301",
"apps_key": "6F17B97CEA2C63D1089EF4268FD68D38",
"group_type": 3,
"ping_slot_period": 128,
"freq": null,
"dr": 0,
"region": 6
}

Ошибки​

error_codeerror_textЧто случилось
1Unauthorized accessЗапрос пришёл с токеном низкого уровня
3Data is filled in with an errorНеверный формат: multicast_eui или application_eui не из 16 hex-символов, multicast_addr не из 8, ключ не из 32; group_type не 1–3; dr не 0–15; region не 0–23; freq не число
5Application does not existsУ владельца токена нет приложения с таким application_eui
4Uniq failedУ владельца токена уже есть группа с такими multicast_eui и multicast_addr
0Unexpected errorГруппа не создана. Обычно причина в том, что multicast_eui или multicast_addr уже занят другой группой или устройством на сервере, либо одно из этих полей не передано

Что важно знать​

  • Сервер не настраивает устройства. Адрес группы, nwks_key и apps_key должны быть записаны и в устройства — те же значения, что в запросе.
  • Пишите EUI и адрес в верхнем регистре. Сервер сохраняет multicast_eui и multicast_addr как есть и ищет группу по точному совпадению.
  • Указывайте регион явно. Значение по умолчанию 0 — план EU: если ваши устройства работают в другом плане, передайте region явно.

См. также​