Группы рассылки (Multicast)
Multicast-группа — общий адрес и общие ключи, по которым несколько устройств принимают один и тот же кадр downlink. В разделе «Multicasts» веб-интерфейса ONS группы создают, меняют и удаляют. Добавить устройства в группу и отправить группе данные из веб-интерфейса нельзя — см. Что важно знать.
Что такое группа в веб-интерфейсе
Пункт меню «Multicasts» стоит между «Узлы» и «Частотные планы» и открывает список групп по адресу /multicast. Название пункта в русском интерфейсе не переведено. Новую группу создают на странице /multicast/add, существующая открывается по своему Multicast EUI: /multicast/<Multicast EUI>.
На сервере группа хранится как запись устройства с пометкой multicast-группы. Multicast EUI записывается как DevEUI, multicast-адрес — как DevAddr, тип группы — как класс устройства, DR — как фиксированная скорость передачи, частота — в отдельное поле.
Поэтому EUI и адрес группы должны быть уникальны среди всех активных записей — и групп, и устройств. При совпадении сервер группу не сохранит и вернёт ошибку «This combination of uniq fields already exists.». EUI и адрес удалённой группы снова свободны.
Веб-интерфейс только хранит параметры группы. Он не добавляет в группу устройства, не отправляет группе данные и не записывает адрес и ключи группы в устройства.
Кто видит раздел и кто может менять группы
| Что | Кому доступно |
|---|---|
| Пункт меню «Multicasts» и сам раздел | Группы admin, monitoring и суперпользователь (superuser) |
| Кнопка «Добавить multicast узел» и действие «Удалить» в списке | Группы admin, node_admin и суперпользователь |
| Действие «Права» в списке | Группа dealer и суперпользователь |
Заполнение и сохранение новой группы на странице /multicast/add | Группы admin, node_admin и суперпользователь |
| Изменение существующей группы | Решают права пользователя на эту группу, которые возвращает сервер: они важнее групп пользователя |
Группа node_admin есть в правах экранов раздела, но её нет в списке групп, которым виден пункт меню «Multicasts». Доступ к адресам раздела проверяется по тому же списку, поэтому пользователь только из группы node_admin в раздел не попадёт.
Список групп
- Поиск — поле и кнопка «Найти». Сервер ищет по Multicast EUI, multicast-адресу, имени приложения, описанию и значениям дополнительных полей.
- Добавить multicast узел — открывает страницу новой группы
/multicast/add. - Флажки строк — отмеченные группы, к которым применится действие.
- Действие и Выполнить — выбор действия «Удалить» или «Права» и его запуск. Рядом видно, сколько строк отмечено.
- Настройки таблицы (шестерёнка) — переключатель «Сокращать текст».
- Multicast EUI — ссылка на страницу группы.
- Приложение — по этому столбцу и по столбцу «Описание» можно сортировать. В строках — ссылки на страницы приложений, если пользователю разрешён их просмотр.
- Размер таблицы — сколько строк показывать на странице, по умолчанию 25.
| Столбец | Что показывает |
|---|---|
| «Multicast EUI» | EUI группы; ссылка на страницу группы |
| «Приложение» | Приложение группы. Ссылка на страницу приложения, если пользователю разрешён его просмотр, иначе просто текст |
| «Описание» | Описание группы |
После поиска рядом с полем видно, сколько групп найдено («Найдено») и сколько их всего («Всего»). Сервер ищет без учёта регистра по Multicast EUI, multicast-адресу, имени приложения, описанию и значениям дополнительных полей.
Сортировать можно по столбцам «Приложение» и «Описание». Сортировка по столбцу «Multicast EUI» в текущей версии не работает: интерфейс передаёт серверу поле сортировки multicast_eui, которого нет среди допустимых, сервер отвечает ошибкой, и её текст появляется вместо строк таблицы. Строки вернутся после сортировки по другому столбцу.
На странице по умолчанию 25 строк. Другое число вводят в поле внизу списка и нажимают «Размер таблицы». В меню с шестерёнкой «Настройки таблицы» есть переключатель «Сокращать текст». Поиск, сортировку, номер страницы, размер таблицы и режим сокращения браузер запоминает в localStorage под ключом multicast_node_list.
Действие над несколькими группами:
- Отметьте строки.
- В поле «Действие» выберите «Удалить» или «Права».
- Нажмите «Выполнить». Кнопка неактивна, пока не выбраны действие и хотя бы одна строка.
Удаление групп и действие «Права»
Удалить группу можно только из списка: на странице группы кнопки удаления нет.
- Отметьте группы, выберите действие «Удалить» и нажмите «Выполнить».
- Подтвердите вопрос «Вы действительно хотите удалить узлы?».
- Итог появится сообщением «Узлы удалены» со списком EUI удалённых групп.
Если среди отмеченных есть группа, которую пользователю удалять нельзя, сервер удалит остальные, а интерфейс покажет только «Что-то пошло не так». Список на экране при этом не обновится — обновите страницу и проверьте, какие группы удалены. Ссылка «Выбрать все (N)» рядом с кнопкой «Выполнить» для удаления не работает: сервер отклоняет запрос целиком, ничего не удаляет, а интерфейс показывает то же сообщение.
Группа не стирается из базы. Сервер помечает её неактивной, записывает дату отключения, снимает выданные на неё права пользователей и групп и добавляет в журнал действий пользователей запись «Удаление». Группа пропадает из списка, а её EUI и адрес можно занять снова. Удаление сервер разрешает суперпользователю, владельцу приложения группы и пользователю с правом удаления на эту группу (delete_node).
Действие «Права» в текущей версии ничего не меняет: окно выбора прав открывается, но после подтверждения интерфейс не отправляет запрос на сервер.
Создание группы
- В списке нажмите «Добавить multicast узел» — откроется страница
/multicast/add. - Выберите «Приложение» и введите «Multicast EUI».
- Проверьте «Multicast адрес», «Nwks key» и «Apps key»: они уже заполнены случайными значениями. Если в устройства уже записаны адрес и ключи группы, введите их.
- Заполните поле «Частота»: без него форма не считается заполненной и кнопка «Добавить» неактивна.
- Нажмите «Добавить». Группа создаётся, появляется сообщение «Multicast добавлен», и открывается список.
- Приложение — приложение группы.
- Multicast EUI — EUI группы, 16 hex-символов. Обязательно.
- Кнопки копирования — «Copy big endian» и «Copy little endian», см. Адрес и ключи: формат и копирование.
- Multicast адрес — уже заполнен случайным адресом от сервера.
- Регион — частотный план группы, по умолчанию KZ865-868. Значок информации открывает окно «Частотный план».
- Частота — обязательно: без неё кнопка «Добавить» неактивна.
- Nwks key и Apps key — ключи группы. При открытии страницы заполнены случайными значениями; если ключи уже записаны в устройства, введите их — на снимке ключи вписаны вручную.
- Добавить — создаёт группу и открывает список.
Поля левой панели и правой панели «LoRaWAN AES128 ключи»:
| Поле | Что задаёт | По умолчанию |
|---|---|---|
| «Приложение» | Приложение группы. В списке — не больше 50 первых по имени активных приложений, которые видит пользователь; остальные выбрать нельзя | — |
| «Multicast EUI» | EUI группы, 16 hex-символов. Обязательно | — |
| «Multicast адрес» | Адрес группы (DevAddr), 8 hex-символов | Случайный адрес от сервера |
| «Регион» | Частотный план группы. В списке все 38 планов, коды 0–37, см. Коды регионов. Значок информации рядом открывает окно «Частотный план» с кратким описанием выбранного плана | KZ865-868 (код 6) |
| «Тип группы» | Класс LoRaWAN группы: B или C | C |
| «Частота» | Частота группы, число. Обязательно. Единица в форме не указана | — |
| «DR» | Скорость передачи группы: пусто или DR0–DR15. Пустое значение сервер не принимает — сохранение завершится ошибкой | DR0 |
| «Описание» | Описание группы, до 255 символов | — |
| «Nwks key» | NwkSKey группы, 32 hex-символа. Подпись под названием — «Ключ сенса сети» (так в интерфейсе) | Случайный ключ |
| «Apps key» | AppSKey группы, 32 hex-символа. Подпись под названием — «Ключ сеанса приложения» | Случайный ключ |
Под ключами — примечание: ключ AES128 при копировании и вставке нужно использовать как есть.
При создании сервер проверяет, что выбранное приложение активно и пользователь вправе в нём работать, и добавляет в журнал действий пользователей запись «Добавление».
Класс B ONS не поддерживает — см. Классы устройств. Поэтому в поле «Тип группы» выбирайте C.
Адрес и ключи: формат и копирование
Поля «Multicast EUI», «Multicast адрес», «Nwks key» и «Apps key» принимают hex только в верхнем регистре. Ошибки формы:
- строчные буквы — «Введите действительное шестнадцатеричное значение в верхнем регистре: например "FF0022"»;
- значение короче нужного — «Минимальная длинна 16 (сейчас 12)» (так в интерфейсе; числа зависят от поля).
Значения по умолчанию на странице новой группы:
- ключи — случайные 32 hex-символа в верхнем регистре; их генерирует браузер;
- адрес — случайный DevAddr от сервера. Сервер строит его из NetID сети, заданного в настройках сервера (по умолчанию
000021), и проверяет, что такого адреса ещё нет среди существующих; на подбор у него до 10 попыток.
У EUI, адреса и каждого ключа по две кнопки копирования: «Copy big endian» копирует значение как есть, «Copy little endian» — с обратным порядком байтов (01020304 → 04030201). Подсказки этих кнопок на английском и не переведены.
Изменение группы
Страница группы открывается щелчком по Multicast EUI в списке. В заголовке — «EUI - адрес» группы и описание, обрезанное до 56 символов. Кнопка-стрелка с подсказкой «Назад к multicast узлам» возвращает к списку. В боковом меню под «Multicasts» появляется пункт с Multicast EUI группы и вложенный пункт «Данные» — переход к таблице «Данные». На странице новой группы этих пунктов нет.
- Назад к multicast узлам — кнопка-стрелка, возвращает к списку.
- Заголовок — «EUI - адрес» группы и описание, обрезанное до 56 символов.
- Пункты бокового меню — Multicast EUI группы и вложенный пункт «Данные», переход к таблице «Данные».
- Данные — таблица данных группы: без фильтров по направлению и MType, без столбцов RSSI и LSNR.
- Приложение — сменить приложение у существующей группы нельзя: сервер оставляет группу в прежнем приложении.
- Multicast адрес — после «Сохранить и продолжить редактирование» заполняется новым случайным адресом от сервера.
- Сохранить — сохраняет изменения и возвращает в список.
- Сохранить и продолжить редактирование — сохраняет изменения и оставляет на странице. Обе кнопки активны, только когда в форме есть изменения и все поля заполнены верно; на снимке форма ещё не менялась.
| Кнопка | Что делает |
|---|---|
| «Сохранить» | Сохраняет изменения и возвращает в список |
| «Сохранить и продолжить редактирование» | Сохраняет изменения и оставляет на странице. После сохранения поле «Multicast адрес» заполняется новым случайным адресом от сервера; если затем изменить другое поле и сохранить, группа получит этот новый адрес |
После сохранения появляется сообщение «Multicast обновлен», а в журнал действий пользователей добавляется запись «Изменение». Кнопки активны, только когда в форме есть изменения и все поля заполнены верно.
Можно ли менять группу, решают права пользователя на неё:
- без права изменения поля доступны только для чтения, а панели с кнопками нет;
- поле «Приложение» заблокировано и тогда, когда у пользователя нет права
add(добавление) на приложение группы.
Сменить приложение у существующей группы нельзя. Даже если поле «Приложение» доступно и в нём выбрано другое приложение, сервер при сохранении оставляет группу в прежнем приложении.
Таблица «Данные» на странице группы
На странице существующей группы над формой — таблица «Данные». Фильтров по направлению и по типу сообщения (MType) в ней нет, столбцы RSSI и LSNR скрыты. На странице новой группы таблицы нет.
Что важно знать
- Состав группы здесь не задаётся. Добавить устройство в группу из веб-интерфейса нельзя. Состав группы — отдельная запись на сервере, её ведёт команда WebSocket API
add_device_to_multicast_req. - Отправить данные группе нельзя. В веб-интерфейсе такой функции нет, а команда WebSocket API
multicast_data_reqв текущей версии проверяет запрос, но кадр не отправляет. Как отправить команду нескольким устройствам сейчас — см. Что делать сейчас. - После «Сохранить и продолжить редактирование» адрес в форме меняется. Перед следующим сохранением верните прежний адрес или откройте группу заново из списка.
- Сервер не настраивает устройства. Адрес группы и оба ключа нужно записать в каждое устройство отдельно — см. Как устройство узнаёт о группе.
- Частота и DR только хранятся. Сервер записывает их, но для передачи не использует. Единица частоты не указана ни в форме, ни в модели данных сервера; на странице
create_multicast_reqполеfreqописано в МГц. - Класс B не поддерживается. Интерфейс предлагает классы B и C, сервер принимает ещё и A, но класс B ONS не поддерживает.
- Приложение группы не меняется. Выбор другого приложения на странице группы сервер при сохранении игнорирует.
См. также
- Групповая рассылка (Multicast) — что такое multicast в ONS, что работает в текущей версии и как отправить команду нескольким устройствам сейчас.
- Multicast-группы — группа на сервере, порядок команд и что работает в текущей версии.
- Добавить устройство в multicast-группу — запись устройства в состав группы.
- Классы устройств — классы A, B и C в ONS.
- Частотные планы — частоты и скорости передачи планов.