Post

LoRaWAN RAK831/RAK2245 gateway-ına LoRa Server-i necə quraşdıra bilərik?

LoRa Server gateway-ya gələn məlumatları bir şəbəkə ilə əlaqələnməsi üçün istifadə olunur.

Başlanğıc nöqtə kimi "LoRaWAN RAK831/RAK2245 gateway-a proqram təminatını necə quraşdıra bilərik ?" bu məqalənin sonundan başlayın.  

Raspberry Pi terminalina qoşuluruq və kommandları daxil etməyə başlayırıq.

Sabit Serverin işləmədi üçün lora-gateway bridge, loraserver, lora-app-server və mosquitto lazımdır.(daha ətraflı reference linkində izah olunur)

  1.  LoRa gateway körpüsünün quraşdırılması:
  1.  Raspberry Pi paketlərinin update və upgrade olunması
  • sudo apt-get update && sudo apt-get upgrade –y
  1. LoRa Gateway  Körpüsü MQTT vasitəsi ilə applicationa gələn datanı qəbul və  dərc edir.
  • sudo apt-get install mosquitto
  1. LoRa Server layihəsində əvvəlcədən tərtib edilmiş debian binari fayllarını istifadə edir:
  • sudo apt install apt-transport-https dirmngr
  • sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1CE2AFD36DBCCA00
  • sudo echo "deb https://artifacts.loraserver.io/packages/2.x/deb stable main" | sudo tee /etc/apt/sources.list.d/loraserver.list
  • sudo apt-get update
  1. LoRa qəbul edici körpüsünü quraşdırmaq
  • sudo apt-get install lora-gateway-bridge
  1. LoRa qəbul edici körpüsünü başlatmaq:
  • sudo systemctl start lora-gateway-bridge
  1. LoRa qəbul edici körpüsünü düzgun quraşdırıldığını yoxlamaq
  • systemctl status lora-gateway-bridge
  1. LoRa qəbul edici körpüsünü boot zamanı başlatmaq
  • sudo systemctl enable lora-gateway-bridge
  1. LoRa Serverin quraşdırılması üçün bizə verilənlər bazası lazım olacaq.
  1. Postgresql-ın quraşdırılması
  • sudo apt-get install postgresql
  1. Redis serverin quraşdırılması
  • sudo apt-get install redis-server
  1. LoRaServer işlətmək üçün verilənlər bazasını quraşdırmalıyıq. Yeni verilənlər bazasını yaratmaq üçün postgresql promtunu istifadə eləməliyik
  • sudo -u postgres psql
  • create role loraserver_ns with login password 'dbpassword';
  • create database loraserver_ns with owner loraserver_ns;
  • \q
  1. Verilənlər bazasını düz yaratdığımızı yoxlamalıyıq
  • psql -h localhost -U loraserver_ns -W loraserver_ns
  • \q
  1. LoRa Serveri quraşdırırıq
  • sudo apt-get install loraserver
  1. loraserver.toml faylında dəyişiklər edirik
  • sudo su
  • cd /etc/loraserver
  • nano loraserver.toml
  • Aşağıdaki dəyişikləri edirik:

dsn="postgres://loraserver_ns:dbpassw[email protected]/loraserver_nssslmode=disable" automigrate=true name="EU_863_870"

timezone="Local"

server="tcp://127.0.0.1:1883"

  • exit
  1. Lora Serveri başladırıq
  • sudo systemctl start loraserver
  1. LoRa Serveri düzgün quraşdırdığımızı yoxlayırıq
  • systemctl status loraserver
  1. LoRa Serveri boot zamanı başladırıq
  • sudo systemctl enable loraserver
  1. LoRa App Serverı quraşdırırıq:
  1. Yeni verilənlır bazası yaradırıq
  • sudo -u postgres psql
  • create role loraserver_as with login password 'dbpassword';
  • create database loraserver_as with owner loraserver_as;
  • \c loraserver_as
  • create extension pg_trgm;
  • \q
  1. Verilənlər bazasını düz yaratdığımızı yoxlamalıyıq
  • psql -h localhost -U loraserver_as -W loraserver_as
  • \q
  1. LoRa-app- Serveri quraşdırırıq
  • sudo apt-get install lora-app-server
  1. JSON Web token yaratmalıyıq və bir yerdə yadda saxlamalıyıq,bizə lazım olacaq)
  • openssl rand -base64 32
  1. lora-app-server.toml faylın da düzəlişlər eləməliyik
  • sudo su
  • cd /etc/lora-app-server
  • nano lora-app-server.toml
  • Aşağıdaki düzəlişləri eləməliyik:

dsn="postgres://loraserver_as:[email protected] localhost/loraserver_as?sslmode=disable"

Base64 yaratdığımız açarı əlavə etməliyik

jwt_secret="e3+eD7zcVFJF3EFpPnM1oMj02DqUZxt5wR4IfPBpbtA="

server="tcp://localhost:1883"

 public_host="localhost:8001"

  • exit
  1. Lora-app-Server-ı başlatmaq lazımdır
  • sudo systemctl start lora-app-server
  1. Lora-app-Server-ı boot zamanı başlatmaq üçün istifadə olunan kommand
  • sudo systemctl enable lora-app-server
  1. Lora-app-Server-ı düzgün quraşdırıldığını yoxlamaq
  • systemctl status lora-app-server
  1. Server konfigurasıyasının deyişilməsi
  1. cd  /opt/ttn-gateway/bin
  2. sudo nano global_conf.json
  3. Bu faylda aşağıda ki düzəlişlər edilməlidir:

"serv_port_down": 1700,

 "serv_port_up": 1700,

"server_address": "localhost",

  1. sudo reboot
  1. Bütün lazımi xidmətlərin işlədiyini yoxlamalıyıq:
  1. systemctl status ttn-gateway
  2. systemctl status mosquito
  3. systemctl status lora-gateway-bridge
  4. systemctl status loraserver
  5. systemctl status lora-app-server
  1. LoRa App Server Web Interface
  1. Raspberry Pi terminalında hostname –İ kommandasını yerinə yetirib və ip addresi yadda saxlamalıyıq
  2. İstənilən Web brauzeri açıb və ip:8080 daxil etmək ilə bir LoRaServer-ə qoşulmaq mümkündür. Məsələn: 10.10.80.80:8080
  3. Açılan səhifədə Username və Parolu daxıl edib serverə qoşuluruq
  4. Menudan Netvork-servers bölməsini seçirik :

GENERAL TAB

  • Network-server name: LoRaServer1
  • Network-server server: localhost:8000

           GATEWAY DISCOVERY:

  • Heç nəyi dəyişmək lazım deyil
  • Və ADD NETWORK-SERVER-i seçirik
  1. Menudan  Organization bölməsini seçirik:
  • Loraserver I seçib onu update edirik
  • Organization name: Sumaks Technologies
  • Display name : LoRa Server
  • UPDATE ORGANİZATİON
  1. Menudan Service-profiles bölməsini seçirik:
  • CREATE düyməsini basırıq
  • Service-profile name: ServiceProfile1
  • Network-server: LoRaServer1
  • Add gateway meta-data seçirik
  • Enable network geolocation seçmirik
  • Device-status request frequency: 0
  • Minimum allowed data-rate: 0
  • Maximum allowed data-rate: 5
  • CREATE SERVICE-PROFILE
  1. Menudan  Device-Profiles bölməsini seçirik:
  • CREATE düyməsini vururuq
  • Device-profile name: DEVPROF-EU868
  • Network-server: LoRaServer1
  • LoRaWAN MAC version: 1.0.2
  • LoRaWAN Regional Parameters revision: A
  • MAX EIRP: 0
  • CREATE DEVICE-PROFILE seçirik
  1. Device-profile: DeviceB ni seçirik
  • JOIN (OTAA/ABP) seçirik
  • Device supports OTAA seçirik
  • Və UPDATE DEVICE-PROFILE
  1. Menudan Gateways bölməsini seçirik :
  • CREATE düyməsini vururuq
  • Aşağadaki bölmələri istədiyimiz kimi qeyd edə bilərik
  • Gateway name: RAK831
  • Gateway description: RAK831 Pilot Gateway
  • Gateway ID ni global_conf.json faylından götürməliyik
  • Gateway ID: B827EBFFFEC74B36
  • Gateway discovery enabled seçmirik
  • Gateway ın koordinatlarını qeyd etməliyik
  • Və CREATE GATEWAY seçirik
  1. Menudan Applications bölməsini seçirik:
  • CREATE düyməsini vururuq
  • Application name: Smartbin
  • Application description: Smart Waste collection system
  • Service-profile: ServiceProfile1
  • Payload codec: Custom Javascript codec functions
  • Decode funksiyasını əlavə edirik
  • Enter the following:
    // Decode decodes an array of bytes into an object.
    // - fPort contains the LoRaWAN fPort number
    // - bytes is an array of bytes, e.g. [225, 230, 255, 0]
    // The function must return an object, e.g. {"temperature": 22.5}

    function Decode(fPort, bytes) {
       if(bytes.length == 1) {
          if(bytes[0] == 1) {
             return {
                'button': 'activated'
             }
          } else {
             return {
                'error': 'button action unknown'
             }
          }
       } else if(bytes.length == 4) {
          var humidity = (bytes[0]<<8) | bytes[1];
          var temperature = (bytes[2]<<8) | bytes[3];
             return {
                'humidity': humidity/ 100,
                'temperature': temperature/100
             }
          } else {
             return {
                'error': 'payload unknown'
             }
          }
       }
    }
  • CREATE APPLICATION seçib Smartbin applicationunu yaradırıq
  1. Smartbin applicationunu seçirik
  • Devices bölməsinə keçirik
  • CREATE düyməsini vururuq
  • Device name: bin_1
  • Device description: smart bin 1
  • Device EUI: <generate_a_device_eui>  (LSB formatında olmalıdır)

Məsələn: c6 50 16 27 67 60 64 11 (LSB)

  • Device-profile: DEVPROF-EU868
  • Disable frame-counter validation seçməliyik
  • KEYS (OTAA) bölməsini seçirik
  • AppKey yaradırıq (MSB formatında)

Məsələn: eb f3 a6 6d 69 66 6b 31 e2 5f 9a 13 29 44 6b 4a (MSB)

  • SET DEVICE-KEYS düyməsini vururuq
  1. Arduino İDE də MCCI LoRaWAN LMIC library yükləyirik, nümünələr bölməsinə daxil oluruq və ttn-otaa nümünısini seçirik
  • DEVEUI LoRa Server də yaratdığımız açara dəyişirik
  • const u1_t PROGMEM DEVEUI[8]={ 0xC6, 0x50, 0x16, 0x27, 0x67, 0x60, 0x64, 0x11 };
  • static const u1_t PROGMEM APPKEY[16] = { 0xEB, 0xF3, 0xA6, 0x6D, 0x69, 0x66, 0x6B, 0x31, 0xE2, 0x5F, 0x9A, 0x13, 0x29, 0x44, 0x6B, 0x4A };
  • static const u1_t PROGMEM APPEUI[8]={ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
  • Nümünə kodu LoRa vericisinə yükləyirik
  1.  LoRa vericisindən gələn məlumatı yoxlamaq üçün
  • ip:8080 ilə serverə qoşulub sistemə daxil oluruq
  • Menudan Applications bölməsini seçirik
  • Smartbin Appını seçirik
  • Yaratdığımız device seçirik : bin_1
  • LIVE DEVICE DATA bölməsini seçirik
  • Və vericidən gələn məlumatlara rahatlıqla seyr edə bilirik
  1.  LoRaServer ə gələn məlumat heç bir verilənlər bazasına yazılmır. Ona görə HTTP integrasiyası istifadə olunur
  • Menudan applications bölməsinə seçirik
  • İntegrations bölməsinə keçirik
  • HTTP  seçirik
  • URL for uplinks bölməsinə bir link əlavə edə bilərik
  • Vericilərdən gələn butun məlumatın kopyası həmin url ə yönlənəcək və biz onu bir verilənlər bazasına yönləndirik ki gələn məlumatın statistikasını müəyyən edə bilək.

 

  1.  Yuxarıda göstərilən proseslərin hamısının uğurla keçən gateway ı dama quraşdırmak istədiyiniz halda  nələri nəzərə almalısız:
  1. bir stabil gərginlik mənbəyi olmalıdır
  2. Stabil Internet şəbəkəsi olmalıdır
  3. Gateway ı yeni İnternet şəbəkəsinə qoşmaq lazımdır.Bunun üçün bizə bir monitor, mouse və klaviatura lazım olacaq. Raspberry Pi ni monitora qoşub manual olaraq İnternet şəbəkısinə qoşuruq.
  4.  Loglara baxıb GPS düzgün işlədiyini yoxlamaq
  • sudo tail -f /var/log/syslog
  • Raspberry Pi ssh vasitəsi ilə daxil olub bu kommandı icra etmək daha rahat olur
  • SSH ilə qoşulmaq üçün komputerə PuTTY softwaresini yükləyib quraşdırırıq.
  • Raspberry Pi ip addresini daxil edib sistemə login oluruq username: pi

password: raspberry

və cmd-ə kommandı daxil edirik

  • Gələn loglardan əsas VALİD gps olduğunu yoxlamalıyı

Əgər siz bu nöqtəyə qədər gəlibsizsə sizi təbrik edirəm, doğrudan da çətin məqamlar ilə işləyirdik. Ümid edirəm bir problemlə qarşılaşmamısız, əgər qarşılaşmısınızsa narahat olmayın, ola bilsin nə isə qeyd etməyi unutmusuz. Əgər problem düzəlmədisə Google-a müraciət edin orda butun problemlərin həll yolu var buna əmin olun)).