Lorawan-stack: 记录设备类型 OTAA、ABP 和多播

创建于 2019-07-08  ·  14评论  ·  资料来源: TheThingsNetwork/lorawan-stack

概括


问题

是否有可能使用 webhook 发送多播消息?
我们开发 LoRaWAN 引导加载程序(目前在 A 类工作),它非常无效。
对于 DR4 (~64kB),整个固件传输(对于一个节点)大约需要一个小时@80dBm

是否有可能使用 webhook 将固件下行链路数据作为多播消息发送到许多节点(对于应用程序)?
每个节点可以单独查询丢失的包裹。
我认为这将最大限度地减少“OTA时间”的使用。
是否有一些文档/信息?

终端设备是 Telit LoRaWAN 1.0.2

documentation in progress

最有用的评论

lorawan-stack中注册的multicast设备可以代表任意数量的物理设备。
因此,假设您有 5 台设备要在多播模式下运行 - 然后您将配置所有 5 台物理设备以供使用:

  • 相同的 DevAddr(例如00E4304D
  • 相同的会话密钥(例如,AppSKey 和 NwkSKey 分别为A0CAD5A30036DBE03096EB67CA975BAAA0CAD5A30036DBE03096EB67CA975BAA )。

然后,您将使用您选择的DevAddr和会话密钥以及设置的multicast标志在lorawan-stack中注册单个设备。
假设您调用了刚刚创建的设备dev1并且应用程序名称为app1
假设您然后继续在应用程序app1中推送dev1的下行链路(请参阅有关执行此操作的各种方法的文档),然后lorawan-stack将安排单个下行链路对于具有 DevAddr 00E4304D的设备。
与 DevAddr 00E4304D匹配的所有设备都将接收单个下行链路,即您在上面配置的所有 5 个(理想情况下)设备。

请注意,某些物理设备实际上能够同时参与多个会话。
假设您有 5 个这样的设备,并且您希望它们作为 OTAA 运行,同时也是多播组的一部分:

  1. 您可以将每个设备注册为单独的 OTAA 设备,每个设备都有自己的设备 ID。 (因此,注册 5 个设备 - 每个物理设备 1 个)
  2. 您可以将单个设备注册为具有不同设备 ID 的多播设备。(因此,注册 1 个设备 - 每个多播组 1 个)

这里要理解的关键是注册的多播设备可能代表多个物理设备,但是所有这些物理设备都必须共享 DevAddr 和会话密钥。

所有14条评论

删除了“问题”类型问题的不相关部分

编号 #890

问:是否可以使用 webhook 发送多播消息?

答:是的,堆栈支持将 C 类多播会话注册为具有--multicast标志的任何其他终端设备。 这在我们的入门中有所描述: https ://github.com/TheThingsNetwork/lorawan-stack/blob/master/doc/gettingstarted.md#creating -a-device

问:是否有可能使用 webhook 将固件下行链路数据作为多播消息发送到许多节点(对于应用程序)?

答:是的,多播会话已注册为任何其他设备,因此您可以按照与普通设备完全相同的方式安排到它的下行链路。

问:是否有一些文档/信息?

A:不超过目前的入门。

@rvolosatovs @adriansmares IIRC 你们用 C 类和多播进行了测试,对吧? 我们应该为此写一个很好的文档页面吗?

如果是,那么让我们在执行此操作之前等待#401。

@htdivsser - 感谢您的回复。 我刚开始就看到了。

webhook (url) 的语法是:
curl http://localhost :1885/api/v3/as/applications/ap2/webhooks/fwup/devices/dv1/down/push -X POST -H '授权:承载 NNSXS.CLCIYOYYEDPLJSSWRNMYS5KCDI45HOE6M3WZIDY.E6DXAAZ4HSX2V6VL7C3244HGNKBO24SEROTXOZURJHWWWOMWZQ' --data "下行链路":[{"frm_payload":"vu8=","f_port":15,"priority":"NORMAL"}]}'

为下行目标指定了单个设备名称

那么 webhook 向多个设备强制执行多播消息的语法是什么?

这个想法是您注册一个代表包含多个物理设备的多播组的“伪设备”。 当使用 webhook 调度到多播组的下行链路时,您将其定位在这个伪设备上。

正如您在入门中所见,此类伪设备的注册与 ABP 设备的注册基本相同。 DevAddr 是多播地址,NwkSKey 是 McNwkSKey,AppSKey 是 McAppSKey。

由于我们还没有实现Remote Multicast Setup,所以设备端的组播会话仍然需要应用层来设置。

@htdvisser谢谢。
多播伪设备是否必须是 ABP?
我希望它不会与直接访问真实的终端设备发生冲突?

在您提到的入门中,我找不到有关创建伪设备并将设备添加到此“组”的任何信息。

我还检查过:
ttn-lw-cli --help
ttn-lw-cli end-devs --help
ttn-lw-cli 开发--帮助
并且看不到伪设备和组的“直观”描述。

你能提供命令来实现这个吗?

@ecities多播设备必须是 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
所以我们只需要选择一个??:
- 带有 otta 的标准开发(A 类或 C 类)
-multicast dev with abp (class C) - 在设备创建时创建的标志,不能被删除。 根本无法上传数据。

或者也许有解决方法,例如:将设备添加到 2 个不同的应用程序?
1)正常(上行/下行)工作(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 \
--frequency-plan-id EU_863_870 \
--lorawan-版本 1.0.2 \
--lorawan-phy-版本 1.0.2-b \
--abp\
--session.dev-addr 00E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--多播

ttn-lw-cli 终端设备创建 app1 dev2 \
--frequency-plan-id EU_863_870 \
--lorawan-版本 1.0.2 \
--lorawan-phy-版本 1.0.2-b \
--abp\
--session.dev-addr 00E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--多播

这样对吗?

并想使用 webhook 向他们发送多播消息。
我仍然不清楚 webhook 的 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

??

lorawan-stack中注册的multicast设备可以代表任意数量的物理设备。
因此,假设您有 5 台设备要在多播模式下运行 - 然后您将配置所有 5 台物理设备以供使用:

  • 相同的 DevAddr(例如00E4304D
  • 相同的会话密钥(例如,AppSKey 和 NwkSKey 分别为A0CAD5A30036DBE03096EB67CA975BAAA0CAD5A30036DBE03096EB67CA975BAA )。

然后,您将使用您选择的DevAddr和会话密钥以及设置的multicast标志在lorawan-stack中注册单个设备。
假设您调用了刚刚创建的设备dev1并且应用程序名称为app1
假设您然后继续在应用程序app1中推送dev1的下行链路(请参阅有关执行此操作的各种方法的文档),然后lorawan-stack将安排单个下行链路对于具有 DevAddr 00E4304D的设备。
与 DevAddr 00E4304D匹配的所有设备都将接收单个下行链路,即您在上面配置的所有 5 个(理想情况下)设备。

请注意,某些物理设备实际上能够同时参与多个会话。
假设您有 5 个这样的设备,并且您希望它们作为 OTAA 运行,同时也是多播组的一部分:

  1. 您可以将每个设备注册为单独的 OTAA 设备,每个设备都有自己的设备 ID。 (因此,注册 5 个设备 - 每个物理设备 1 个)
  2. 您可以将单个设备注册为具有不同设备 ID 的多播设备。(因此,注册 1 个设备 - 每个多播组 1 个)

这里要理解的关键是注册的多播设备可能代表多个物理设备,但是所有这些物理设备都必须共享 DevAddr 和会话密钥。

@rvolosatovs非常感谢非常好的“逐步”解释,它消除了大部分假设

我认为值得复制到入门手册或多播文档,因为这在实践中并不那么明显

问候,

罗伯特

@ecities不客气,很高兴我能帮上忙!
@adriansmares你能把这个捡起来吗?

@adriansmares建议我们更详细地解释一下 OTAA、ABP 和多播设备是什么,尤其是后者。

我正在尝试创建 --multicast 设备(从入门示例复制的命令)

ttn-lw-cli 终端设备创建 ap3 lldv3 \
--frequency-plan-id EU_863_870 \
--lorawan-版本 1.0.2 \
--lorawan-phy-版本 1.0.2-b \
--abp\
--session.dev-addr 11E4304D \
--session.keys.app-s-key.key A0CAD5A30036DBE03096EB67CA975BAA \
--session.keys.nwk-s-key.key B7F3E161BC9D4388E6C788A0C547F255 \
--多播

并收到一条消息:
未知标志:--multicast

ttn-lw-cli 版本
物联网命令行界面:ttn-lw-cli
版本:3.0.3
围棋版本:go1.12.5
操作系统/架构:linux/amd64

请等待v3.1.0或从源代码构建master ,请参阅DEVELOPMENT.md

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

johanstokking picture johanstokking  ·  5评论

adamsondelacruz picture adamsondelacruz  ·  7评论

htdvisser picture htdvisser  ·  9评论

adriansmares picture adriansmares  ·  9评论

johanstokking picture johanstokking  ·  8评论