问题
是否有可能使用 webhook 发送多播消息?
我们开发 LoRaWAN 引导加载程序(目前在 A 类工作),它非常无效。
对于 DR4 (~64kB),整个固件传输(对于一个节点)大约需要一个小时@80dBm 。
是否有可能使用 webhook 将固件下行链路数据作为多播消息发送到许多节点(对于应用程序)?
每个节点可以单独查询丢失的包裹。
我认为这将最大限度地减少“OTA时间”的使用。
是否有一些文档/信息?
终端设备是 Telit LoRaWAN 1.0.2
删除了“问题”类型问题的不相关部分
编号 #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 台物理设备以供使用:
00E4304D
)A0CAD5A30036DBE03096EB67CA975BAA
和A0CAD5A30036DBE03096EB67CA975BAA
)。然后,您将使用您选择的DevAddr
和会话密钥以及设置的multicast
标志在lorawan-stack
中注册单个设备。
假设您调用了刚刚创建的设备dev1
并且应用程序名称为app1
。
假设您然后继续在应用程序app1
中推送dev1
的下行链路(请参阅有关执行此操作的各种方法的文档),然后lorawan-stack
将安排单个下行链路对于具有 DevAddr 00E4304D
的设备。
与 DevAddr 00E4304D
匹配的所有设备都将接收单个下行链路,即您在上面配置的所有 5 个(理想情况下)设备。
请注意,某些物理设备实际上能够同时参与多个会话。
假设您有 5 个这样的设备,并且您希望它们作为 OTAA 运行,同时也是多播组的一部分:
这里要理解的关键是注册的多播设备可能代表多个物理设备,但是所有这些物理设备都必须共享 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
。
最有用的评论
在
lorawan-stack
中注册的multicast
设备可以代表任意数量的物理设备。因此,假设您有 5 台设备要在多播模式下运行 - 然后您将配置所有 5 台物理设备以供使用:
00E4304D
)A0CAD5A30036DBE03096EB67CA975BAA
和A0CAD5A30036DBE03096EB67CA975BAA
)。然后,您将使用您选择的
DevAddr
和会话密钥以及设置的multicast
标志在lorawan-stack
中注册单个设备。假设您调用了刚刚创建的设备
dev1
并且应用程序名称为app1
。假设您然后继续在应用程序
app1
中推送dev1
的下行链路(请参阅有关执行此操作的各种方法的文档),然后lorawan-stack
将安排单个下行链路对于具有 DevAddr00E4304D
的设备。与 DevAddr
00E4304D
匹配的所有设备都将接收单个下行链路,即您在上面配置的所有 5 个(理想情况下)设备。请注意,某些物理设备实际上能够同时参与多个会话。
假设您有 5 个这样的设备,并且您希望它们作为 OTAA 运行,同时也是多播组的一部分:
这里要理解的关键是注册的多播设备可能代表多个物理设备,但是所有这些物理设备都必须共享 DevAddr 和会话密钥。