lora服务器ChirpStack部署
ChirpStack搭建私有LoRa服务器
- 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堆栈
- 安装环境
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
- 搭建 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 填入节点端预置的 设备地址和密钥


浙公网安备 33010602011771号