大家好,
概括
关于 _MULTICAST DEVICES REGISTRATION_ 和 _MULTICAST DOWNLINK_ 通过控制台和 CLI 的问题
通过控制台重现多播注册的步骤
我添加了一个带有以下参数的终端设备:
我通过控制台安排了多播下行链路
_观察:_ 多播地址、多播 NwkSKey 和多播 AppSKey 是我在我的物理 OTAA 终端设备中生成的相同设置多播参数,遵循 Lora 联盟发布的协议“_LoRaWAN® 远程多播设置规范 v1.0.0_ (https:/ /lora-alliance.org/resource-hub/lorawanr-remote-multicast-setup-specification-v100)”。
我现在看到了什么?
注册顺利,下行安排成功
问题是什么?
注册后,我注意到注册的多播设备不是_激活模式多播_,而是_激活模式 ABP_。 为什么会这样? 即使设备处于_激活模式 ABP_,我是否可以通过控制台安排有效的多播下行链路?
通过 CLI 重现多播注册的步骤
按照 Things Stack 指令 (https://thethingsstack.io/devices/class-c-multicast/) :
添加组播设备:
$ ttn-lw-cli 终端设备创建 app1 mc1
--frequency-plan-id EU_863_870
--lorawan-版本 1.0.3
--lorawan-phy-版本 1.0.3-a
--session.dev-addr 00000001
--session.keys.app-s-key.key 0D810699B2B54A421853B1B0661B2724
--session.keys.nwk-s-key.key B1D1033EFDAAC8D91BC0D0F0F9C00798
--多播
--supports-class-c
使用MQTT (mosquitto)的计划多播下行链路
_Mosquitto 命令:_ C:Programmimosquitto>mosquitto_pub -h movexxxx.xxx.xxxx.xxxx.xxxx.com -t "v3/ app1@movexxxx/devices/ mc1 /down/push" -u " app1@movexxxx " -P "NNSXS .YNQ5LIW5SExxxx" -m '{"下行链路":[{"frm_payload":"ciao","f_port":42,"priority":"NORMAL","class_b_c":{"gateways":[{"gateway_ids": {"gateway_id":" gtwid "}}],"absolute_time":"2020-10-28T20:20:00Z"}}]}' -d
我现在看到了什么?
添加的多播设备结果为_激活模式多播_,就像它应该的那样。
蚊子下行的答案如下:
_Mosquitto 回答:_ 客户端 mosqpub|23216-LAPTOP-OE 发送 CONNECT
客户端 mosqpub|23216-LAPTOP-OE 收到 CONNACK
客户端 mosqpub|23216-LAPTOP-OE 发送 PUBLISH (d0, q0, r0, m1, 'v3/ app1@movexxxxx/devices/ mc1 /down/push', ... (154 bytes))
客户端 mosqpub|23216-LAPTOP-OE 发送 DISCONNECT
问题是什么?
如果我尝试从平台发送多播下行链路消息,则会出现错误: “没有可用的下行链路路径” 。
相反,mosquitto_pub 下行链路答案是否正确? 因为我没有看到任何东西到达我的物理 OTAA 终端设备。
缺什么?
我不明白如何通过控制台将我的 OTAA 设备与我的多播组相关联。 例如,我希望看到一个多播组(带有他的 McAddress 和 Mckeys),我可以在其中添加我的 OTAA 设备,因为不清楚多播下行链路如何到达我的 OTAA 设备。
@MatteMoveSRL感谢您的问题。 如果您是具有支持计划的 TTI 客户,最好使用支持渠道。
我们在这里使用问题模板,以便我们以结构化的方式获取信息。
我注意到注册多播设备不会导致_激活模式多播_,而是_激活模式 ABP_。 为什么会这样?
我们需要复制步骤,请编辑您的帖子以遵循问题模板。
我无法从平台发送下行链路消息,因为出现“没有可用的下行链路路径”错误。 我还尝试在 Windows 上使用MQTT发送下行链路,如下所示,但没有任何东西到达我的终端设备。
请参阅https://thethingsstack.io/devices/class-c-multicast/ ,然后是Multicast Group下的第二个注释,以及如何安排下行链路的示例。
@johanstokking 非常感谢您的回答!
我更新了我的问题字符串,以按照您的建议以结构化的方式获取信息。 我希望这是可以理解的
我还是不明白这两点:
相反,mosquitto_pub 下行链路答案是否正确? 因为我没有看到任何东西到达我的物理 OTAA 终端设备
我不明白如何通过控制台将我的 OTAA 设备与我的多播组相关联。 例如,我想查看一个多播组(带有他的 McAddress 和 Mckeys),我可以在其中添加我的 OTAA 设备,因为不清楚多播下行链路如何到达我的 OTAA 设备
非常感谢您抽出宝贵的时间和您的回复。
@MatteMoveSRL mosquitto_pub 下行链路答案是否正确? 因为我没有看到任何东西到达我的物理 OTAA 终端设备
除了过去的绝对时间之外,它看起来并没有错。
但是, gtwid
是连接网关吗? 在查看网关流量时,您是否看到控制台中安排的下行链路?
@MatteMoveSRL我不明白如何通过控制台将我的 OTAA 设备与我的多播组相关联。 例如,我想查看一个多播组(带有他的 McAddress 和 Mckeys),我可以在其中添加我的 OTAA 设备,因为不清楚多播下行链路如何到达我的 OTAA 设备
我们还没有在应用服务器中实现远程多播设置协议。 所以我们不关联这个。 组播设备是一个虚拟设备。 如果您的终端设备理解单播和多播通道上的下行链路,那么您应该没问题。
@johanstokking感谢您的快速回复
但是,gtwid 是连接网关吗?
是的,网关已连接,我在 mosquitto 命令中使用了“gw-test”而不是“gtwid”。
在查看网关流量时,您是否看到控制台中安排的下行链路?
不,我没有看到任何下行链路到达我的网关“实时数据”,但我看到一些数据到达我的应用程序“foo”的“实时数据”部分:
如果您的终端设备理解单播和多播通道上的下行链路,那么您应该没问题。
那么您的意思是下行链路消息像广播消息一样到达连接到网关的所有 OTAA 设备,而不是到达特定的 OTAA 设备组?
不,我没有看到任何下行链路到达我的网关“实时数据”,但我看到一些数据到达我的应用程序“foo”的“实时数据”部分:
请订阅网关事件日志;
$ ttn-lw-cli events --gateway-id gtw-test
同时启用调试日志 ( log.level: debug
)。
然后调度下行消息并观察日志和网关事件。
那么您的意思是下行链路消息像广播消息一样到达连接到网关的所有 OTAA 设备,而不是到达特定的 OTAA 设备组?
是的,这就是 LoRaWAN 的工作原理。 每个以该特定数据速率侦听该频率的 C 类设备都将收到该消息。 他们将查看消息的 DevAddr 以查看它是否与他们拥有会话密钥的(多播)会话匹配。 如果是这样,他们会处理消息并查看 NwkSKey 是否与 MIC 等匹配。
说到这里; 你确定频率和数据速率是正确的吗? C 类为此使用 RX2 参数。 终端设备应该监听这些参数以获取多播下行链路帧。
@johanstokking感谢您的回复。
是的,这就是 LoRaWAN 的工作原理。 每个以该特定数据速率侦听该频率的 C 类设备都将收到该消息。 他们将查看消息的 DevAddr 以查看它是否与他们拥有会话密钥的(多播)会话匹配。 如果是这样,他们会处理消息并查看 NwkSKey 是否与 MIC 等匹配。
谢谢我明白了。 你说得很清楚。
说到这里; 你确定频率和数据速率是正确的吗? C 类为此使用 RX2 参数。 终端设备应该监听这些参数以获取多播下行链路帧。
我很确定我设置了正确的参数。 在我看来,问题可能是我如何使用 MQTT 安排下行链路或与网关有关的东西。 本周我将按照您的建议尝试并回复您。
请使用论坛解决其他问题; 我们不回答有关 GitHub 问题的问题。 另请参阅问题模板。
最有用的评论
请订阅网关事件日志;
同时启用调试日志 (
log.level: debug
)。然后调度下行消息并观察日志和网关事件。
是的,这就是 LoRaWAN 的工作原理。 每个以该特定数据速率侦听该频率的 C 类设备都将收到该消息。 他们将查看消息的 DevAddr 以查看它是否与他们拥有会话密钥的(多播)会话匹配。 如果是这样,他们会处理消息并查看 NwkSKey 是否与 MIC 等匹配。
说到这里; 你确定频率和数据速率是正确的吗? C 类为此使用 RX2 参数。 终端设备应该监听这些参数以获取多播下行链路帧。