lora服务器ChirpStack部署

ChirpStack搭建私有LoRa服务器

  1. ChirpStack简介

ChirpStack是一个由 CableLabs 主导的开源的LoRaWan网络服务器堆栈,之前该项目的名字叫LoRa Server。

ChirpStack开源LoRaWAN网络服务器堆栈为LoRaWAN网络提供了开源组件,它们共同构成了一个现成的解决方案,包括用于设备管理的用户友好型Web界面和用于集成的API,并且模块化体系结构使其可以集成到现有基础架构中。目前所有组件均已获得MIT许可,并可以用于商业目的。

ChirpStack提供的组件如下:

  • ChirpStack网关网桥:处理与LoRaWAN网关的通信
  • ChirpStack网络服务器:LoRaWAN网络服务器的实现
  • ChirpStack应用服务器:LoRaWAN应用服务器的实现
  • ChirpStack地理位置服务器: 与LoRaWAN地理位置后端的集成
  • ChirpStack网关操作系统:基于嵌入式Linux的操作系统,可在LoRa网关上运行(完整)的ChirpStack堆栈
  1. 安装环境

2.1 安装Go语言环境

下载go语言的安装包:Go官网

# 解压
sudo tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz
# 配置环境变量
sudo vi /etc/profile
export PATH=$PATH:/usr/local/go/bin
source /etc/profile  # 立即生效

测试

新建 hello.go 文件

package main

import "fmt"

func main() {
	fmt.Printf("hello, world\n")
}

# 可以执行运行脚本
go run hello.go
# 也可以编译
go build hello.go
# 执行
./hello

2.2 安装 redis

redis安装

sudo apt-get install redis-server redis-tools

whereis redis         # 查看redis的安装位置
ps -aux | grep redis  # 查看redis服务的进程运行

# 本地启动 
redis-cli

redis配置

sudo vi /etc/redis/redis.conf

# 在配置文件中查找 bind 127.0.0.1 将其注释 改为 #bind 127.0.0.1

# 重启服务
/etc/init.d/redis-server restart

2.3 安装 postgresSQL

# 查看可用的 PostgreSQL 版本
apt show postgresql
# 安装
apt install postgresql postgresql-contrib

# 检查 PostgreSQL 是否正在运行
service postgresql status
# 查看版本
psql --version

配置 postgresSQL

# 进入PostgreSQL命令行,转到postgres用户即可
sudo -u postgres psql
# 或者
su
su postgres
psql

# 然后执行如下指令
-- set up the users and the passwords
-- (note that it is important to use single quotes and a semicolon at the end!)
create role chirpstack_as with login password 'dbpassword';
create role chirpstack_ns with login password 'dbpassword';

-- create the database for the servers
create database chirpstack_as with owner chirpstack_as;
create database chirpstack_ns with owner chirpstack_ns;

-- change to the ChirpStack Application Server database
\c chirpstack_as

-- enable the pq_trgm and hstore extensions
-- (this is needed to facilitate the search feature)
create extension pg_trgm;
-- (this is needed to store additional k/v meta-data)
create extension hstore;

-- exit psql
\q

2.4 安装 mosquitto

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update

# 安装mosquitto包
sudo apt-get install mosquitto
# 安装mosquitto开发包
sudo apt-get install mosquitto-dev
# 安装mosquitto客户端
sudo apt-get install mosquitto-clients

# 查看版本
mosquitto --help
# 查询mosquitto是否正确运行
sudo service mosquitto status 

MQTT测试

# 本机测试
#打开一个终端,执行以下命令订阅主题"mqtt"
mosquitto_sub -h localhost -t "mqtt" -v

#打开另外一个终端,发布消息到主题 “mqtt”
mosquitto_pub -h localhost -t "mqtt" -m "Hello MQTT"

#现在你会看到消息被显示在前一个终端上了.


# 网络测试
#通过以下命令,可以定于到官放所有测试的mqtt信息,当然你发布的信息别人也能订阅到
mosquitto_sub -h test.mosquitto.org -t "#"   -v

#也可以在官方mqtt服务下发布自己专属的信息
mosquitto_sub -h test.mosquitto.org -t  "myxyz123"  -v

#订阅自己的信息
mosquitto_pub -h test.mosquitto.org -t "myxyz123"  -m  "hello mqtt"

2.5 安装 docker 和 docker-compose

# 删除旧的docker的安装包
sudo apt-get remove docker docker-engine docker-ce docker.io

# 添加阿里云镜像源 安装docker
sudo add-apt-repository "deb https://mirrors.aliyun.com/docker-ce/linux/ubuntu bionic stable"
apt-get update       # 更新一下apt包索引
sudo apt install docker-ce

# 安装 docker-compose
pip3 install docker-compose

# 安装验证
docker version
docker-compose --version

# 启动docker
/etc/init.d/docker start

service docker start
service docker stop
service docker restart
service docker status
service docker enable

# systemctl支持(ubuntu不支持 使用 service)
apt-get install --reinstall systemd

systemctl status docker   # 查看 docker 服务的启动状态
systemctl enable docker
systemctl start docker
  1. 搭建 chirpstack-docker

3.1 chirpstack-docker 安装

chirpstack源码

本文采用 docker 安装,源码编译安装参见官网。

# 下载 chirpstack-docker
git clone https://github.com/brocaar/chirpstack-docker.git
cd chirpstack-docker
# 启动 chirpstack-docker (配置完成后再启动)
docker-compose up -d

3.2 chirpstack -docker 配置

1.修改 docker-compose-env.yml 环境配置文件

- NETWORK_SERVER__BAND__NAME=CN_470

2.修改 chirpstack-network-server.toml 配置文件

为了在国内使用,需要把chirpstack-docker\configuration\chirpstack-network-server\chirpstack-network-server.toml中的EU_863_870修改为CN_470_510,这是国内的免费频段,并注释掉所有extra_channels,如下:

[postgresql]
dsn="postgres://chirpstack_ns:chirpstack_ns@postgresql/chirpstack_ns?sslmode=disable"

[redis]
url="redis://redis:6379"

[network_server]
net_id="000000"

[network_server.band]
name="CN_470_510"

[network_server.network_settings]

  # [[network_server.network_settings.extra_channels]]
  # frequency=867100000
  # min_dr=0
  # max_dr=5

  # [[network_server.network_settings.extra_channels]]
  # frequency=867300000
  # min_dr=0
  # max_dr=5

  # [[network_server.network_settings.extra_channels]]
  # frequency=867500000
  # min_dr=0
  # max_dr=5

  # [[network_server.network_settings.extra_channels]]
  # frequency=867700000
  # min_dr=0
  # max_dr=5

  # [[network_server.network_settings.extra_channels]]
  # frequency=867900000
  # min_dr=0
  # max_dr=5

[network_server.gateway.backend.mqtt]
server="tcp://mosquitto:1883"

[join_server.default]
server="http://chirpstack-application-server:8003"

[geolocation_server]
server="chirpstack-geolocation-server:8005"

3.3 chirpstack-docker 启动

docker-compose up

当启动出现 mosquitto 启动失败时

# 停止当前 mosquitto 服务
service mosquitto stop
# 在运行
docker-compose up

3.4 chirpstack WEB界面

在浏览器输入 http:<部署服务器的ip地址(windows本机则填localhost)>:8080

http:10.99.20.253:8080

服务器报错 context deadline exceeded(code:2)

network server 应输入 chirpstack-network-server:8000

3.4.1 添加Network-servers(网络服务)

3.4.2 添加service-profiles(服务配置文件)

在Service-profiles页面点击 Create:

填写如下配置:

Service-profile name:服务配置文件名称;
Add gateway meta-data:允许NS将网关元数据发送给AS,

3.4.3 添加Device-profiles(设备配置文件)

填写如下配置:

  • Device-profile name:设备配置文件名称;
  • LoRaWAN MAC version:选择lorawan协议版本,选择1.0.2;
  • LoRaWAN Regional Parameters revision:选择A;

在Device-profiles页面点击 Create:

GENERAL

JOIN(APB):频段参数参照设备端进行配置

CLASS-C

CODEC:编解码

上行:将设备节点二进制 payload 转换为 json

function Decode(fPort, bytes) {
  	var data = {};
    data.temperature = bytes[0];
    data.humidity = bytes[1];
    data.period = bytes[2] | (bytes[3] << 8);
    return data;
}

3.4.4 添加和配置网关

进入 Gateways 页面,点击CREATE:

主要注意填入网关ID,就是实物网关的网关ID;

3.4.5 添加Lora应用并注册lora节点设备

添加应用

添加APB节点(OTAA类似)

在激活项 ACTIVATION 填入节点端预置的 设备地址和密钥

posted @ 2025-06-20 11:06  silencehuan  阅读(395)  评论(0)    收藏  举报