Lorawan-stack: Документирование типов устройств OTAA, ABP и Multicast

Созданный на 8 июл. 2019  ·  14Комментарии  ·  Источник: TheThingsNetwork/lorawan-stack

Резюме


ВОПРОС

Есть ли возможность отправлять многоадресные сообщения с помощью вебхука?
Мы разрабатываем загрузчик LoRaWAN (в настоящее время работает в классе A), и он очень неэффективен.
Полная передача прошивки (для одного узла) занимает около часа при 80 дБм для DR4 (~ 64 КБ).

Есть ли возможность отправлять данные нисходящей линии прошивки в виде многоадресных сообщений на многие узлы (для приложения) с помощью веб-перехватчиков?
Затем каждый узел может запросить пропущенные пакеты индивидуально.
Я думаю, что это сведет к минимуму использование «OTA Time».
Есть ли какие-то документы/информация для этого?

Конечным устройством является Telit LoRaWAN 1.0.2.

documentation in progress

Самый полезный комментарий

Устройство multicast , зарегистрированное в lorawan-stack , может представлять произвольное количество физических устройств.
Итак, допустим, у вас есть 5 устройств, которые вы хотите использовать в многоадресном режиме, — тогда вы должны предоставить все 5 своих физических устройств для использования:

  • идентичный DevAddr (например, 00E4304D )
  • идентичные сеансовые ключи (например, A0CAD5A30036DBE03096EB67CA975BAA и A0CAD5A30036DBE03096EB67CA975BAA для AppSKey и NwkSKey соответственно).

Затем вы должны зарегистрировать одно устройство в lorawan-stack с выбранными DevAddr и ключами сеанса и установленным флагом multicast .
Допустим, вы назвали только что созданное устройство dev1 , а имя приложения — app1 .
Предположим, вы затем продолжаете нажимать нисходящий канал для dev1 в приложении app1 (пожалуйста, смотрите документацию по различным способам сделать это), тогда lorawan-stack запланирует одиночный нисходящий канал. для устройства с DevAddr 00E4304D .
Один нисходящий канал будет получен всеми устройствами, соответствующими DevAddr 00E4304D , то есть всеми 5 (в идеале) устройствами, которые вы предоставили выше.

Обратите внимание, что некоторые физические устройства могут одновременно участвовать в нескольких сеансах.
Предположим, у вас есть 5 таких устройств, и вы хотите, чтобы они работали как OTAA, а также были частью группы многоадресной рассылки:

  1. Вы должны зарегистрировать каждое устройство как отдельное устройство OTAA с собственным идентификатором устройства. (итак, зарегистрируйте 5 устройств - по 1 на каждое физическое устройство)
  2. Вы должны зарегистрировать одно устройство как устройство многоадресной рассылки с отдельным идентификатором устройства (таким образом, зарегистрируйте 1 устройство - по 1 на каждую группу многоадресной рассылки).

Ключ к пониманию здесь заключается в том, что зарегистрированное многоадресное устройство может представлять собой несколько физических устройств, однако все эти физические устройства должны иметь общие ключи DevAddr и сеанса.

Все 14 Комментарий

Убраны неактуальные разделы для вопроса типа "вопрос"

Ссылка #890

В: Есть ли возможность отправлять многоадресные сообщения с помощью вебхука?

О: Да, стек поддерживает регистрацию многоадресных сеансов класса C как любого другого конечного устройства с флагом --multicast . Это описано в нашем руководстве по началу работы: https://github.com/TheThingsNetwork/lorawan-stack/blob/master/doc/gettingstarted.md#creating -a-device

Q: Есть ли возможность отправлять данные нисходящей линии прошивки в виде многоадресных сообщений многим узлам (для приложения) с помощью веб-перехватчиков?

О: Да, сеанс многоадресной рассылки регистрируется как любое другое устройство, поэтому вы можете запланировать нисходящий канал на него точно так же, как и на обычное устройство.

Q: Есть какие-нибудь документы/информация по этому поводу?

О: Не больше, чем в настоящее время в разделе «Начало работы».

@rvolosatovs @adriansmares IIRC, вы, ребята, тестировали класс C и многоадресную рассылку, верно? Должны ли мы написать об этом хорошую страницу документации?

Если да, то давайте дождемся #401, прежде чем делать это.

@htdivsser - спасибо за ответ. Я видел это при запуске.

Синтаксис вебхука (url):
curl http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/dv1/down/push -X POST -H 'Авторизация: Носитель NNSXS.CLCIYOYYEDPLJSSWRNMYS5KCDI45HOE6M3WZIDY.E6DXAAZ4HSX2V6VL7C3244HTXBOS'Z'ZKBO24SEROHdata -- "нисходящие ссылки":[{"frm_payload":"vu8=","f_port":15,"приоритет":"НОРМАЛЬНЫЙ"}]}'

Для цели нисходящей линии связи указано одно имя устройства.

Итак, каков синтаксис веб-перехватчика, обеспечивающего многоадресную рассылку сообщений на несколько устройств?

Идея состоит в том, что вы регистрируете одно «псевдоустройство», представляющее группу многоадресной рассылки, содержащую несколько физических устройств. При использовании веб-перехватчика для планирования нисходящего канала к группе многоадресной рассылки вы нацеливаете его на это псевдоустройство.

Как видно из раздела «Начало работы», регистрация такого псевдоустройства по сути такая же, как и для устройства ABP. DevAddr — это многоадресный адрес, NwkSKey — это McNwkSKey, а AppSKey — это McAppSKey.

Поскольку мы еще не внедрили удаленную настройку многоадресной рассылки, сеанс многоадресной рассылки на стороне устройства все еще должен быть настроен на прикладном уровне.

@htdvisser спасибо.
Должно ли многоадресное псевдоустройство быть ABP?
Надеюсь, это не противоречит прямому доступу к реальным конечным устройствам?

Я не могу найти ничего о создании псевдоустройства и добавлении устройств в эту «группу» при начале работы, о которой вы упомянули.

Я также проверил:
ttn-lw-cli --help
ttn-lw-cli end-devs --help
ttn-lw-cli dev --help
и не вижу "интуитивного" описания псевдо устройств и групп.

Можете ли вы предоставить команды для достижения этого?

Устройства @ecities Multicast должны быть ABP, поскольку они не отправляют восходящие каналы и, следовательно, не поддерживают поток OTAA по определению.
Зарегистрируйте устройство так же, как и устройство ABP, но добавьте флаг multicast .

@rvolosatovs спасибо
Multicast devices have to be ABP, since they do not send uplinks and hence do not support OTAA flow by definition
Итак, мы должны выбрать только один из ??:
-стандартный разработчик с отта (класс А или С)
-multicast dev with abp (класс C) - флаг создается при создании устройства и не может быть удален. Не могу передать данные вообще.

Или, может быть, есть обходной путь, например: добавить устройства в 2 разных приложения?
1) для нормальной (uplink/downlink) работы (ap1)
2) только для многоадресной передачи по нисходящему каналу (ap2)
_Но, похоже, есть проблемы с правами доступа - мы сообщили о проблеме здесь_

Register the device same way you would an ABP device, but add the multicast flag.

Может пример:
Допустим, у меня есть 2 устройства (dev1, dev2 с одинаковыми McNwkSKey, McAppSKey и, возможно, dev-addr)
Конечные устройства ttn-lw-cli создают app1 dev1 \
--идентификатор частотного плана EU_863_870 \
--lorawan-версия 1.0.2 \
--lorawan-phy-версия 1.0.2-b \
--абп \
--session.dev- адрес 00E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--многоадресная рассылка

Конечные устройства ttn-lw-cli создают app1 dev2 \
--идентификатор частотного плана EU_863_870 \
--lorawan-версия 1.0.2 \
--lorawan-phy-версия 1.0.2-b \
--абп \
--session.dev- адрес 00E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--многоадресная рассылка

Это правильно?

и хотите отправить многоадресное сообщение им обоим с помощью веб-перехватчика.
Мне все еще не ясно, какой будет URL-адрес для веб-хука?
http://localhost : 1885/api/v3/as/applications/ap2/webhooks/fwup/devices/00E4304D/down/push

Это правильно?

Или, может быть:

http://localhost : 1885/api/v3/as/applications/ap2/webhooks/fwup/devices/dev1/down/push

и он будет получен другими устройствами с теми же настройками безопасности, что и
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255

??

Устройство multicast , зарегистрированное в lorawan-stack , может представлять произвольное количество физических устройств.
Итак, допустим, у вас есть 5 устройств, которые вы хотите использовать в многоадресном режиме, — тогда вы должны предоставить все 5 своих физических устройств для использования:

  • идентичный DevAddr (например, 00E4304D )
  • идентичные сеансовые ключи (например, A0CAD5A30036DBE03096EB67CA975BAA и A0CAD5A30036DBE03096EB67CA975BAA для AppSKey и NwkSKey соответственно).

Затем вы должны зарегистрировать одно устройство в lorawan-stack с выбранными DevAddr и ключами сеанса и установленным флагом multicast .
Допустим, вы назвали только что созданное устройство dev1 , а имя приложения — app1 .
Предположим, вы затем продолжаете нажимать нисходящий канал для dev1 в приложении app1 (пожалуйста, смотрите документацию по различным способам сделать это), тогда lorawan-stack запланирует одиночный нисходящий канал. для устройства с DevAddr 00E4304D .
Один нисходящий канал будет получен всеми устройствами, соответствующими DevAddr 00E4304D , то есть всеми 5 (в идеале) устройствами, которые вы предоставили выше.

Обратите внимание, что некоторые физические устройства могут одновременно участвовать в нескольких сеансах.
Предположим, у вас есть 5 таких устройств, и вы хотите, чтобы они работали как OTAA, а также были частью группы многоадресной рассылки:

  1. Вы должны зарегистрировать каждое устройство как отдельное устройство OTAA с собственным идентификатором устройства. (итак, зарегистрируйте 5 устройств - по 1 на каждое физическое устройство)
  2. Вы должны зарегистрировать одно устройство как устройство многоадресной рассылки с отдельным идентификатором устройства (таким образом, зарегистрируйте 1 устройство - по 1 на каждую группу многоадресной рассылки).

Ключ к пониманию здесь заключается в том, что зарегистрированное многоадресное устройство может представлять собой несколько физических устройств, однако все эти физические устройства должны иметь общие ключи DevAddr и сеанса.

@rvolosatovs большое спасибо за очень хорошее «пошаговое» объяснение, которое устраняет большинство предположений

Думаю, стоит скопировать в Руководство по началу работы или документацию по многоадресной рассылке, так как на практике это не так очевидно

С уважением,

Роберт

@ecities Добро пожаловать, рад, что смог помочь!
@adriansmares , ты можешь забрать это?

@adriansmares предлагает более подробно объяснить, что такое устройства OTAA, ABP и Multicast, особенно последнее.

Я пытаюсь создать --multicast устройство (команда скопирована из примера для начала работы)

Конечные устройства ttn-lw-cli создают ap3 lldv3 \
--идентификатор частотного плана EU_863_870 \
--lorawan-версия 1.0.2 \
--lorawan-phy-версия 1.0.2-b \
--абп \
--session.dev-адрес 11E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--многоадресная рассылка

и получил сообщение:
неизвестный флаг: --multicast

версия ttn-lw-cli
Интерфейс командной строки сети Things: ttn-lw-cli
Версия: 3.0.3
Go версия: go1.12.5
ОС/архив: линукс/амд64

Подождите v3.1.0 или соберите master из исходного кода, см. DEVELOPMENT.md .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги