5 使用外部NS服务器
5.1 配置LoRa网关连接外部NS服务器
网关支持多种 LoRa 通信协议和数据转发方式,可灵活对接不同的网络服务器和物联网平台。以下详细介绍各种配置方式。
5.1.1 使用UDP方式
UDP GWMP(Gateway Message Protocol)是 Semtech 定义的标准协议,广泛用于连接 TTN、chirpstack 等开源网络服务器。
应用场景:连接 The Things Network (TTN)、自建 chirpstack 服务器等。
5.1.1.1 使用UDP方式连接自建的chirpstack平台
可以先安装chirpstack,如果已经安装,请跳过下面安装的步骤
5.1.1.1.1 ubuntu 24 服务器安装chirpstack,示例:chirpstack-v4.17.0
sudo apt update
sudo apt install mosquitto mosquitto-clients redis-server redis-tools postgresql
配置 PostgreSQL
sudo -u postgres psql
创建chirpstack的数据库
sudo -u postgres psql
-- create role for authentication
create role chirpstack with login password 'chirpstack';
-- create database
create database chirpstack with owner chirpstack;
-- change to chirpstack database
\c chirpstack
-- create pg_trgm extension
create extension pg_trgm;
-- exit psql
\q
安装ChirpStack Gateway Bridge软件
sudo apt install chirpstack-gateway-bridge
修改ChirpStack Gateway Bridge的配置 /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge.toml
更新[backend] 的配置
[backend]
type="semtech_udp"
region="US915"
frequency_min=902000000
frequency_max=928000000
更新[integration.mqtt] 的配置
示例以 US915,设备和网关测试都使用A1B1(channels 0-7 + 64)频点:902.3~903.7
[integration.mqtt]
event_topic_template="us915_0/gateway/{{ .GatewayID }}/event/{{ .EventType }}"
command_topic_template="us915_0/gateway/{{ .GatewayID }}/command/#"
重新生效ChirpStack Gateway Bridge
# restart chirpstack-gateway-bridge
sudo systemctl restart chirpstack-gateway-bridge
# start chirpstack-gateway-bridge on boot
sudo systemctl enable chirpstack-gateway-bridge
5.1.1.1.2 添加网关ID到chirpstack平台
注意事项:
- 示例公网服务平台IP:62.234.52.46
- chirpstack默认用户admin,默认密码admin登录
- 在网关页面上Network(网络) → LoRa GW(LoRa网关) → Configuration(配置),拷贝网关ID:0010502df45635f8
- 登录已经安装的chirpstack平台,在网关页面添加
- 粘贴已经复制好的网关ID:0010502df45635f8
- 填到Name:0010502df45635f8
- 填到Gateway ID (EUI64):0010502df45635f8
- 点击 "Submit"
- 在网关界面Network(网络) → LoRa GW(LoRa网关) → Configuration(配置) ,示例
chirpstack平台IP:62.234.52.46配置如下:
- Mode(模式):Normal Mode
- LoRaWAN® regions(LoRaWAN® 频段):US902-928
- Gateway and server communication protocol(网关和服务器通信协议):UDP
- server address(服务器地址):62.234.52.46
- Uplink port(UDP)(上行端口(UDP)):1700
- Downstream port(UDP)(下行端口(UDP)):1700
- 在页面右下角,点击SAVE & APPLY(保存并应用)按钮
- 在网关侧,Network(网络) → LoRa GW(LoRa网关) → Status(状态) 查看网关连接服务器状态(由于PUSH包每30秒发送一包,需要点击SAVE & APPLY(保存并应用)按钮等1分钟后再查看 ): 是否在线
- 网关(PUSH)<--->服务器(PUSH_ACK)
- 网关(PULL)<--->服务器(PULL_ACK)
- 查看通信有没有ACK,代表有没有连上服务器,而且还可以知道当前网络UDP通信的延迟,这个延迟超过150ms会影响下发设备的接收成功率
- 在平台侧查看网关连接状态
已经在线,并且显示US915频段的网关
5.1.1.2 使用UDP方式连接TTN平台
注意事项:
- 示例需要提前注册TTN的账号
- 示例以一个频段的网关测试,其他频段也类似
操作步骤:
- 登录网关界面,在 Network(网络) → LoRa GW(LoRa网关) → Configuration(配置),如果要配置第二个LoRa(16通道版本),则在 Network(网络)->16通道扩展(16-channel expansion)
16通道,需要再配置第二个lora页面:16通道扩展(16-channel expansion)
- 导航至 LoRa网关(LoRa GW) → 配置(Configuration)
- 切换需要使用的LoRaWAN频段
切换频段不会更改网关默认的EUI,如果之前配置页面参数填乱了,也可以通过切换到别的频段,再切换回来,让频段的参数重新初始化
- 470版本仅支持CN470版本,470的硬件不需要切换频段
- 868版本可以支持EU868、RU864、IN865三个频段切换
- 915版本可以支持US902-928、AU915-928、AS923-1、AS923-2、AS923-3、AS923-4、KR920
- 具体切换频段方法可以参考:
- 以连接到TTN(console.cloud.thethings.network)平台示例(需要自行注册平台的登录账号)
在ttn平台找到"Register gateway"
ttn平台出现输入网关ID输入框
在浏览器另一窗口,登录网关页面,找到lora网关的ID,复制它
在ttn平台用刚刚复制的网关ID,粘贴到"Gateway ID"、"Gateway name",选择"frequency plan",填完并且点击"Register gateway" 
已经注册到ttn平台,此时需要在网关填写服务器地址
注意事项:
- 配置UDP服务器地址前,请确认域名地址,我们查看当前ttn为我们网关分配的域名前缀,为: au1
所以需要在网关里,选择UDP协议,服务器选择ttn的au1域名节点
- Mode(模式):Normal Mode
- Gateway and server communication protocol(网关和服务器通信协议):UDP
- server address(服务器地址):目标 NS 的域名或 IP(例如:
au1.cloud.thethings.network) - Uplink port(UDP)(上行端口(UDP)):1700
- Downstream port(UDP)(下行端口(UDP)):1700
网关页面配置UDP方式连接ttn平台
在页面右下角,点击SAVE & APPLY(保存并应用)按钮
等待30-60秒,在ttn平台看网关状态,已经在线
5.1.2 使用MQTT-GWMP方式
MQTT 协议适用于需要更灵活消息机制的场景,支持连接唯传公司的IoT Vision公有云平台,包括唯传公司提供的私有化部署IoT Vision。
应用场景:IoT Vision公有云、IoT Vision私有化部署。
5.1.2.1 使用MQTT GWMP方式连接公有云IoT Vision
- IoT Vision平台:lora.smartkit.io
- 以CN470频段的网关为例
- 使用账号登录以后,在菜单找到 网关管理,点击添加网关按钮
- 填写网关信息,授权码需要联系技术支持获得
- 登录网关界面,在 Network(网络) → LoRa GW(LoRa网关) → Configuration(配置)
- Mode(模式):正常模式
- Gateway and server communication protocol(网关和服务器通信协议):MQTT(GWMP)
- External NS MQTT Server(外部NS MQTT服务器地址):目标 NS 的域名或 IP(例如:
39.108.64.113) - External NS MQTT port(外部NS MQTT服务器端口):1879
- External NS MQTT Username(外部NS MQTT 用户名):wangw
- External NS MQTT password(外部NS MQTT 密码):ww1030
- 在页面右下角,点击SAVE & APPLY(保存并应用)按钮
- 在网关侧Network(网络) → LoRa GW(LoRa网关) → Status(状态) 查看网关连接平台的在线状态
- 在平台侧刷新页面,查看网关在线状态
5.1.2.2 使用MQTT GWMP方式连接私有部署IoT Vision
参考连接公有云
5.1.3 使用ChirpStack MQTT Forwarder方式
chirpstack-mqtt-forwarder 是 chirpstack 开源项目提供的 MQTT 转发协议,使用 Protobuf 编码,效率更高。
应用场景:连接 chirpstack V4.x 网络服务器。
5.1.3.1 使用ChirpStack MQTT Forwarder方式连接自建的chirpstack平台
操作步骤:
- 网关页面导航至 在 Network(网络) → LoRa GW(LoRa网关) → Configuration(配置)
- 配置 MQTT 连接参数:
- Gateway and server communication protocol(网关和服务器通信协议):MQTT(chirpstack-mqtt-forwarder)
- chirpstack-mqtt-forwarder MQTT Server(chirpstack-mqtt-forwarder MQTT服务器地址):目标 NS 的域名或 IP(例如:
62.234.52.46) - chirpstack-mqtt-forwarder MQTT port(chirpstack-mqtt-forwarder MQTT服务器端口):1883 或 8883
- chirpstack-mqtt-forwarder MQTT Username(chirpstack-mqtt-forwarder MQTT 用户名):根据自己的MQTT Broker(Mosquitto、EMQX)配置填写
- chirpstack-mqtt-forwarder MQTT password(chirpstack-mqtt-forwarder MQTT 密码):根据自己的MQTT Broker(Mosquitto、EMQX)配置填写
- Modify the topic prefix of chirpstack MQTT(修改chirpstack MQTT的topic前缀):可以修改部署的topic 前缀,默认使用频段的值:
cn470/eu868/ru864/in865/us915/au915/as923_1/as923_2/as923_3/as923_4/kr920 - Use JSON(使用json协议): 勾选使用json,不勾选使用Protobuf 编码方式(推荐 Protobuf)
示例里部署的chirpstack配置 /etc/chirpstack/chirpstack.toml,找到enabled_regions的配置
[network]
enabled_regions = [
"as923",
"as923_2",
"as923_3",
"as923_4",
"au915_0",
"cn470_10",
"cn779",
"eu433",
"eu868",
"in865",
"ism2400",
"kr920",
"ru864",
"us915_0",
"us915_1",
]
示例以 US915,设备和网关测试都使用A1B1(channels 0-7 + 64)频点:902.3~903.7,
那么我需要修改chirpstack MQTT的topic前缀为:us915_0
- Modify the topic prefix of chirpstack MQTT(修改chirpstack MQTT的topic前缀):use a custom
- Topic prefix(MQTT topic前缀):us915_0
- 在页面右下角,点击 Save & Apply(保存并应用)
- 在网关侧Network(网络) → LoRa GW(LoRa网关) → Status(状态) 查看网关连接平台的在线状态
- 在chirpstack平台页面,查看网关在线状态
5.1.4 使用Basic Station CUPS方式
CUPS(Configuration and Update Server)协议用于自动获取 LNS 配置和证书,常用于 AWS IoT Core。
应用场景:AWS IoT Core for LoRaWAN。
5.1.4.1 使用Basic station CUPS方式连接亚马逊平台
注意事项:
- 需要提前注册亚马逊平台的账号
- 以us-west-2地区为例: https://us-west-2.console.aws.amazon.com/iot/home?region=us-west-2#/wireless/gateways
- 注册完账号,由于网关接入亚马逊平台,是使用CUPS证书形式,需要查阅亚马逊文档,增加角色几种权限
- IoTWirelessGatewayCertManagerRole 在页面查看 https://us-east-1.console.aws.amazon.com/iam/home?region=us-east-1&redirectFrom=iamv2#/roles
- AWSIoTWirelessGatewayCertManager
- 网关接入亚马逊,流量需要付费,需要绑定一张信用卡
操作步骤:
- 导航网关页面至 Network(网络) → LoRa GW(LoRa网关) → Configuration(配置) 拷贝网关ID,示例网关ID:
0010502df45635f8 - 在亚马逊平台添加网关,链接:https://us-west-2.console.aws.amazon.com/iot/home?region=us-west-2#/wireless/gateways
- 粘贴网关ID
- 选择频段,示例US915
- 点击右下角
Add gateway按钮
- 创建网关CUPS接入的证书,复制cups接入的链接到网关页面,并且点击下载证书
- 在
Gateway permissions选择AWSIoTWirelessGatewayCertManager,然后提交
- 回到网关页面Network(网络) → LoRa GW(LoRa网关) → Configuration(配置),网关页面配置 :
- Gateway and server communication protocol(网关和服务器通信协议):CUPS(Basic Station)
- CUPS:HTTPS 地址(例如:
https://<account-id>.cups.lorawan.amazonaws.com:443) - CUPS CA certificate 'cups.trust'(cups服务器的根证书'cups.trust'):打开cups.trust文件,复制证书内容粘贴到文本框里
- CUPS client certificate 'cups.crt'(cups服务器的客户端证书'cups.crt'):打开xxx.cert.pem文件,复制证书内容粘贴到文本框里
- CUPS client private key 'cups.key'(cups服务器的客户端密钥'cups.key'):打开xxx.private.key文件,复制证书内容粘贴到文本框里
- 在页面右下角,点击 Save & Apply(保存并应用)
- 网关会自动从 CUPS 服务器获取 LNS 配置,可以查看对应的通信 log
- 在网关侧Network(网络) → LoRa GW(LoRa网关) → Status(状态) 查看网关连接平台的在线状态
- 在亚马逊平台页面,查看网关在线状态
5.1.5 使用Basic Station LNS方式
LNS(LoRaWAN Network Server)协议基于 WebSocket,支持连接 TTN、chirpstack、Microsoft Azure IoT 等平台。
应用场景:chirpstack、TTN、Microsoft Azure IoT Central。
5.1.5.1 使用Basic station LNS方式连接TTN平台
注意事项:
- 需要提前注册TTN平台的账号
- 以au1地区为例: https://au1.cloud.thethings.network/console/gateways
- 导航网关页面至 Network(网络) → LoRa GW(LoRa网关) → Configuration(配置) 拷贝网关ID,示例网关ID:
0010502df45635f8
- 在ttn平台添加网关
- 在gateway EUi粘贴
0010502df45635f8,点击Confirm
- 下一步
- 在gateway ID粘贴
0010502df45635f8 - 在gateway name粘贴
0010502df45635f8 - 在Frequency plan选择
United States 902-928MHz,FSB1 - 在Require authenticated connection 打勾选上
- 在Generate API key for LNS打勾选上
- 在页面底部点击
Register gateway
- 在弹框中点击下载证书
- 回到网关页面Network(网络) → LoRa GW(LoRa网关) → Configuration(配置),网关页面配置 :
- Gateway and server communication protocol(网关和服务器通信协议):LNS(Basic Station)
- LNS:WebSocket 地址(例如:
wss://au1.cloud.thethings.network:8887) - LNS CA certificate 'tc.trust'(lns服务器的根证书'tc.trust'): 下载路径https://www.thethingsindustries.com/docs/concepts/advanced/root-certificates/
- LNS client certificate 'tc.crt'(lns服务器的客户端证书'tc.crt'):留空,TTN不需要填这个
- LNS client private key 'tc.key'(lns服务器的客户端密钥'tc.key'):打开下载的tc.key文件,复制证书内容粘贴到文本框里
- 在页面右下角,点击 Save & Apply(保存并应用)
- 网关与服务器wss对应的通信 log,如下
- 在网关侧Network(网络) → LoRa GW(LoRa网关) → Status(状态) 查看网关连接平台的在线状态
- 在ttn平台页面,查看网关在线状态
5.1.5.2 使用Basic station LNS方式连接chirpstack
注意事项:
- 需要提前查看chirpstack的文档,部署好域名和证书,因为lns连接,不能使用IP地址,必须使用域名
- 以网关内部的chirpstack-4.17.0软件为例
- 如果客户不会部署LNS模式的chirpstack,建议使用UDP、MQTT方式,或者查阅更多资料
- 示例网关ID:0010502df45635f8
- 在chirpstack页面,添加网关ID:
0010502df45635f8,在网关里TLS certificate,点击Generate certificate,生成LNS的证书
- 回到网关页面Network(网络) → LoRa GW(LoRa网关) → Configuration(配置),网关页面配置 :
- Gateway and server communication protocol(网关和服务器通信协议):LNS(Basic Station)
- LNS:WebSocket 地址(例如:
wss://gateway.lan:3001) - LNS CA certificate 'tc.trust'(lns服务器的根证书'tc.trust'): 在第一步,chirpstack页面生成的CA certificate证书
- LNS client certificate 'tc.crt'(lns服务器的客户端证书'tc.crt'):在第一步,chirpstack页面生成的TLS certificate证书
- LNS client private key 'tc.key'(lns服务器的客户端密钥'tc.key'):在第一步,chirpstack页面生成的TLS key证书
- 在页面右下角,点击 Save & Apply(保存并应用)
- 在网关侧Network(网络) → LoRa GW(LoRa网关) → Status(状态) 查看网关连接平台的在线状态
- 在chirpstack平台页面,查看网关在线状态
查看chirpstack通信日志
5.2 16通道网关频段以及频点
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.3 配置LoRa网关频段以及频点
5.2.1 配置16通道网关cn470频段以及频点说明
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.3.1 470全双工硬件配置CN470频段以及频点说明
5.2.2 配置16通道网关868半双工硬件切换频段说明
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.3.2 868半双工硬件切换EU868/RU864/IN865频段以及配置频点说明
5.2.3 配置16通道网关915半双工硬件切换频段说明
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
5.3 16通道网关连接外部NS服务器
网关支持多种 LoRa 通信协议和数据转发方式,可灵活对接不同的网络服务器和物联网平台。以下详细介绍各种配置方式。
5.3.1 配置16通道网关使用udp方式
UDP GWMP(Gateway Message Protocol)是 Semtech 定义的标准协议,广泛用于连接 TTN、chirpstack 等开源网络服务器。
应用场景:连接 The Things Network (TTN)、自建 chirpstack 服务器等。
5.3.1.1 配置16通道网关使用udp方式连接chirpstack
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.4.1.1 使用UDP方式连接自建的chirpstack平台
5.3.1.2 配置16通道网关使用udp方式连接ttn
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.4.1.2 使用UDP方式连接TTN平台
5.3.2 配置16通道网关使用mqtt-gwmp方式
MQTT 协议适用于需要更灵活消息机制的场景,支持连接唯传公司的IoT Vision公有云平台,包括唯传公司提供的私有化部署IoT Vision。
应用场景:IoT Vision公有云、IoT Vision私有化部署。
5.3.2.1 配置16通道网关使用mqtt-gwmp方式连接公有云iot
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.4.2.1 使用MQTT GWMP方式连接公有云IoT Vision
5.3.2.2 配置16通道网关使用mqtt-gwmp方式连接私有iot
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.4.2.1 使用MQTT GWMP方式连接公有云IoT Vision
5.3.3 配置16通道网关使用chirpstack-mqtt-forwarder方式
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
5.3.4 配置16通道网关使用basic-station-cups方式
CUPS(Configuration and Update Server)协议用于自动获取 LNS 配置和证书,常用于 AWS IoT Core。
应用场景:AWS IoT Core for LoRaWAN。
5.3.4.1 配置16通道网关使用basic-station-cups方式连接亚马逊平台
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.4.4.1 使用Basic station CUPS方式连接亚马逊平台
5.3.5 配置16通道网关使用basic-station-lns方式
LNS(LoRaWAN Network Server)协议基于 WebSocket,支持连接 chirpstack、TTN、Microsoft Azure IoT 等平台。
应用场景:chirpstack、TTN、Microsoft Azure IoT Central。
5.3.5.1 配置16通道网关使用basic-station-lns方式连接ttn平台
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.4.5.1 使用Basic station LNS方式连接TTN平台
5.3.5.2 配置16通道网关使用basic-station-lns方式连接chirpstack平台
在网关页面Network(网络) → 16-channel expansion(16通道扩展) → Configuration(配置)
- 参考1~8通道的操作步骤 3.4.5.2 使用Basic station LNS方式连接chirpstack



















































