LORA / LORAWAN 第二十節
Chirpstack project
這個章節我將會介紹如何安裝開源軟體ChirpStack LoRa Servers Project
為什麼要用ChirpStack Project
因為我們想要自製私有LoRaWAN Network,從Node到Application 全部都由我們自己提供。而且ChirpStack Project允許我們將他們全部都裝在一個Raspberry Pi 上提供小型私有LoRaWAN網路使用。跟先前我們使用TTN雲端LoRaWAN網路服務不同,這次我們自己架私有LoRaWAN Network。
設備需求:
- LoRaWAN Nodes(我們之前介紹過了)
- LoRaWAN Gateway/Concentrator (如:第19節 介紹的HT-M01)
- Raspberry Pi 3 以上的主機
什麼是ChirpStack Project
What is ChirpStack project
- ChirpStack project 是一個開源的網路軟體,用來架構LoRaWAN Networks 。https://www.chirpstack.io
- ChirpStack project 由 Orne Brocaar 發起。https://www.brocaar.com
- ChirpStack project 包含以下組件:
- ChirpStack Gateway Bridge
- ChirpStack Network server
- ChirpStack Application server
- “ChirpStack project” 的前身應該就是 “LoRa Server Project”發起於2015年,2020年更名為ChirpStack。ChirpStack project所有的組件都適用MIT Licensed 可以被用於商業用途。
ChirpStack 組件
ChirpStack components
ChirpStack Application Server
擔任 LoRaWAN中的” Application Server”角色。接收network server來的資料,主要功能為:處理節點入網Join Request需求、加密Application payload並提供RESTful API、gRPC API 或是 MQTT 給其他外部服務。
另外ChirpStack Application Server 提供一個網頁介面來管理組織、使用者、應用、裝置。當然也提供查看裝置上傳的資料的頁面。
ChirpStack Network Server
擔任 LoRaWAN中的”Network Server”角色。接收Gateway來的資料並上傳到Application Server,主要功能為: 刪除重複的封包、處理LoRaWAN mac layer的事務、下傳封包的排程。
ChirpStack Gateway Bridge
將Packet forwarder UDP protocol 資料轉成JSON格式並使用MQTT傳給Network Server
ChirpStack 組件安裝具有多變性
可以安裝在各自獨立的伺服器
- ChirpStack 組件可以安裝在各自獨立的伺服器上,使用其獨立的PostgreSQL資料庫
安裝在同一個的伺服器
- ChirpStack 組件也可以安裝在單一的伺服器上,但使用其獨立的PostgreSQL資料庫
- 我們將在這節Demo這種方法將3大組件分別放在同ㄧ硬體上,也會連同上一節(19節)的Concentrator的Driver 也放在一起。
ChirpStack Gateway Bridge
閘道器橋接是ChirpStack的特色
- ChirpStack Project使用Gateway Bridge 將Gateway UDP 資料轉換成JSON格式,在上傳到Network Server時,採用MQTT方式上傳。這樣就可以運用MQTT特性,將不同Gateway而上傳的重複的資料刪除(de-deduplication)。
- ChirpStack Gateway Bridge 也可以安裝在Gateway端。
ChirpStack architecture
ChirpStack架構圖
- 看起來很複雜,其實還好!
- 最下面的整合應用先不用看。有用到該服務再去看就好。
- 最上面與左邊的模塊都是LoRaGateway 只差有沒有整合Gateway Bridge。
- 重點在中間那個模塊內部的MQTT,整合Gateway UDP/ Gateway Bridge MQTT/network server。而最後的Application Server 則使用gRPC與Networkserver 連接。
ChirpStack 實際操作
以下依序我們開始實際安裝操作首先將硬體整合好如圖:
ChirpStack whole Project簡化版
使用Raspberry Pi 4 實際安裝ChirpStack whole Project
安裝Rasbian OS
請參考19節
安裝Semtech Driver
請參考19節
安裝Semtech Package Forwarder
設定Semtech Package Forwarder 參數
- 使用設定檔 ~/lora/packet_forwarder/lora_pkt_fwd/global_conf.json
- 在檔案最下面可以設定Gateway ID 與server_address。
- Gateway ID 在Heltec Driver中預設會使用Raspberry Pi 的mac address生成並在啟動時覆蓋,以避免衝突。
安裝Heltec Driver
安裝ChirpStack Gateway Bridge
安裝Mosquitto MQTT Broker
設定ChirpStack Gateway Bridge參數
安裝ChirpStack network server
安裝Database 給ChirpStack network server用
設定Database User與資料庫給ChirpStack network server用
設定ChirpStack network server與dB連接參數
設定ChirpStack network server與MQTT Broker參數
安裝ChirpStack Application server
設定Database User與資料庫給ChirpStack Application server用
產生 jwt_secret 給與外部API
- 產生jwt_secret等一下會用到
- jwt_secret 是使用在external API上的token
- 由於此實作會藉由一個website app 操作設定LoRAWAN 網路,我們要設定好這個值才能用它。
設定ChirpStack Application server與dB連接參數
設定Internal API 參數與Network-server通訊
設定External API 參數與外部通訊
Command line Manual
依照說明來安裝
開啟瀏覽器登入
192.168.43.82:8080
- 登入web-interface
安裝成功,下一節”設定”