ใช้งาน ChirpStack LoRaWAN® Network Server บน PI 4B
หลังเขียนบทความติดตั้ง ChirpStack บน Raspberry PI 4B ในตอนที่แล้ว บทความนี้มาดูวิธีใช้งานกัน
การใช้งานตามบทความนี้จะต้องติดตั้งด้วยวิธีที่กล่าวถึงในบทความตอนที่แล้วเพราะการติดตั้งด้วย script ในบทความที่แล้วจะใส่ค่าตัวอย่าง (ค่า Default) เข้าไปในฐานข้อมูลด้วย ทำให้เราเข้าใจวิธีการใช้งานได้ง่ายขึ้น โดยดูจากตัวอย่างที่ป้อนไว้แล้ว
เริ่มการใช้งานให้เรียกใช้งาน http://<PI IP>:8080 แล้วล๊อกอินด้วย User: admin และ Password: admin
การใช้งานจะเริ่มไล่จากเมนูข้างซ้ายของจอภาพ จากบนลงล่าง หลังล๊อกอินเสร็จจะมีเมนูด้านซ้ายดังนี้ บทความนี้จะแนะนำไล่เรียงแต่ละเมนูตามหัวข้อสีแดงในภาพ
- มาดูกันว่ามีอะไรเป็นตัวอย่างที่ตั้งไว้ให้แล้ว เราไม่จำเป็นต้องแก้ไขอะไร ส่วนที่อาจจะต้องการแก้ไข เช่น ตรงหัวข้อ 1.9 เมื่อเราต้องการส่งข้อมูล Payload รูปแบบ CayenneLPP
1.1 เมนู Network-server
มีการตั้งค่า ns ไว้แล้วเป็น localhost:8000
1.2. เมนู Gateway-profiles
มีการตั้งค่า gateway_profileไว้แล้ว เชื่อมเข้ากับ Network Server ชื่อ NS
1.3. เมนู Organization
มีการตั้งค่า Organization ไว้แล้วชื่อ chirpstack
1.4. เมนู All users
มีการตั้งเพิ่มค่าในเมนู All users ไว้แล้วชื่อเป็น User : admin
1.5. API Keys
ยังไม่ได้มีการตั้งค่าใดๆ เราสามารถสร้าง API KEY โดยคลิก Create มุมขวาบน บทความนี้เรายังไม่ได้ใช้ค่านี้
1.6. เมนู Org. settings
ตั้งไว้แล้วตามรูป
1.7. เมนู Org. users
มีตั้งไว้แล้วคือ admin
1.8. เมนู Service profile
มีตั้งไว้แล้วชื่อ service-profile
1.9 เมนู Device-profiles
มีตั้งไว้ให้แล้วสองบรรทัด (Device-profiles) คือ device_profile.abp และ device_profile.otaa
ให้เข้าไปตั้งค่า CODEC เป็น Cayenne LPP ทั้ง device_profile_abp และ device_profile_otaa เปลี่ยนแล้วอย่าลืมคลิก Update Device Profile ด้านล่าง รูปตัวอย่างแสดงให้ดูเฉพาะ abp
2. เมนูที่กล่าวถึงในข้อ 1 เรามักจะตั้งเพียงครั้งแรกครั้งเดียว ถ้าการใช้งานของเราไม่ซับซ้อนมาก จะมีเพิ่มเติมอีกเมนูสองเมนูที่เราจะเริ่มใช้บ่อยมากกว่าเมนูอื่น คือ Gateways และ Applications เมนูทั้งสองจะรองรับให้เราเข้าไปตั้งค่าเมื่อมีอุปกรณ์ ทั้ง Gateway และ Device Node เพิ่มขึ้น
2.1 ติดตั้ง Gateway
เมื่อเราซื้อ gateway ตัวใหม่มา เราจะใช้เมนู Gateways เพื่อเพิ่มให้ ChirpStack รู้จัก ยกตัวอย่าง เป็น Gateway ตามรูป คือ Dragino LG308-AS923-TH-EC25 หลังจากเราต่อสายและป้อนไฟเรียบร้อย ให้เข้าเมนูของ Dragino Gateway และจดค่า gateway id เพื่อมาลงละเบียนใน ChirpStack
ล๊อกอินเข้าเวป UI ของ Dragino Gateway ใช้ IP 10.130.1.1 User root /Password dragino แล้วให้เข้าไปที่เมนู Service / LoRaWAN® Gateway / General Setting ให้จดค่า Gateway id ในวงกลมสีแดงไว้ (ควรเปลี่ยน LoRaWAN® server Address เป็น หมายเลข IP ของ Raspberry Pi ที่ลง ChirpStack ด้วย ก่อน คลิก Save & Apply )
แล้วกลับมาที่ UI ของ ChirpStack เข้าเมนู Gateway แล้วให้คลิก Create มุมขวาบน
ตั้งชื่อ Gateway Name และใส่ Description แล้วนำ gateway id ที่จดไว้มาป้อนในช่อง Gateway ID และเลือก Network Server เป็น NS
ป้อนระดับ่ระดับความสูงจากพื้นดิน ของ Gatewayมีหน่วยเป็นเมตร คลิกปุ่มลบบนแผนที่หลายๆๆๆๆๆๆๆ ครั้ง เพื่อ Zoom out จนแผนที่ย่อส่วนจนเห็นประเทศไทย ย้ายจุด Mark ไปยังตำแหน่งที่เราต้องการ แล้วคลิก Create Gateway มุมขวาล่าง
จะเห็นชื่อ Gateway ตัวใหม่บนหน้าเวป ข้อมูล Last Seen จะยังไม่ขึ้นจนกว่าจะมี Device Node ที่อยู่ใกล้เคียงและส่งข้อมูลเข้า ChirpStack
**แตกต่างจาก TheThingsNetwork ที่จะขึ้น Status เป็น Connect หลังจากเราเพิ่มชื่อ Gateway เสร็จและ Gateway ส่งข้อมูลติดต่อมา
เมื่อมี Node ส่งข้อมูลเข้ามา จะเริ่มเห็น Status ของ Last Seen เปลี่ยน เป็นอันเสร็จสิ้นการเพิ่ม Gateway ใหม่
สามารถคลิกที่ชื่อ dragino_gatewayเพื่อดูค่าู Gateway Configuration หรือ Live LORAWAN Frames ที่ ChirpStack รับได้หากเริ่มมี Device Node ส่งข้อมูลอยู่ใกล้ๆ และใช้ความถี่ตรงกับ LoRaWAN Gateway
เมื่อคลิกที่ UPLINK แต่ละบรรทัดจะเห็นรายละเอียดของข้อมูล
2.2 เพิ่ม Sensor Node
ตัว Sensor Node บางสำนักก็เรียกชื่อแตกต่างกันไป เช่น เรียก Sensor Device หรือ Mote แต่ในบทความนี้จะเรียกสั้นๆ ว่า Node
เมื่อเราซื้อหรือทำ Sensor Node ขึ้นมาใหม่ เราจะต้องเพิ่ม Node ให้ ChirpStack รู่จักก่อน
****วิธีการเพิ่ม Node ทั้งใน ChirpStack หรือ TheThingsNetwork จะเก็บไว้ในเมนูที่เรียกว่า Application เราจึงมองหาเมนู เพิ่ม Sensor Node ไม่พบ ต้องเข้าใต้เมนู Application
2.2.1 เมนู Application
ตัวอย่าง Application ที่ได้สร้างไว้แล้วชื่อ app เราสามารถนำไปใช้ได้เลย
App หนึ่งๆ ควรมี Field Cayenne Format เหมือนๆ กัน เช่น ถ้าเรามี node วัด Sensor คุณภาพอากาศ ก็อาจจะตั้งชื่อหนึ่ง ถ้ามี node ที่ Tracking Asset ด้วย GPS ก็ควรใช้ชื่อ 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
LoRaWAN Network Server จากผู้พัฒนาแต่ละค่ายนั้นใช้ จำนวน KEY แตกต่างกัน โดยลักษณะการเรียง KEY ในแต่ละ KEY มีสองแบบคือ LSB และ MSB (ทุกค่ายเรียงเหมือนกัน) ตามภาพยกตัวอย่าง KEY ที่ใช้ของ ThaThingsNetwork, ChirpStack, Gotthardp
2.2.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
2.2.3 เพิ่ม Sensor Node ที่ Authen ด้วยวิธี OTAA ใน Application ที่เราสร้างขึ้น
ใส่ Device name และ Device Description ตามต้องการ แล้วป้อน DevEUI หรือให้ระบบสร้างให้
แก้ใน KEYS(OTAA) เพิ่มค่า Application Key
หาก Device Node เริ่ม เชื่อมต่อสำเร็จจะเห็นข้อมูลในแทป Device Data และ แทป LoRaWAN Frames
3. การส่งข้อมูลจาก Application Server ต่อไปยัง Application อื่นทำได้หลายแบบ เช่น Cayenne Dashboard ที่ myDevies.com แล้วยังมีตัวเลือกอื่น เช่น
การส่งออกด้วย http, การเขียนข้อมูลลง influxdb, การส่งข้อมูลเข้า ThinksBoard เป็นต้น
4. การส่งออกไป Mydevice.com จะต้องพึ่งพา Server ภายนอกผ่านระบบ Internet ซึ่งก็มีข้อดีข้อเสียอยู่ แต่หากเราต้องการให้ระบบเราเป็นระบบปิด ข้อมูลทั้งหมดไม่ออกไปสู่ internet ภายนอก สามารถใช้ระบบที่ติดตั้งใน Private LAN ทั้งหมด อาจจะเลือกเขียนลง influxdb แล้วใช้ Grafana ทำเป็น Dashboard
อีกวิธีหนึ่ง คือ ส่งข้อมูลต่อไปยังโปรแกรม ThingsBoard ที่ติดตั้งภายใน LAN เป็นต้น
สามารถดู Demo ตัวอย่าง Thingsboard ได้ที่ คลิก
สรุป
จากบทความสองตอน เราสามารถสร้าง LoRaWAN Network Server ส่วนตัวไว้ใช้งานได้ มีข้อดีคือข้อมูลก็จะไหลเวียนอยู่ในระบบปิดภายในหน่วยงานหรือที่บ้านเท่านั้น ข้อมูลเราจะไม่ไปปะปนกันผู้ใช้อื่นๆ
ต้องขอขอบคุณบริษัท RAK Wireless ที่ทำ Script ติดตั้งให้ง่ายขึ้น และทำให้ในเวปตั้งค่าของ ChirpStack มีค่า default ไว้พร้อมให้เราเริ่มใช้งานได้เลย