วิธี Debug Packet ข้อมูล LoRaWAN
การส่งข้อมูลจาก LoRaWAN Node หรือ Device นั้นจะส่งหลายทอด การที่จะเห็นข้อมูลที่ปลายทางบน LoRaWAN Network Server หรือปลายทาง Application Server ทุกจุดสำคัญของทางผ่านจะต้องไม่มีปัญหา เรามาดูถึงปัญหาที่พบบ่อยที่ทำให้ข้อมูลไม่ไปปรากฎที่ปลายทางว่ามีปัญหาอะไรบ้าง และถ้ามันส่งผ่านได้ ควรจะเห็นข้อมูลในแต่ละทอดอย่างไร
ตัวอย่างที่แสดงจะยกตัวอย่าง อุปกรณ์ End Nodes ที่ผู้เขียนมีใช้งานอยู่คือ LoRaWAN มอดูลเป็นของ AI-Thinker RA-08H และ LoRaWAN Gateway/Concentrator เป็น Dragino LPS8N-AS923-TH ส่วน Network Server นั้นจะใช้ Chirpstack เป็นตัวอย่าง
อนึ่งเข้าใจว่าผู้อ่านได้ทำการตั้งค่าตามคู่มือการใช้งานแล้วแต่ติดขัดข้อมูลที่ส่งไม่ได้ แสดงให้เห็นบน LoRaWAN Network Server โดยบทความนี้ไม่ได้สอนการตั้งค่าการใช้งาน
- LoRaWAN End nodes ต้องส่งตรงความถี่กับที่ตั้งไว้ที่ Dragino LoRaWAN Gateway เช่น ประเทศไทยมักใช้ กันที่ AS923 Upper Band คือ 923–925Mhz.
Uplink:
923.2 - SF7BW125 to SF12BW125
923.4 - SF7BW125 to SF12BW125
923.6 - SF7BW125 to SF12BW125
923.8 - SF7BW125 to SF12BW125
924.0 - SF7BW125 to SF12BW125
924.2 - SF7BW125 to SF12BW125
924.4 - SF7BW125 to SF12BW125
924.6 - SF7BW125 to SF12BW125
924.5 - SF7BW250
924.8 - FSK
Downlink:
Uplink channels 1-10 (RX1)
923.2 - SF10BW125 (RX2)
ตัวอย่าง การ Join แบบ OTAA เช่น มอดูล AI-Thinker RA-08H (ASR6601)
จะเห็นว่ามีการ Join Request ที่ ช่อง 923.4 Mhz ซึ่งแสดงว่าถูกต้อง ปรกติจะทำการ Join Request ที่ช่อง 923.2 หรือ 923.4 Mhz
เมื่อ Join สำเร็จแล้ว และเมื่อเริ่มส่งข่้อมูลจะเห็นการส่งที่ความถี่ TX on 924.4Mhz ซึ่งแสดงว่าถูกต้อง มอดูลจะ random ส่งโดยเลือก หนึ่งใน 8 ช่องความถี่ ดังต่อไปนี้คือ 923.2, 923.4, 923.6, 923.8, 924.0, 924.2, 924.4, 924.6 Mhz
ตัวอย่าง KEY สำหรับ Authen Device แบบ OTA ที่ตั้งค่าไว้ในมอดูล คือ
DEVEUI:1200000000000002
APPKEY:20000000000000000000000000000001
APPEUI:0000000000000000
หากคุณใช้ LoRaWAN End Nodes ที่เป็นตระกูล Arduino + SX1276 และใช้ LMIC Lib ให้พยามเปิด Debug ตอนทำงานให้แสดงค่าความถี่ออกมาที่ Serial Monitor ตามตัวอย่าง
ซึ่งจะทำให้ทราบว่าตอน Node ทำงานนั้นสื่อสารตรงช่องความถี่ ที่ Dragino LoRaWAN Gateway เปิดรอรับอยู่หรือไม่
2. LoRaWAN Gateway จะต้องลงทะเบียนและเชื่อมต่อกับ LoRaWAN Network Server ให้เรียบร้อยตามคู่มือแต่ละยี่ห้อ
Dragino LPS8N จะเรียกช่องเสียบ ETH ด้านหลังว่า WAN Port หรือ ETH1 การตั้งค่าเริ่มต้นจะโรงงานโดยปรกติจะตั้งให้รับ DHCP อัตโนมัต ิเราสามารถเปลี่ยนเป็น Static IP ได้ตามต้องการ แต่ต้องระวังไม่ใช้ IP ซ้ำกับอุปกรณ์อื่นในวง LAN
กรณีที่ 1
หากใช้ Dragino LoRaWAN Gateway รุ่น LPS8N เข้าเวปแอดมินแล้วคลิกหน้า Home หากเชื่อมออก Internet ได้และติดต่อ TTS หรือ Chirpstack ได้ปรกติ จะมีสีเขียวถูกทั้งสีุ่ด ตามภาพด้านล่าง
หากตั้งค่าถูกต้องและลงทะเบียน Gateway EUI ไว้บน Chirpstack LoRaWAN Network Server จะเห็น ติดเครื่องหมายถูกเขียวตรง LoRaWAN
ลองย้าย Mouse Pointer รูปมือ ให้ชี้ไปที่ eth
ด้านล่างซ้ายจะเห็น IP ที่ gateway ได้รับแจกจาก Router แสดงว่าการเชื่อมต่อ LAN และได้รับ IP มาถูกต้อง พร้อมส่งต่อข้อมูลไปทางสาย LAN
หากชี้ไปที่ LoRa จะเห็นความถี่ที่ Gateway Dragino เลือกรับ เช่น 923–925Mhz ตามภาพ
หากชี้ไปที่ LoRaWAN
จะเห็นเลข IP ของ LoRaWAN Network Server หรือ Chirpstack ที่เราจะส่งข้อมูลไปต่อ
หากใช้ TheThingNetwork ก็จะเป็นชี้ไปที่ Domain TTN เช่น eu1.cloud.thethings.etwork ตามตัวอย่าง
กรณีที่ 2.
ไม่มี Internet มีการเชื่อมต่อเพียง Intranet ในองค์กร หน้า Home ตรง ETH เป็นเครื่องหมายถูกสีเหลือง และมีกากบาดสีแดงที่ LoRaWAN
แสดงว่า Dragino เชื่อมต่อกับ Switch Hub และ Online อยู่ใน Intranet ไม่ได้เชื่อมกับ Internet ภายนอก ซึ่งจะทำให้มี กากบาดสีแดงที่ LoRaWAN ถึงแม้จะเชื่อมต่อกับ Chirpstack ภายในได้(หากมี Chirpstack ติดตั้งและทำงานอยู่) และถ้าดูที่ LogRead Systemlog ด้านล่างตรง Network State จะเห็นคำอธิบายว่า No Internet Connection but IoT Service Online ซึ่งจะเป็นการทำงานที่เป็นปรกติ
เอา Mouse ชี้ไปที่ LoRaWAN ด้านล่างซ้ายจะขึ้นว่า LoRaWAN process fwd Running และ Online อยู่
ดู Gateway Traffice
การดูข้อมูลที่ gateway รับส่งให้ดูในหน้า gateway traffic ใต้ TAB LogRead จะเห็น Package ข้อมูลติดต่อรับส่งขึ้นทีละบรรทัด
เมื่อคลิก icon ด้านหน้าจะมีการขยายข้อความซ่อนไว้ให้เห็นมากขึ้น จะเห็นว่ามีการ Join Request มาที่ช่องความถี่ 923.4Mhz และถ้าระหัสข้อมูล Key ต่างๆ ที่ลงทะเบียนไว้ถูกต้องที่ LoRaWAN Network Server ซึ่ง Chirpstack ยอมให้เชื่อมต่อได้ก็จะเห็นบรรทัดใหม่ Join Accept เป็นการยอมรับให้เชื่อมต่อรับส่งข้อมูล
ให้สังเกตุบรรทัด Join Request คอลัมภ์ Content จะเห็น DevEui และ AppEUI ให้เช็คว่าตรงกับที่กำหนดไว้ที่ End Nodes
DEVEUI:1200000000000002
APPEUI:0000000000000000
เมื่อเริ่มมีการส่งข้อมูล Data Up ช่อง CNT ควรเป็นเลขเรียงกัน แสดงว่าไม่มี Package ที่หลุดหาย หรือส่งไม่ตรงความถี่
3. LoRaWAN Network Server กรณีนี้จะยกตัวอย่างโดยใช้ Chirpstack
3.1 Gateway
จะเห็น Online สีเขียวขึ้น และ Region จะขึ้น AS923 ถ้า LoRaWAN Gateway เชื่อมต่อแล้ว
ถ้าคลิกตรง gateway ID สีฟ้าจะเห็นข้อมูลรายละเอียด การ Join Request หรือ Join Accept ที่ TAB LoRaWAN frames ซึ่งแสดงว่าข้อมูล Package วิ่งมาถึง LNS Gateway แล้ว
Join Request ส่งมาจาก
DEVEUI:1200000000000002
และ Join Accept ตอบกลับให้กับ
DEVEUI:1200000000000002 ผ่านทาง Dragino Gateway a84041ffff22713c เป็นต้น หากเราติดตั้ง Dragino gateway หลายตัว ตัวที่จะส่ง Join Accept ให้ End Node คือตัวที่รับสัญญาณจาก End Nodes ดีที่สุด
3.2 Application/Device
ตัวอย่างค่าที่ตั้งไว้ใน Chirpstack
DEVEUI:1200000000000002
APPEUI:0000000000000000 หรือ JoinEUI
APPKEY:20000000000000000000000000000001
หากคลิกไปที่ Dev ที่สร้างขึ้นใต้ Application เมนู แล้วไปที่ TAB LoRaWAN Frames จะต้องเห็น Status ของการรับส่งข้อมูล
เช่น มีการ Join Request, Join Accept และมีการส่งข้อมูลเข้า Data Up
คลิก ICON แว่นขยายด้านขวาจะเห็นข้อมูล JSON ของ Package ที่ส่งมา
คลิก TAB Events
แล้วคลิกแว่นขยาย จะเห็น ข้อมูล JSON ด้านขวา หากข้อมูลส่งมาแบบ Cayenne Format และเราเลือก Decode หรือใส่ Java Decode Script ไว้ถูกต้อง จะเห็นค่าที่ส่งมาจาก Device
ตามตัวอย่างจะเห็นค่าที่ต้องการคือ ความชื้น 59% และอุณหภูมิ 31.1 องศา
ปัญหาการส่งได้บ้างและไม่ได้บ้างของ Device ABP
ปัญหาหนึ่งที่พบบ่อยคือ ปัญหาเรื่อง Frame Counter ซึ่ง Network Server มักจะ Default On ไว้เป็น ระบบหนึ่งเกี่ยวกับความปลอดภัย เพื่อป้องกันการ Hack เข้ามาของผู้ไม่ประสงค์ดี
ปรกติ Device จะส่ง packet และจะนับลำดับเรียงไปเรื่อยๆ หาก Network Server เช็คดูแล้วลำดับไม่ได้เพิ่มขึ้น แสดงว่าไม่ได้มาจาก Device ที่ส่งอยู่ อาจจะเป็น Device แปลกปลอมที่ใช้ Key เหมือนกัน Package นั้นก็จะถูก Drop off ไป ไม่นำมาแสดง
ปัญหามันจะเกิด ถ้า เรา Reset Device ABP แต่เปิด Frame Counter ให้ทำงาน เมื่อ Reset Device โปรแกรมที่ Device จะเริ่มนับ 1 ใหม่ แต่ Network Server อาจรอ Packet เลขอื่นอยู่ เมื่อเจอ เลขต่ำกว่า ก็จะไม่นำ Packet นั้นมาแสดง
วิธีแก้คือ ปิด Fame Counter ถ้าเรา Reset Device ABP บ่อยๆ
เราสามาถ SSH เข้า Dragino LPS8N ได้ ที่ IP:2222 ใช้ root/dragino
แล้วใช้คำสั่ง Linux ได้บางคำสั่งเนื่องจากเป็น OpenWRT
เช่น คำสั่งที่ใช้ได้คือ ping, traceroute เป็นต้น