Создать 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сервер записывает, но при передаче кадров не использует.
Запрос
Поля без пометки «обязательно» можно не передавать.
| Поле | Тип | Описание |
|---|---|---|
cmd | string | create_multicast_req |
operation_id | string | Произвольная строка; сервер вернёт её в ответе — по ней сопоставляют запрос и ответ |
multicast_eui | string | Обязательно. EUI группы, 16 hex-символов. Должен быть уникален на всём сервере среди групп и устройств |
multicast_addr | string | Обязательно. Адрес группы — DevAddr, с которым будут уходить её кадры, 8 hex-символов. Должен быть уникален на всём сервере среди групп и устройств |
nwks_key | string | Обязательно. NwkSKey группы, 32 hex-символа. Сервер наличие ключа не проверяет и создаст группу без него |
apps_key | string | Обязательно. AppSKey группы, 32 hex-символа. Сервер наличие ключа не проверяет и создаст группу без него |
region | uint8 | Код региона — частотного плана группы, 0–23, см. Коды регионов. По умолчанию 0 (EU). |
group_type | uint8 | Класс группы: 3 — C, 2 — B, 1 — A. По умолчанию 3 |
description | string | Описание группы, до 255 символов |
application_eui | string | AppEUI одного из приложений владельца токена, 16 hex-символов. Сервер только проверяет, что такое приложение есть |
freq | float | Частота группы, МГц. Сервер значение только хранит |
dr | uint8 | Скорость передачи (DR) группы, 0–15. По умолчанию 0. Сервер значение только хранит |
ping_slot_period | uint32 | Зарезервировано. По умолчанию 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
}
Ответ
| Поле | Тип | Описание |
|---|---|---|
cmd | string | create_multicast_resp |
operation_id | string | Значение из запроса. В ответах с ошибками 1 и 3 поля нет |
status | uint8 | 1 — группа создана, 2 — ошибка |
multicast_eui, multicast_addr | string | EUI и адрес созданной группы |
application_eui | string | AppEUI из запроса. Если поле не передавали — AppEUI одного из приложений владельца, не обязательно того, где создана группа |
description, nwks_key, apps_key, group_type, ping_slot_period, freq, dr, region | Записанные значения: из запроса или по умолчанию. Типы — как в запросе. Поле, которого не было в запросе и у которого нет значения по умолчанию, равно null | |
error_code, error_text | uint8, 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_code | error_text | Что случилось |
|---|---|---|
| 1 | Unauthorized access | Запрос пришёл с токеном низкого уровня |
| 3 | Data 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 не число |
| 5 | Application does not exists | У владельца токена нет приложения с таким application_eui |
| 4 | Uniq failed | У владельца токена уже есть группа с такими multicast_eui и multicast_addr |
| 0 | Unexpected error | Группа не создана. Обычно причина в том, что multicast_eui или multicast_addr уже занят другой группой или устройством на сервере, либо одно из этих полей не передано |
Что важно знать
- Сервер не настраивает устройства. Адрес группы,
nwks_keyиapps_keyдолжны быть записаны и в устройства — те же значения, что в запросе. - Пишите EUI и адрес в верхнем регистре. Сервер сохраняет
multicast_euiиmulticast_addrкак есть и ищет группу по точному совпадению. - Указывайте регион явно. Значение по умолчанию 0 — план EU: если ваши устройства работают в другом плане, передайте
regionявно.
См. также
- Multicast-группы — что такое группа, порядок команд и ограничения.
add_device_to_multicast_req— записать устройство в состав группы.