赞
踩
本文主要实现了 【LoRaWAN】组播功能,使用 chirpstack 的 api 下发组播数据,两个节点同时收到数据
描述:使用 chirpstack
的 api
作为数据下发控制,分别控制 lm401 和 RAK 两个节点。
完成: 下发同一组指令,3个节点同时受到指令
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接收到数据 |
通过创建多播组,可以将单个下行链路有效负载发送到一组设备(多播组)。
所有这些设备 共享相同的多播地址、会话密钥和帧计数器。
创建多播组后,可以将设备分配给该组。还必须为设备配置多播地址、会话密钥等…
注意 多播功能不支持 classA模式,一个设备一次属于一个多播组
参考官方手册:
remote_multicast_setup_v1.0.0.pdf
fuota_process_summary-v1.0.0.pdf
节点设备的固件必须开发支持多播的功能
McGroupSetupReq
命令,将数据包发送到多播组的每个设备,此命令告诉每个设备(DevAddr、NwkSKey、AppSKey 等)将用于多播组McClassCSessionReq
到每个设备。。这会告知设备何时进入多播模式以及应使用哪个多播组。设备必须根据时间同步协议或其他方式进行时间同步McClassCSessionReq
,所有设备将切换到c类组播模式,并从命令中获取身份McGroupSetupReq
,并进行监听。那时您可以向多播组发送下行链路数据包,设备将收到。注意: 在 chirpstack
中无法使用 UI
设置组播发送下行链路数据,需要使用 REST API
进行组播下行链路。
利用chirpstack
的API
接口需要获取 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
接口,
{
"multicastQueueItem": {
"data": "AQ==",
"fCnt": 0,
"fPort": 2,
"multicastGroupID": "fc241d9ad2e64c5ba5c9dc86cdd8dab8"
}
}
【单播】
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
来自于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
模式。
使用工具 Multicast Session Generator
,用于创建组播信息
context
,每个组通过组播 session key
(会话密钥) 为特征,使用 Multicast Session Generator
工具获取这些密钥/*查询组播组*/
AT+LSTMULC=?
/*设置组播参数,注意这 6个参数要和下图框出来的5个参数 以及组播的classc 模式对应起来 */
AT+ADDMULC=C:01020a0b:2B7E151628AED2A6ABF7158809CF4F3C:2B7E151628AED2A6ABF7158809CF4F3C:505300000:1
注意:实测的时候,chirpstack 中的DR 设置为0,时节点是收不到数据的,只有设置为1-6时,节点才可以收到数据,原因暂未找到。
怀疑是开源的chirpstack 对DR0作了限制?
datarate | configuration | 比特率 bps | maxmum paload sizebyte(byte) | 空中传播时间(10字节为例) | 传播距离 km |
---|---|---|---|---|---|
DR_0 | SF12 / 125 Khz | 290 | 51 | 1400ms | 14 |
DR_1 | SF11 / 125 Khz | 440 | 51 | 740ms | 22 |
DR_2 | SF10 / 125 Khz | 980 | 51 | 370ms | 8 |
DR_3 | SF9 / 125 Khz | 1760 | 115 | 200ms | 6 |
DR_4 | SF8 / 125 Khz | 3125 | 222 | 100ms | 4 |
DR_5 | SF7 / 125 Khz | 5470 | 222 | 56ms | 2 |
DR_6 | SF7 / 125 Khz | 222 | 56ms | 2 | |
7 | fsk 51kbps | 222 |
【chirpstack api 下发组播命令,节点接收】
**FUOTA全称 :**Firmware update over the air,(空中固件无线升级)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。