当前位置:   article > 正文

【LoRaWAN】节点+网关+chirpstack实现组播功能

chirpstack

本文主要实现了 【LoRaWAN】组播功能,使用 chirpstack 的 api 下发组播数据,两个节点同时收到数据

1. 组播实验结果

描述:使用 chirpstackapi 作为数据下发控制,分别控制 lm401 和 RAK 两个节点。

完成: 下发同一组指令,3个节点同时受到指令

image-20230608191705829

组播功能测试

1️⃣ : 3个节点都是 OTAA 入网模式,工作模式为class C,并且3个节点的 devaddr 相同

2️⃣ : 3节点的接收数据频率速率APPSKEY NWKSKEY 都相同

关于RAK节点 AT指令官方说明:【RAK3272 节点 AT 指令说明】

Class B/C 下行+EVT:< status >RX3/RXC, RSSI -110, SNR 5 = 表示已经在PingSlot接收窗口中接收到数据
PortNumber:12345678 = 接收到来自PortNumber端口的二进制数据
UNICAST =让主机知道Rx处于B类单播模式
MULCAST MC1 =组播组1接收到数据

2. lorawan 组播功能

参考 chirpstack关于多播组的官方描述

通过创建多播组,可以将单个下行链路有效负载发送到一组设备(多播组)。

所有这些设备 共享相同的多播地址、会话密钥和帧计数器

创建多播组后,可以将设备分配给该组。还必须为设备配置多播地址、会话密钥等…

注意 多播功能不支持 classA模式,一个设备一次属于一个多播组

2.1 设备端设置

参考官方手册:
remote_multicast_setup_v1.0.0.pdf
fuota_process_summary-v1.0.0.pdf

节点设备的固件必须开发支持多播的功能

  • 使用 McGroupSetupReq 命令,将数据包发送到多播组的每个设备,此命令告诉每个设备(DevAddr、NwkSKey、AppSKey 等)将用于多播组
  • 当服务器发送下行数据时,应用程序可以将数据包发送McClassCSessionReq到每个设备。。这会告知设备何时进入多播模式以及应使用哪个多播组。设备必须根据时间同步协议或其他方式进行时间同步
  • 在配置的时间McClassCSessionReq,所有设备将切换到c类组播模式,并从命令中获取身份McGroupSetupReq,并进行监听。那时您可以向多播组发送下行链路数据包,设备将收到。

2.2 服务器端配置

注意: 在 chirpstack 中无法使用 UI 设置组播发送下行链路数据,需要使用 REST API 进行组播下行链路。

利用chirpstackAPI接口需要获取 JWT TOKEN 才可以使用,请参考我的博客:【ChirpStack 】如何获取 JWT TOKEN并利用 API 下发数据?

打开网址: http://127.0.0.1:8080/api#!/MulticastGroupService/Enqueue 其中,127.0.0.1:8080,替换为你的chirpstack 的地址和端口。

使用 POST /api/multicast-groups/{multicast_queue_item.multicast_group_id}/queue接口,

image-20230606163931029

{
  "multicastQueueItem": {
    "data": "AQ==",
    "fCnt": 0,
    "fPort": 2,
    "multicastGroupID": "fc241d9ad2e64c5ba5c9dc86cdd8dab8"
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.3 组播配置实例

参考:利尔达LoRaWAN组播配置示例

【单播】

1️⃣ : 为节点设备 设置组播地址,该地址从服务器获取,大小端与服务器相反。(如服务器地址:E0 20 93 CC,则模组应配置为CC 93 20 E0)

2️⃣ : 配置节点端的数据接收的速率与频率,与服务器配置保持一致(如 dr0 以及 rx2= 505300000

【多播】

⚠️: 多播配置中,组播地址大小端与服务器相同

字符: base64编码 16进制数(0x)

hello aGVsbG8= 68 65 6c 6c 6f

RAK UkFL 52 41 4B

3. 一个lorawan 组播的 demo实例

来自于YouTube 的视频介绍:LoRaWAN Multicast Demo Introdction

Multicast in LoRaWAN allows to send one frame to many end-devices at the same time. We use a STM32WL, a LoRaWAN Gateway and Actility Community Network Server. But it works with TTN or any other Network Server supporting the Multicast Application Layer on port 200.

You can find more information:

1️⃣ In the eBook “LoRaWAN advanced” available for free here [LoRa LoRaWAN and IoT]

2️⃣ The open source dashboard Multicast server https://github.com/SylvainMontagny/fuota-server/tree/main/multicast

3️⃣ STM32WL Firmware https://github.com/SylvainMontagny/STM32WL

实例使用的是4块 STM32WL55作为 end_node,工作在 class C模式。

3.1 【设备分组】

在这里插入图片描述

3.2 【组播工具】

使用工具 Multicast Session Generator,用于创建组播信息

3.3 【demo步骤】

  • 设置组播的上下文信息 context,每个组通过组播 session key(会话密钥) 为特征,使用 Multicast Session Generator工具获取这些密钥

4. chirpstack + RAK3172 组播测试实例

4.1 RAK3172 节点设置

参考: https://docs.rakwireless.com.cn/Product-Categories/WisDuo/RAK3272S-Breakout-Board/AT-Command-Manual/#at-addmulc

/*查询组播组*/
AT+LSTMULC=?
/*设置组播参数,注意这 6个参数要和下图框出来的5个参数 以及组播的classc 模式对应起来 */
AT+ADDMULC=C:01020a0b:2B7E151628AED2A6ABF7158809CF4F3C:2B7E151628AED2A6ABF7158809CF4F3C:505300000:1    
  • 1
  • 2
  • 3
  • 4

4.2 chirpstack 数据下发

注意:实测的时候,chirpstack 中的DR 设置为0,时节点是收不到数据的,只有设置为1-6时,节点才可以收到数据,原因暂未找到。
怀疑是开源的chirpstack 对DR0作了限制?

datarateconfiguration比特率 bpsmaxmum paload sizebyte(byte)空中传播时间(10字节为例)传播距离 km
DR_0SF12 / 125 Khz290511400ms14
DR_1SF11 / 125 Khz44051740ms22
DR_2SF10 / 125 Khz98051370ms8
DR_3SF9 / 125 Khz1760115200ms6
DR_4SF8 / 125 Khz3125222100ms4
DR_5SF7 / 125 Khz547022256ms2
DR_6SF7 / 125 Khz22256ms2
7fsk 51kbps222

image-20230607145532317

4.3 测试结果演示

【chirpstack api 下发组播命令,节点接收】

chirpstack组播命令

5. FUOTA 技术前言调研

**FUOTA全称 :**Firmware update over the air,(空中固件无线升级)

5.1 前沿文章

慧联应用研究|FUOTA技术在LoRaWAN中的实现

慧联应用研究|浅谈LoRaWAN组播技术原理(技术篇)

慧联应用研究|浅谈LoRaWAN组播技术和应用(市场篇)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/171198
推荐阅读
相关标签
  

闽ICP备14008679号