Создавайте устройства с корневыми ключами на дополнительных серверах соединения, таких как Global Join Server
В настоящее время невозможно создать устройство, например, на сервере Global Join Server, и активировать его в регионе, размещенном в облаке TTI, через консоль. Требуется командная строка с нетривиальной конфигурацией. У нас возникнет такая же проблема в сети сообщества.
Мы хотим, чтобы люди использовали Global Join Server по умолчанию, чтобы с самого начала помещать ключи в нужное место.
Консоль поддерживает два режима создания устройства; Внешний сервер присоединения (опыт отслеживается на https://github.com/TheThingsNetwork/lorawan-stack/issues/2119) и локальный сервер присоединения кластера. В # 2644 уже идут улучшения; это было бы продолжением шага мастера.
Множественные варианты, настраиваемые. Например, в TTI Cloud Hosted:
<tenant>.join.cloud.thethings.industries
. Это означает межкластерный вызовДоступность, имя и адрес кластера являются конфигурацией. Нам понадобится следующая конфигурация:
console:
extra-join-servers:
- name: 'Global Join Server'
address: 'join.cloud.thethings.industries'
join-euis:
- '70B3D57ED0000000/64'
- name: 'My Custom Join Server'
address: 'example.com'
join-euis:
- '0000000000000000/0'
Локальный кластерный сервер присоединения неявно доступен, если сервер присоединения включен в конфигурации консоли.
Сторонний сервер присоединения всегда доступен. Вероятно, мы должны явно назвать его «сторонним», потому что «внешний» сбивает с толку (дополнительные JS также являются внешними по отношению к кластеру).
extra-join-servers: [{ name: 'Test', address: 'localhost' }]
: должно быть два варианта, с сервером присоединения к кластеру как «дополнительный», показанный как «Тест».Можно просмотреть
Просто для ясности:
В настоящее время невозможно создать устройство, например, на сервере Global Join Server, и активировать его в регионе, размещенном в облаке TTI, через консоль.
Это технически возможно, но конечное устройство необходимо зарегистрировать дважды: на внешнем JS, а затем в размещенном в облаке. Правильно?
Множественные варианты, настраиваемые. Например, в TTI Cloud Hosted:
1. Создать на сервере глобального соединения; введенные ключи будут установлены на.join.cloud.thethings.industries. Это означает межкластерный вызов
2. Создать на кластерно-локальном сервере соединения; введенные ключи будут настроены на кластер маршрутизации
3. Используйте сторонний сервер присоединения (например, сервер присоединения Semtech); существующее поведение
Итак, вариант 2 уже поддерживается в Консоли. Варианты 1 и 3 в некоторой степени поддерживаются, но кто-то (пользователь или производитель устройства должен зарегистрировать / потребовать конечное устройство на внешнем / стороннем JS). Если вы понимаете это правильно, все, что мы пытаемся сделать, - это упростить вариант 1, чтобы конечные устройства регистрировались только в CH один раз, а ключи автоматически сохранялись в GJS. Для варианта 3 текущей функциональности для external JS
должно хватить. Это правильно?
Доступность, имя и адрес кластера являются конфигурацией. Нам понадобится следующая конфигурация:
Как это настроено? Это уже поддерживается в стеке?
Это технически возможно, но конечное устройство необходимо зарегистрировать дважды: на внешнем JS, а затем в размещенном в облаке. Правильно?
Да, но именно здесь создание и настройка сбивают с толку. Устройство создано на IS + JS, но еще не на NS + AS. Итак, он указан, но не полон. В кластере маршрутизации пользователю нужно будет перейти к устройству и «отредактировать» его.
Если вы понимаете это правильно, все, что мы пытаемся сделать, - это упростить вариант 1, чтобы конечные устройства регистрировались только в CH один раз, а ключи автоматически сохранялись в GJS.
да. Итак, для ясности: ручная вставка ключей все еще происходит, но теперь в консоли кластера маршрутизации.
Для варианта 3 текущей функциональности для
external JS
должно хватить. Это правильно?
Да, здесь нет никаких изменений, хотя мы могли бы сейчас назвать этот «сторонний сервер присоединения».
Как это настроено? Это уже поддерживается в стеке?
Нет, это новая конфигурация консоли.
Расширен пример с помощью префиксов JoinEUI для каждого сервера соединения. Это должно ограничить запись JoinEUI.
Повышение приоритета, поскольку концепция Global Join Server остается сложной задачей cc @benolayinka
Связанная заблокированная проблема: https://github.com/TheThingsNetwork/lorawan-stack/issues/2694
Надеюсь, не заблокировано улучшение формы UX в целом?
Я пытаюсь понять, что именно нужно от пользователя в каждом конкретном случае:
Вариант 1. Активировать на GJS
Пользователь вводит:
DevEUI - предоставляется mfr (или создается пользователем, если это arduino)
JoinEUI - предоставляется mfr (или создается пользователем, если это arduino)
AppKey - создается пользователем
NwkKey - создается пользователем
Присоединиться к серверу - флажок «также активировать на GJS» установлен по умолчанию.
Вариант 2: активировать на кластере JS
Пользователь вводит:
DevEUI - предоставляется mfr (или создается пользователем, если это arduino)
JoinEUI - предоставляется mfr (или создается пользователем, если это arduino)
AppKey - создается пользователем
NwkKey - создается пользователем
Присоединиться к серверу - снимите флажок "использовать GJS"
Вариант 3: сторонний JS
DevEUI - должен быть предоставлен производителем
JoinEUI - должен быть предоставлен производителем
AppKey - создается пользователем
NwkKey - создается пользователем
Присоединиться к серверу - выберите «сторонний»
два дополнительных qs
@benolayinka ваше понимание правильное. Незначительное замечание: _provisioning_ происходит (1) на GJS или (2) кластерном JS, или инициализация уже произошла на (3) внешнем сервере соединения. В варианте 3 нет никаких сгенерированных или предоставленных корневых ключей: это как сейчас.
- Означает ли это, что пользователи могут зарегистрировать любую пару DevEUI / JoinEUI в GJS? разве это не открывает дверь для конфликтов?
Да, но это уже так. Мы выясним это позже, когда заявим о праве собственности на устройство.
2. каков процесс последующей активации устройства в другом кластере, которое ранее было зарегистрировано в GJS?
Это в основном (3): значит, устройство уже подготовлено. Поэтому в вариантах 1 и 2 должно быть ясно, что речь идет о предоставлении ключей (и пользователь выбирает где), а вариант 3 указывает на уже подготовленное устройство.
@bafonins что это заблокировано?
Удаление prio/medium
@johanstokking Пользовательский интерфейс заблокирован на https://github.com/TheThingsNetwork/lorawan-stack/issues/2813.
Ничто не мешает нам расширить конфигурацию консоли списком дополнительных серверов присоединения. Однако я бы предпочел добавить конфигурацию и адаптировать пользовательский интерфейс в том же PR.
Включите это в новые экраны для создания конечного устройства.
Заменено на # 3770