Quick Start LoRaWAN Network Server ระดับ Entry Level II หรือ III

Somsak Lima
9 min readJan 5, 2021

--

สามารถเลือกซื้อ LoRaWAN Network Server ที่ทำจาก Raspberry PI มาใช้งานได้
ตัวอย่างเวปที่มีจำหน่าย ซึ่งประกอบและติดตั้ง Software ที่จำเป็นมาให้เรียบร้อย เช่น เวปตาม คลิก

IP ที่ตั้งไว้ 192.168.1.101 netmask 255.255.255.0 network 192.168.1.0 Gateway 192.168.1.1

DNS Server ตั้งไว้ที่ 192.168.1.1

ถ้าหากนำไปใช้ในวง LAN ที่มีค่า Network ที่ต่างออกไปจากนี้ให้ดูวิธีตั้งค่าใหม่ได้จากด้านล่างบทความนี้หัวข้อ Tip 2.0

เรามาดูวิธีการใช้งานเบื้องต้นกัน มาตรฐานหรือค่าเดิมของ Port , Username, Password ของ app ที่ทางร้านติดตั้งไว้มีดังนี้

ssh ที่ Port 22          User: pi     Password: raspberry
Portainer ที่ Port:9000 User: admin Password: m2mlorawan123
Chirpstack ที่ Port:8080 User: admin Password: admin
InfluxDB ที่ Port:8086 User: admin Password: influx123
Grafana ที่ Port:3000 User: admin Password: grafana
NodeRed ที่ Port:1880
Dragino Gateway ที่ Port:8000             User: admin Password: dragino
เกาะ Wifi Drgino ใช้ Password: dragino+dragino
Dragino 10.130.1.1 ssh port 2222, web admin port Port:8000 User: admin Password:dragino

ก่อนอื่นต้องติดตั้ง Hardware

  1. เสียบ Mouse และ Keyboard เข้ากับ ช่อง USB สีดำของ Server (แนะนำให้ใช้ Wireless Mouse/Keyboard เพื่อประหยัดช่อง USB)
  2. เสียบสาย HDMI จากช่องริมซ้ายสุด (ตามภาพ) เข้ากับจอภาพ
  3. เสียบ Power Supply เข้ากับช่อง USB Type C
  4. เสียบสาย Lan จาก Internet Model เข้ากับช่อง LAN

กรณี Jumper ด้านในเครื่องตั้งไว้ที่ Default

กดปุ่มเปิดปิด (อยู่เหนือช่อง LAN) กด 1 ครั้ง รอเครื่อง Boot ประมาณ 25 วินาที
หากเครื่องทำงานผิดปรกติ ต้องการจะบังคับให้ Raspberry PI ปิดเครื่องโดยไม่ผ่านการ Shutdown ให้กดปุ่มเปิดปิด แช่ไว้ประมาณ 5 วินาที

กรณี Jumper ด้านในเครื่องตั้งไว้ที่ Always On

เมื่อเสียบสายไฟเข้าช่อง USB Type C แล้วไม่ต้องใช้ปุ่มปิดเปิด สวิทช์จะเปิดอยู่ตลอด

วิธีใช้งานจากเครื่อง PC

PC ที่จะเรียกใช้งานจะต้องอยู่ในวงแลนเดียวกันและไม่ใช้ IP ที่ซ้ำกับ LoRaWAN Network Server ซึ่งตั้งไว้ที่ 192.168.1.101

1. ใช้โปรแกรม teraterm เพื่อใช้ ssh

เข้าที่ IP 192.168.1.101

User name คือ pi และ Passphrase คือ raspberry แล้วคลิก OK

สร้าง User เพิ่มด้วยคำสั่ง

sudo adduser newuser

กำหนดให้เป็น SUDOER หรือใช้คำสั่ง sudo ได้ โดยเพิ่มเข้าไป Group sudoer

sudo usermod -aG sudo newuser

กรณีจำเป็นต้องสิทธิ root หรือ admin ให้ใช้คำสั่ง

pi@raspberrypi:~ $ sudo su
root@raspberrypi:/home/pi#

ก็จะได้ Prompt # admin

การจัดการ File บนหน้าจอ terminal อาจจะใช้โปรแกรม MC หรือ midnight commander

เรียกใช้โดย

sudo mc

2.Windows Remote Desktop

ใช้โปรแกรม Remote Desktop บน Windows โดยเข้าที่ IP 192.168.1.101

คลิก Connect

คลิก Don’t ask me again for connections to this computer แล้วคลิก Yes

ใชั username newuser และ password ที่ตั้งขึ้น

เมื่อเข้าได้แล้วอาจตั้ง password ใหม่โดยไปที่โปรแกรม Raspberry Pi Configuration

เลือก Change Password

ป้อน Password ใหม่สองครั้งแล้วกด OK

3. เรียกใช้ Chirpstack

http://192.168.1.101:8080/

ใช้ user name: admin และ password: admin

สามารถ เพิ่ม gateway เพิ่ม Application และ เพิ่ม Node ต่อไป

4.ใช้งาน influxdb

เช่น

sudo docker exec -it influxdb influx

เรียกใช้ http://192.168.1.101:8086

Username:admin
Password: influx123

5. เรียกใช้ Node-Red

http://192.168.1.101:1880

6. เรียกใช้ Grafana

http://192.168.1.101:3000 User Name: admin password:admin (บางตัวอาจถูกตั้งใหม่แล้วเป็น grafana) เข้าครั้งแรกระบบจะขอให้ตั้ง Password ใหม่หากเปลี่ยนจะต้องจดจำ password ใหม่ให้ดี

7. Payload ผู้ใช้งาน LoRaWAN ต้องทำความเข้าใจถึง Packet ข้อมูลที่ส่งออกจาก ตัว Node ไปยัง LNS ซึ่งเรียกว่า Payload

เพื่อให้ประหยัดเวลา On Air หรือ Air Time ก็จะไม่มีการส่งข้อมูลเป็น ASC โดยจะมีการ Encode ข้อมูลให้เป็น Hex และให้มีขนาดเล็กสุด และเมื่อถึงปลายทางก็จะ Decode กลับมาเป็นข้อมูลที่ต้องการ

ประโยชน์ของการ Encode และ Decode ก็คือจะช่วยให้เกิดการชนกันของ Packet หรือการส่งพร้อมกันมีน้องลง เพราะแต่ละครั้งจะส่งใช้เวลาสั้นๆ ในหลัก ms

แต่ก้เพิ่มความยุ่งยากในการเขียนโปรแกรมมากขึ้น คือต้องเขียน Encode และ เขียน Java Script ใส่ใน LNS เพื่อ Decode

บางคนอื่นเลือกใช้ Function Encode/Decode สำเร็จรูปที่เรียกว่า CayenneLPP เพื่อลดความยุ่งยากในการเขียนโปรแกรม

ตัวอย่างการตั้งค่าใช้งาน Private LoRaWAN Network Server

1.ตั้งค่า LoRaWAN Gateway เพื่อชี้เข้า LoRaWAN Network Server

ให้แก้ที่ Gateway โดยให้ชี้ไปที่ IP ของ LoRaWAN® Network Server ที่เราสร้างขึ้นตัวอย่าง เช่น ถ้าใช้ Dragino LPS8N-AS923-TH ตามรูป

1.1 กรณีเข้า Config ผ่าน LAN
ให้เสียบสาย LAN เข้าที่ Port Lan เช็คดูว่า Dragino ได้รับแจก IP หมายเลขอะไรจาก dhcp server ในวง LAN

วิธีดูว่า Dragino Gateway ได้หมายเลข IP อะไร อาจจะติดตั้งโปรแกรม Wireless Network Watcher คลิก ติดตั้งแล้วเรียกใช้งานจะเห็นคล้ายตามรูปตัวอย่าง ให้สังเกตุชื่อ Dragino ในช่อง Network Adapter Company ก็จะทราบหมายเลข IP ที่ Dragino ใช้งานอยู่

เมื่อทราบ IP แล้วเรียก เวป 192.168.1.X:8000 เช่น 192.168.1.151:8000 เป็นต้น

หรืออาจจะเรียกคำสั่ง

sudo nmap -sn 192.168.0.0/24

มองหา Dragino ก็จะเห็น IP จากบรรทัดด้านบน เช่น

Nmap scan report for 192.168.1.151
Host is up (0.00015s latency).
MAC Address: A8:40:41:22:71:3E (Dragino Technology, Limited)

1.2 กรณีเข้า Config ผ่าน Wifi
ให้ Connect gateway ด้วย WIFI เลือก Hotspot ที่ขึ้นด้วย Dragino

เชื่อมต่อด้วยระหัสผ่าน dragino+dragino เปิดเวปที่หน้า 10.130.1.1 เข้าด้วย

ยูสเซอร์และระหัสผ่าน admin/dragino

ไปที่ Dropdown เมนู LoRaWAN/LoRaWAN

จดค่า Gateway ID ไว้
แก้ Email เป็นของเจ้าของ
Service Provider เป็น Custom/Private
Server Address 192.168.1.101

แล้วคลิก Save&Apply

สามารถดูหมายเลข IP ที่ Dragino ใช้อยู่ตามภาพ โดยสามารถเข้าหน้าจอ Web Admin ผ่าน IP นี้ได้ด้วย โดยไม่ต้องเชื่อมต่อ Wifi ในครั้งหน้า เช่น เข้าผ่าน http://192.168.1.151:8000

2.เพิ่ม Gateway ใน Chirpstack

เข้าหน้า Admin Page ของ ChirpStack โดยเปิด http://192.168.1.101:8080

ใช้ User: admin password:admin

คลิกที่ Gateways ตรงเมนูด้านซ้าย แล้วคลิก +CREATE ตรงมุมบนขวา

ตั้งชื่อ Gateway Name และใส่ Description แล้วนำ gateway id ที่จดไว้มาป้อนในช่อง Gateway ID และเลือก Network Server เป็น NS

ป้อนระดับ่ระดับความสูงจากพื้นดิน ของ Gatewayมีหน่วยเป็นเมตร คลิกปุ่มลบบนแผนที่หลายๆๆๆๆๆๆๆ ครั้ง เพื่อ Zoom out จนแผนที่ย่อส่วนจนเห็นประเทศไทย ย้ายจุด Mark ไปยังตำแหน่งที่เราต้องการ แล้วคลิก Create Gateway มุมขวาล่าง

จะเห็นชื่อ Gateway ตัวใหม่บนหน้าเวป ข้อมูล Last Seen จะยังไม่ขึ้นจนกว่าจะมี Device Node ที่อยู่ใกล้เคียงและส่งข้อมูลเข้า ChirpStack

เมื่อมี Node ส่งข้อมูลเข้ามา จะเริ่มเห็น Status ของ Last Seen เปลี่ยน เป็นอันเสร็จสิ้นการเพิ่ม Gateway ใหม่

สามารถคลิกที่ชื่อ dragino_gatewayเพื่อดูค่าู Gateway Configuration หรือ Live LORAWAN Frames ที่ ChirpStack รับได้หากเริ่มมี Device Node ส่งข้อมูลอยู่ใกล้ๆ และใช้ความถี่ตรงกับ LoRaWAN Gateway

เมื่อคลิกที่ UPLINK แต่ละบรรทัดจะเห็นรายละเอียดของข้อมูล

3.เพิ่ม Sensor Node

ตัว Sensor Node บางสำนักก็เรียกชื่อแตกต่างกันไป เช่น เรียก Sensor Device หรือ Mote แต่ในบทความนี้จะเรียกสั้นๆ ว่า Node

เมื่อเราซื้อหรือทำ Sensor Node ขึ้นมาใหม่ เราจะต้องเพิ่ม Node ให้ ChirpStack รู่จักก่อน

****วิธีการเพิ่ม Node ทั้งใน ChirpStack หรือ TheThingsNetwork จะเก็บไว้ในเมนูที่เรียกว่า Application เราจึงมองหาเมนู เพิ่ม Sensor Node ไม่พบ ต้องเข้าใต้เมนู Application

3.1 เมนู Application

ตัวอย่าง Application ที่ได้สร้างไว้แล้วชื่อ app เราสามารถนำไปใช้ได้เลย

****ตอนใช้งานจริง ใน influxdb เราควรสร้าง create DATABASE ชื่อ เดียวกับ
Applcation Name ใน ChirpStack และตั้ง Datasource ใน Grafana ให้ Database เป็นชื่อเดียวกัน

Sensor Device Node มีให้เลือกว่าเราจะ Negotiate Password Key กันแบบไหน มีให้เลือกอยู่ 2 แบบคือ แบบ ABP และแบบ OTAA จะไม่กล่าวละเอียดในบทความนี้

Device Node ยังแบ่งออกเป็น 3 Class คือ Class A, Class B และ Class C บทความนี้จะแนะนำการเพิ่ม Device Class A ทั้งแบบ ABP และ OTAA สำหรับ Node LoRaWAN V.1.0.0–1.0.3

LoRaWAN Network Server จากผู้พัฒนาแต่ละค่ายนั้นใช้ จำนวน KEY แตกต่างกัน โดยลักษณะการเรียง KEY ในแต่ละ KEY มีสองแบบคือ LSB และ MSB (ทุกค่ายเรียงเหมือนกัน) ตามภาพยกตัวอย่าง KEY ที่ใช้ของ ThaThingsNetwork, ChirpStack, Gotthardp

Key ที่ใช้กับ LoRaWAN server สำหรับ Node LoRaWAN V.1.0.0–1.0.3

3.2 เพิ่ม Sensor Device Node ที่ Authen ด้วยวิธี ABP ใน Application ที่เราสร้างขึ้น

คลิกตรง app จะพบหน้าจอดังต่อไปนี้ ซึ่งมีตัวอย่าง Node หรือ device_abp และ device_otaa ที่ได้สร้างเป็นตัวอย่างไว้แล้ว

เมื่อเราได้ Node มาใหม่ เราต้องสร้างใหม่ โดยคลิก +Create

ใส่ค่า Device Name, Device Description, Device EUI หากเรายังไม่มีีให้คลิกตรงวงกลมสีแดงเพื่อให้ระบบสร้างขึ้น เลือก Device_profile_abp ที่สร้างไว้อยู่แล้ว ติก Disable Frame-counter validation เสร็จแล้วให้คลิก CREATE DEVICE ด้านล่างขวา

*Frame-counter validation หมายถึงการนับเลขลำดับการรับส่งต้องตรงกัน

ให้คลิก Device ที่เราสร้างขึ้น เพื่อเข้าไปเพิ่มเติมข้อมูล แทปแรกที่ต้องเพิ่มคือ Activation ให้ป้อน Device Address, Network Session Key, Application Session Key ถ้าค่าเหล่านี้เราไม่มีสามารถคลิกเครื่องหมายลูกศรวงกลมด้านหลังให้ระบบสร้างขึ้นใหม่ แล้วคลิก Reactivate Device

ตัวอย่างเราตั้งชื่อ Sensor Node เป็นชื่อ UNO1 ให้นำค่า Device Address, Network Session Key, Application Session Key ไปใส่ในโปรแกรมภาษา C ก่อน Flash MCU

ถ้า Node Device UNO1 เปิดและส่งข้อมูลอยู่จะเห็นข้อมูล Uplink ขึ้น โดยแสดง Packet ละบรรทัด

เมื่อคลิกเข้าไปดูรายละเอียดแต่ละบรรทัด และเนื่องจากที่เราได้แก้ให้ Device Profile มีการถอดระหัสแบบ CODEC CayaenneLPP ค่าที่ได้ก็สามารถอ่านด้วยตาเปล่าได้อัตโนมัติ แสดงค่าจะ Sensor ตามวงกลมสีแดง

หรือเข้าไปดู TAB LoRaWAN Frame ก็จะเห็นข้อมูลสื่อสารกันระหว่าง ChirpStack กับ Device UNO1

3.3 เพิ่ม Sensor Node ที่ Authen ด้วยวิธี OTAA ใน Application ที่เราสร้างขึ้น

ตัวอย่าง Device Node Sensor ฺBME280, CSS811

ใส่ Device name และ Device Description ตามต้องการ แล้วป้อน DevEUI หรือให้ระบบสร้างให้

แก้ใน KEYS(OTAA) เพิ่มค่า Application Key

หาก Device Node เริ่ม เชื่อมต่อสำเร็จจะเห็นข้อมูลในแทป Device Data และ แทป LoRaWAN Frames

4.สร้าง bucket ใน Influxdb รอรับข้อมูล Intgration จาก ChirpStack แสดงข้อมูลจาก Influxdb ด้วย Grafana

ตอนใช้งานให้เข้าที่ http://192.168.1.101:3000

User:admin
Password:admin หรืออาจจะถูกเปลี่ยนเป็น grafana

สามารถดูรายละเอียดได้จาก บทความ คลิก

Tip!

1.การ Monitor ดู Performance ของ LoRaWAN Network Server
ว่ายังรองรับปริมาณงานได้ดีเพียงพอกับการใช้งานหรือไม่ดูได้จาก

1.1 Load ของ CPU

ใช้คำสั้ง

htop 

จะแสดงผล เช่น

จะแสดง Load ของทั้ง 4 Core บนหน้าจอ

1.2 ดู SSD Space ที่เหลืออยู่

หาก Use% ยังต่ำก็แสดงว่ายังมีพื้นที่ใช้งานมากพอ พื้นที่เก็บข้อมูลของ Influxdb จะใช้ /dev/root หากพื้นๆ ใกล้ครบ 100% ให้เตรียมขยายขนาด SSD โดยซื้อตัวใหญ่กว่ามาเปลี่ยน

จะเห็นจำนวนขนาดของ SSD จากบรรทัดแรกคือ /dev/root อยู่ที่ประมาณ 115,109,712 (1K-blocks) ซึ่งเป็นขนาดโดยประมาณของ SSD ความจุ120GB

2. กรณีที่ต้องการเปลี่ยน IP ของ LoRaWAN Network Server ให้ใช้หมายเลข IP อื่นที่ตั้งไว้เดิม (192.168.1.101) สามารถแก้ไขเป็นเลขอื่นได้ ดังนี้

แก้ไขไฟล์ eth0 และป้อนข้อมูล Address ใหม่ที่ต้องการ เช่น เป็น 192.168.1.102 เป็นต้น

sudo nano /etc/network/interfaces.d/eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.102
network 192.168.1.0
netmask 255.255.255.0
gateway 192.168.1.1

แก้ DNS Server

sudo nano resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 192.168.1.1

Tip! ใน ChirpStack จะมีการกำหนดค่า Network Server อ้างอิงตามหมายเลข IP NO. หากแก้ไข IP No. ของ LNS แล้วให้เข้าไปแก้ตรง Network-servers ของ ChirpStack ด้วยตามรูป

และต้องแก้ค่า IP datasource ของ Grafana ด้วย

3.หากต้องเพิ่ม SWAP ไฟล์ เช่น จาก 100M เป็น 1024M ให้

แก้ไข file โดยเพิ่มจาก CONF_SWAPSIZE=100 เป็น CONF_SWAPSIZE=1024

sudo nano /etc/dphys-swapfilesudo 
/etc/init.d/dphys-swapfile restart

ตรวจสอบโดยใช้คำสั่ง

top

จะเห็นตัวเลขเพิ่มเป็น 1024 MiB

4. Jumper เลือก Always On หรือ Default
กรณีตั้งไว้ Default หากไฟฟ้าดับ เมื่อไฟฟ้ามาตัวเครื่องจะไม่เปิดอัตโนมัติ จะต้องมากดปุ่ม Switch ซึ่งหากเราต้องการให้ Always on ทำได้โดยการเปลี่ยนตำแหน่ง Jumper ใน Case

ขันสกรูใต้เครื่องออก 4 ตัวแล้วเปิด Case

สลับ Jumper ให้อยู่ที่ตำแหน่ง 2–3 หรือจะเป็น 1–2 แล้วแต่ต้องการ

5.ต้องการพิมพ์ภาษาไทย ทำได้ตามบทความ
https://playelek.com/rpi-th-keyboard/

http://ajgo.blogspot.com/2018/01/raspbian.html

6. เพิ่ม Font ภาษาไทยให้กับ Libre Office Writer

Copy SIPA Font *.ttf ลงไปเก็บไว้ใน Directory home/pi/.fonts

ต้องสร้าง .fonts ซึ่งเป็น Hidden Directory ขึ้นมาก่อน กรณีสร้างใต้ /home/pi จะให้ user pi มองเห็น fonts เพียงคนเดียว หรือหาก Copy ไปไว้ที่ใน /usr/share/fonts ผู้ใช้ทุกคนก็จะใช้ fonts ดังกล่าวได้ เช่น ใช้คำสั่ง

sudo cp ubuntu*.ttf /usr/share/fonts/truetype/ttf-liberation

ใช้คำสั่ง


fc-list

เพื่อแสดง Fonts ที่ติดตั้งไว้แล้วในระบบ

7. เข้าใช้งาน ChirpStack API ได้ด้วย http://192.168.1.101:8080/api

ดูวิธีการใช้ API ได้จากคลิป คลิก

ตัวอย่าง Dashboard สร้างจาก Grafana

ตัวอย่าง Container ที่ติดตั้งทำงาน

8.0 ****กรณีที่ท่านได้ Portainer Version 1.19.5 แล้วไม่สามารถเข้า Console ของ Container ได้ จำเป็นต้อง Update Portainer เป็น Version 2.20.1 โดยวิธีดังต่อไปนี้

ก่อนอื่น Login ssh ด้วย User: pi Password: raspberry แล้วใช้คำสั่ง

docker stop portainer
docker rm portainer
sudo docker run -d --restart always -p 9000:9000 --name portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.20.1

--

--

Somsak Lima
Somsak Lima

Written by Somsak Lima

สนับสนุนและส่งเสริมให้ผู้สนใจสามารถใช้งานเทคโนโลยี LoRa และ LoRaWAN ได้ โดยนำความรู้ที่ได้ไปต่อยอดเพื่อใช้งาน

No responses yet