Skip to main content

在 M2 网关上批量配置 ChirpStack

本教程将指导你使用 Python 脚本,通过网关内置的 ChirpStack 平台上的 gRPC 接口,以 ABP(个性化激活)模式批量添加和激活 LoRaWAN 设备。此方法非常适合一次性部署大量设备(例如传感器节点)的场景,可显著提升配置效率。

1. 准备工作

在开始之前,请确保你满足以下条件:

  • 一台运行 ChirpStack 的 M2 室内网关,并且你知道它的 IP 地址。

  • 你已经创建了至少一个 Application 并获取了它的 Application ID

  • 你已经创建了一个 Device Profile(ABP 类型)并获取了它的 Device Profile ID

  • 你已经准备好一批待配置的设备,并为每个设备记录了以下信息:

    dev_eui(设备唯一标识符)

    name(设备名称,可选)

    description(设备描述,可选)

    dev_addr(设备地址)

    nwk_s_key(网络会话密钥)

    app_s_key(应用会话密钥)

note

你需要自行为 ABP 设备分配密钥。请确保每个设备的 dev_addr 在网络中是唯一的,并且密钥符合 LoRaWAN 规范(32 个十六进制字符,即 16 字节)。

2. 环境搭建

  1. 获取脚本文件 下载或创建以下两个文件,并将它们放在同一目录下:

    chirpstack-v3-bulk-deploy.py – 主 Python 脚本

    device_list.xlsx – 包含设备列表的 Excel 文件(稍后填写)

你也可以从 这里 下载脚本。

  1. 安装 Python 依赖 此脚本需要 Python 3.7 或更高版本,并依赖 grpcioopenpyxlchirpstack-api。我们建议使用虚拟环境,以避免污染系统自带的 Python 安装。

适用于 macOS/Linux 用户:

# create project directory
mkdir chirpstack-bulk-deploy && cd chirpstack-bulk-deploy

# create virtual environment
python3 -m venv .venv

# activate the virtual environment
source .venv/bin/activate

# install dependencies
pip install chirpstack-api openpyxl

适用于 Windows 用户:

# create project directory
mkdir chirpstack-bulk-deploy
cd chirpstack-bulk-deploy

# create virtual environment
python -m venv .venv

# activate the virtual environment
.venv\Scripts\activate

# install dependencies
pip install chirpstack-api openpyxl

3. 准备设备清单(Excel 文件)

使用 Excel、WPS 或 LibreOffice 创建一个名为 device_list.xlsx 的文件。第一行必须包含列标题;脚本将使用这些标题来识别列。列名(区分大小写)如下:

dev_euinamedescriptiondev_addrnwk_s_keyapp_s_key
0016c001f0abcde1abp-device-1test device020101012B7E151628AED2A6ABF7158809CF4F312B7E151628AED2A6ABF7158809CF4F41
...abp-device-2test device.........

note

dev_eui 必须是 16 位十六进制字符串(例如 0101010101010101)。

nwk_s_keyapp_s_key 必须是 32 位十六进制字符串(即 16 字节)。

如果某个设备的 dev_eui 为空,脚本会自动跳过该行。

如果 name 或 description 为空,脚本会填入空字符串。

4. 修改脚本配置

打开 chirpstack-v3-bulk-deploy.py,并修改文件顶部的配置参数,使其与你的实际环境相匹配。

# ===== Configuration =====
GRPC_SERVER = "192.168.x.x:8080" # replace with the real IP of the gateway + ChirpStack gRPC port(default 8080)
API_TOKEN = "YOUR API TOKEN"
APPLICATION_ID = "YOUR APPLICATION ID"
DEVICE_PROFILE_ID = "YOUR DEVICE PROFILE ID"
EXCEL_FILE = "device_list.xlsx"
# =================

参数说明:

  • GRPC_SERVER:网关的 IP 地址和 ChirpStack gRPC 端口。默认的 ChirpStack gRPC 端口为 8080。请确保你的电脑与网关处于同一子网,或可以路由访问网关。

  • API_TOKEN:ChirpStack API 密钥。获取方式:登录 ChirpStack Web 界面 → 右上角用户菜单 → “API Keys” → 创建新的 API 密钥,并至少赋予以下权限:Device: create、Device: activate 和 Device keys: create。



  • APPLICATION_ID:目标 Application 的 UUID。在 ChirpStack Web 界面中 → Applications → 选择你的 Application。

  • DEVICE_PROFILE_ID:Device Profile 的 UUID。路径:Device profiles → 选择你的 ABP Profile → 从 URL 中获取。

  • EXCEL_FILE:Excel 文件名;默认位于与脚本相同的目录中。
caution

API Token 拥有高权限,请勿泄露或将其上传到公共代码仓库。

5. 运行脚本进行批量部署

确保虚拟环境已激活,并且 chirpstack-v3-bulk-deploy.pydevice_list.xlsx 位于同一目录下,然后运行:

python3 chirpstack-v3-bulk-deploy.py

执行过程中会实时打印日志。以下是一次成功执行的示例:

Starting batch configuration of ABP devices...
✓ Successfully read 2 devices from device_list.xlsx
✓ Device 0101010101010101 created
✓ Device 0101010101010101 keys configured
✓ Device 0101010101010101 ABP activated
----------------------------------------
✓ Device 0202020202020202 created
✓ Device 0202020202020202 keys configured
✓ Device 0202020202020202 ABP activated
----------------------------------------
...
Batch configuration completed.

技术支持与产品讨论

感谢你选择我们的产品!我们将为你提供多种支持,确保你在使用我们产品的过程中尽可能顺利。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...