1. 程式人生 > 實用技巧 >Lora伺服器:Chirpstack連線Lora閘道器實戰

Lora伺服器:Chirpstack連線Lora閘道器實戰

Chirpstack:一個開源的Lora服務專案,該專案包含Gateway Bridge,Network Server,Application Server,Gateway os等子專案,官網地址:https://www.chirpstack.io/

伺服器環境:CentOS Linux release 7.8.2003 (Core)。

一,安裝mosquitto。mosauitto是一個開源的MQTT訊息代理軟體。這個專案中,MQTT承擔了各個元件之間互相通訊的重任,貫穿了從網橋到AS的整個流程。

1,新增EPEL軟體包安裝源:yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2,安裝mosquitto:yum install mosquitto

3, 配置mosquitto

#建立密碼檔案
touch /etc/mosquitto/pwfile
#建立策略檔案
touch /etc/mosquitto/aclfile
#建立日誌目錄
mkdir /var/log/mosquitto
#建立日誌檔案
touch /var/log/mosquitto/mosquitto.log
#建立本地持久化檔案目錄
mkdir /var/lib/mosquitto
#建立chrip使用者
mosquitto_passwd /etc/mosquitto/pwfile chrip
#輸入chrip使用者的密碼

 vi /etc/mosquitto/mosquitto.conf

#持久化配置
persistence true
persistence_location /var/lib/mosquitto/
#日誌檔案配置
log_dest file /var/log/mosquitto/mosquitto.log
#使用者名稱密碼認證配置
allow_anonymous false
password_file /etc/mosquitto/pwfile
acl_file /etc/mosquitto/aclfile

配置使用者策略:vi /etc/mosquitto/aclfile

user chirp  //使用者chirp
topic chirpstack/#   //可對主提chirpstack讀寫

測試:mosquitto_sub -t chirpstack/# -u chirp -P 123456

日誌檢視:tail -f /var/log/mosquitto/mosquitto.log

二,安裝gateway-bridge

1,新建一個目錄,下載redhat安裝包到該目錄wget https://artifacts.chirpstack.io/downloads/chirpstack-gateway-bridge/chirpstack-gateway-bridge_3.9.2_linux_386.rpm

2,安裝rpm:rpm -ivhchirpstack-gateway-bridge_3.9.2_linux_386.rpm

3,為getway-bridge建立一個mqtt使用者及密碼:mosquitto_passwd chirp_gateway,併為該使用者配置主題為“gateway/#”的讀寫策略.配置後重啟Mosquitto

4,配置MQTT認證資訊:vi /etc/chirpstack-gateway-bridge/chirpstack-gateway-bridge.toml

#配置MQTT payloads採用的協議,預設為protobuf
marshaler="json" 
#配置MQTT 使用者名稱
username="chirp_gateway"
password="123456"
#如果需要更改udp的監聽埠可以改寫udp_bind值,預設1700

5, 啟動網橋: sudo systemctl start chirpstack-gateway-bridge。檢視日誌:journalctl -f -n 100 -u chirpstack-gateway-bridge

三,安裝配置redis

1,yum install redis

2, vi /etc/redis.conf。找到requirepass,去掉註釋並設定新的密碼:requirepass redis123456

3,啟動redis:systemctl start redis

4,驗證密碼:redis-cli -h 127.0.0.1 -p 6379 -a redis123456

四,安裝配置postgresql

1,rpm源:yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm。安裝源見:https://yum.postgresql.org/repopackages/

2,安裝:yum install postgresql95-server postgresql95-contrib

3,初始化資料庫:/usr/pgsql-9.5/bin/postgresql95-setup initdb

4,修改postgres使用者密碼: passwd postgres

5,修改postgresql監聽地址:vi/var/lib/pgsql/9.5/data/postgresql.conf。修改listen_addresses值為“*”

6,修改postgresql認證方式:vi/var/lib/pgsql/9.5/data/pg_hba.conf。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     postgres                                peer
host    replication     postgres        127.0.0.1/32            ident
host    replication     postgres        ::1/128                 ident

5,啟動:systemctl enable postgresql-9.5.service systemctl start postgresql-9.5.service

五,安裝network-server

1,新增mqtt賬戶:mosquitto_passwd /etc/mosquitto/pwfile chirp_network。並配置主題:“gateway/#” 的讀寫許可權。配置後重啟Mosquitto

2,新增postgresql賬戶及資料庫

1),進入postgres使用者:su postgres,輸入psql指令

2),建立角色及密碼:create role chirpstack_ns with login password 'dbpassword';

3),建立資料庫:create database chirpstack_ns with owner chirpstack_ns;

4),測試:psql -h localhost -U chirpstack_ns -W chirpstack_ns。輸入密碼。

3,下載chirpstack-network-server:wget https://artifacts.chirpstack.io/downloads/chirpstack-network-server/chirpstack-network-server_3.10.0_linux_386.rpm

4,安裝rpm:rpm -ivhchirpstack-network-server_3.10.0_linux_386.rpm

5,配置:vi/etc/chirpstack-network-server/chirpstack-network-server.toml

#postgresql連線字串
[postgresql]
dsn="postgres://chirpstack_ns:dbpassword@localhost/chirpstack_ns?sslmode=disable"
#redis連線字串
[redis]
url="redis://requirepass:redis123456@localhost:6379"
#中國lora頻點設定
[network_server]
 name="CN470"
#註釋掉[[network_server.network_settings.extra_channels]]節點
# [[network_server.network_settings.extra_channels]]
   # frequency=867100000
   # min_dr=0
   # max_dr=5
#mqtt設定
[network_server.gateway.backend]
username="chirp_network"
password="123456"

6,啟動network-server:systemctl start chirpstack-network-server。檢視日誌:journalctl -u chirpstack-network-server -f -n 50

六,安裝Chirpstack-Application-server

1,新建Mosquitto使用者和策略:mosquitto_passwd /etc/mosquitto/pwfile chrip_application。並配置主題"gateway/#"的讀寫許可權。配置後重啟Mosquitto

2,新增postgresql賬戶及資料庫

1),進入postgres使用者:su postgres,輸入psql指令

2),建立角色及密碼:create role chirpstack_as with login password 'dbpassword';

3),建立資料庫:create database chirpstack_as with owner chirpstack_as;

4)開啟 trigram 和 hstore

\c chirpstack_as

create extension pg_trgm;

create extension hstore;

4),測試:psql -h localhost -U chirpstack_as -W chirpstack_as。輸入密碼。

3,下載application-server:wgethttps://artifacts.chirpstack.io/downloads/chirpstack-application-server/chirpstack-application-server_3.12.2_linux_386.rpm

4,安裝:rpm -ivhchirpstack-application-server_3.12.2_linux_386.rpm

5,利用openssl生成一個金鑰:openssl rand -base64 32

6,配置:

#postgresql連線字串
[postgresql]
dsn="postgres:/chirpstack_as:dbpassword@localhost/chirpstack_as?sslmode=disable"
#redis連線字串
[redis]
url="redis://requirepass:redis123456@localhost:6379"
#mqtt設定
[application_server]
enabled=["mqtt"]
username="chirp_network"
password="123456"
#jwt金鑰,由openssl rand -base64 32生成
jwt_secret="w7X8LWXqee6HM3ach02as3fVB2xslTRXk/UCiTWC/8k="

7,啟動:systemctl start chirpstack-application-server。 檢視日誌:journalctl -f -n 100 -u chirpstack-application-server

七,開放埠

開放 UDP 1700 ,TCP 8080,1883

firewall-cmd --zone=public --add-port=1700/udp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=1883/tcp --permanent
firewall-cmd --reload

開啟applicationServer管理頁面,預設使用者和密碼為admin

八 配置application server

開啟管理介面,登入

1,新增services:

2,新增閘道器配置

3,配置閘道器,我手裡有一個躬遠的Lorawan閘道器。配置Lora伺服器

在application server新增該閘道器。

檢視gateway-bridge日誌。可以看到已經可以收到閘道器的udp包,併發布到Mqtt:journalctl -u chirpstack-gateway-bridge -f -n 50

application server上該閘道器已經是active了。

九:新增裝置。我手中有安志博的lora傾斜感測器終端,採用abp入網方式。按說明書啟用後在application平臺新增該裝置

1,新增裝置配置檔案

2,新增應用域

3,在該應用域下新增裝置

4,配置裝置的入網引數。該入網引數可以由裝置終端提供,也可以自己定好後發給廠家由廠家出廠時設定好。

ABP入網主要有三個引數:1,Device address 2,Network session key,3,Application session key

5,觸發該lora終端,applcation平臺裝置上線

十,從mqtt獲取裝置的上行資料

利用Mosquitto_sub工具訂閱application/#主題:mosquitto_sub -t application/# -u chirp_application -P 123456 。可以新建一個Mosquitto使用者和策略,也可以直接用之前部署Application-server時的使用者

紅框中的資料即為裝置所上傳的資料,需要用base64解密後轉為16進位制。

十一,下發資料到裝置

可以通過http介面或者mqtt釋出二種方式,由於篇幅關係就不一一介紹。參考管網教程:

mqtt方式:https://www.chirpstack.io/application-server/integrations/mqtt/

http方式:https://www.chirpstack.io/application-server/api/http-examples/