ฉันเริ่มรีวิวเกตเวย์ ESP32 BLE <-> MQTT (GL.inet GL-S10) ในเดือนธันวาคมโดยแกะกล่องและแยกส่วนประกอบของเกตเวย์ ESP32 และอุปกรณ์เสริม BLE beacon ตอนนี้ฉันได้เล่นกับอุปกรณ์และแอพพลิเคชั่นและซอฟต์แวร์ที่แนะนำ และใช้เวลานานกว่าที่คาดไว้ เนื่องจากฉันพบปัญหาหลายอย่างในระหว่างการทดสอบ ซึ่งส่วนใหญ่ควรได้รับการแก้ไขด้วยเฟิร์มแวร์ใหม่และเอกสารจะได้รับการอัปเดตอีกไม่นาน
ฉันทำตามขั้นตอนจากคู่มือผู้ใช้โดยละเอียด ฉันเริ่มจากติดตั้ง GL-S10 Tool App สำหรับ Android จากนั้นเปิดเครื่องเกตเวย์ แล้วกดปุ่มเพื่อเข้าสู่โหมดการจับคู่อุปกณ์ และในไม่นานก็พบเกตเวย์
โปรดทราบว่าคุณไม่ควรแชร์ที่อยู่ MAC ของอุปกรณ์ของคุณเนื่องจากไม่มีการป้องกันความปลอดภัยตามค่าเริ่มต้น และทุกคนจะสามารถเข้าถึงข้อมูลด้วยเครื่องมือที่เราจะใช้ด้านล่าง
คุณจะสามารถกำหนดการตั้งค่าเครือข่าย เช่น ข้อมูลประจำตัว DHCP/FIxed IP และ WiFi ตลอดจนการตั้งค่าเซิร์ฟเวอร์ MQTT และกำหนเขตเวลา ฉันสามารถเชื่อมต่อกับจุดเชื่อมต่อ WiFi ได้ แต่เพียงช่วงเวลาสั้นๆ เท่านั้น และได้รับข้อความ “Device Disconnected” (ไม่มีการเชื่อมต่อกับอุปกรณ์)
สิ่งนี้จะเกิดขึ้นทุกครั้งในขณะที่ฉันเข้าสู่โหมดการจับคู่เพื่อกำหนดค่าในแอป และเข้าได้แค่ระยะเวลาไม่ถึง 1 นาที ฉันจึงพยายามรีเซ็ตเกตเวย์เป็นการตั้งค่าจากโรงงานโดยกดปุ่มเป็นเวลา 10 วินาที และแม้กระทั่งล้างข้อมูลและถอนการติดตั้งแอปในโทรศัพท์เพื่อลองอีกครั้ง แต่ฉันมีปัญหาเดียวกัน หลังจากติดต่อบริษัทและแชร์ข้อมูล พวกเขาพบว่าฮาร์ดแวร์อาจมีข้อบกพร่องและจะส่งอุปกรณ์ให้ใหม่
โปรดทราบว่าฉันใช้ฮอตสปอต “โมเด็ม 4G LTE WiFi” เพื่อติดตั้งซิมการ์ดที่มีบริการข้อมูล 10 Mbps และเมื่อกลับบ้านฉันใช้อินเทอร์เน็ตบรอดแบนด์ ฉันได้ทดสอบอีกครั้งโดยใช้เกตเวย์ GL-S10 “เก่า” แล้วปัญหาก็หายไป… การเชื่อมต่อเกตเวย์กับเราเตอร์ของฉันก็ไม่มีปัญหา
นั่นเป็นเพราะเราเตอร์ WiFi ของที่กำหนดค่าด้วยวิธีการเข้ารหัส “WPA WPA2-PSK” เราเตอร์นั้นจะแสดงเป็นสีเทาเพราะ GL-S10 ไม่รองรับ การเปลี่ยนการตั้งค่าในเราเตอร์ WiFi เป็นทางออกเดียว แม้แต่เฟิร์มแวร์ล่าสุด (v2.3.1) เมื่อสิ่งนี้ได้รับการแก้ไข ฉันมีการเชื่อมต่อที่เสถียรแล้ว
ขั้นตอนต่อไปคือการติดตั้ง MQTT X MQTT 5.0 ไคลเอ็นต์เดสก์ท็อปแบบโอเพ่นซอร์ส สำหรับระบบปฏิบัติการ Windows, Mac OS และ Linux ฉันติดตั้งบนโน๊ตบุ๊ค Ubuntu 20.04 ได้อย่างรวดเร็ว:
1 |
sudo snap install mqttx |
มาสร้างการเชื่อมต่อใหม่กับ Beta Test Server (เป็นเซิร์ฟเวอร์ที่ไว้ใช้ทดสอบระบบต่างๆก่อนนำเข้าสู่เซิร์ฟเวอร์หลัก) ของ GL.inet ที่ “iot-s10-test.gl-inet.cn” บนพอร์ต 1884
แอป Android ทดสอบบนเซิร์ฟเวอร์เดียวกัน แต่ใช้ที่อยู่ IP (134.175.4.252) แทน URL
การกำหนดค่า MQTT ด้านบนยังรวมถึงคำสั่งของหัวข้อและสตริงตอบกลับสำหรับเกตเวย์ รายงานการกำหนดค่าจากอุปกรณ์ BLE ที่มี RSSI threshold และกฎตัวกรอง (filter rules) เพื่อส่งข้อมูลที่เกี่ยวข้องเท่านั้น หากไม่มีการเลือกตัวกรองข้อมูลเกี่ยวกับอุปกรณ์ BLE อื่น ๆ จะถูกส่งไปเช่นเดียวกับที่เราจะเห็นด้านล่าง
กลับไปที่ MQTT X ฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์ GL.inet MQTT ได้อย่างง่ายดาย…
และสมัครสมาชิกใหม่กับ GL-IoT/rspTopic/<GL-S10 MAC> เพื่อรับการตอบสนองต่อคำสั่ง MQTT ที่ฉันส่ง
เมื่อส่งคำสั่งโดยใช้ GL-IoT/comTopic/<GL-S10 MAC> ด้วยข้อมูล JSON ที่จัดรูปแบบอย่างเหมาะสม ฉันไม่ได้รับคำตอบเหมือนว่าเกตเวย์ออฟไลน์อยู่
แต่สิ่งที่เกิดขึ้นคือที่อยู่ IP ของเวอร์ชันทดสอบเปลี่ยนไป:
1 2 3 |
ping iot-s10-test.gl-inet.cn PING iot-s10-test.gl-inet.cn (167.172.193.67) 56(84) bytes of data. 64 bytes from 167.172.193.67 (167.172.193.67): icmp_seq=1 ttl=47 time=362 ms |
หลังจากเปลี่ยนการตั้งค่าในแอพ android ด้วยที่อยู่ IP ใหม่…
ฉันยังไม่สามารถได้รับคำตอบจากคำสั่งหัวข้อได้ แต่หลังจากสมัคร GL-IoT/dataTopic/<GL-S10 Mac> ฉันได้รับข้อมูลจาก BLE beacon ทุกวินาทีตามที่กำหนดค่า
ในที่สุดก็บอกว่าไม่มีเฟิร์มแวร์ล่าสุดและถูกขอให้อัพเกรดเป็น http://iot-s10-test.gl-inet.cn/s10/ota/gl_s10_v2.3.1.bin ซึ่งต้องพิมพ์ด้วยตนเองในแอพก่อนที่จะดำเนินการอัปเดต
บริษัทคิดว่าฟังก์ชันอัปเกรดออนไลน์ยังใช้ไม่ได้ดี แต่เพื่อให้ผู้ใช้อัปเกรดเฟิร์มแวร์ของตนเอง (เนื่องจากสามารถสร้างได้เอง ) และพวกเขาวางแผนที่จะปรับปรุงขั้นตอนการอัปเกรดในเวอร์ชันต่อๆ ไป แม้ว่าจะต้องใช้เวลากว่าจะใช้งานได้ แต่ GL.inet ก็ให้ความช่วยเหลือและตอบคำถามของฉันได้ดี
ตอนนี้ที่ทุกอย่างใช้งานได้ แสดงว่ามันใช้ได้ผล GL-S10 Config API แสดงรายการคำสั่งที่อนุญาตให้ผู้ใช้ทำทุกอย่างที่สามารถทำได้ในแอปพลิเคชันมือถือที่ใช้ MQTT แบบไคลเอนต์ ด้วยคำสั่งรูปแบบ JSON ไปที่คำสั่งเพื่อกำหนดค่า WiFi และเรียกข้อมูลรับรอง WiFi เนื่องจากเป็นคำสั่งสองคำสั่งแรก
หลังจากสร้างการสมัครสมาชิกใหม่ด้วย GL-IoT/rspTopic/<GL-S10 MAC> ให้สร้างคำสั่ง (ดูส่วนด้านล่างขวา) ด้วย GL-IoT/comTopic/<GL-S10 MAC> และข้อมูล JSON ดังต่อไปนี้:
1 2 3 4 5 6 7 8 9 10 |
{ "jsonrpc": "2.0", "method": "SET_WIFI_CONFIG", "params": { "type":0, "ssid": "LPT Maker", "pwd": "password" }, "id": 1 } |
เมื่อ type เท่ากับ 0, SSID, สามารถตั้งค่า PASSWORD เมื่อเท่ากับ 1 SSID, USERNAME, USERPASSWORD สามารถตั้งค่าได้ ssid คือชื่อจุดเชื่อมต่อ p ถึง 32 อักขระ pwd รหัสผ่านสูงสุด 64 อักขระ และ id คือหมายเลขคำสั่ง (0x01) สำหรับ SET_WIFI_CONFIG
หากทุกอย่างใช้งานได้ เราควรได้รับข้อมูล JSON ต่อไปนี้เป็นการตอบกลับ:
1 2 3 4 5 |
{ "jsonrpc": "2.0", "result": 0, "id": 1 } |
0x00 แสดงถึงความสำเร็จในการดำเนินการ และ 0x01 แสดงถึงความล้มเหลวในการดำเนินการ
แต่เราสามารถส่งคำสั่ง GET_WIFI_CONFIG เพื่อตรวจสอบอีกครั้ง:
ทั้งหมดคือดี. ดังที่ได้กล่าวไปแล้ว คุณยังสามารถกำหนดค่า/ตรวจสอบพารามิเตอร์เกตเวย์อื่นๆ ด้วย API เช่น DHCP/Fixed IP, เซิร์ฟเวอร์ MQTT, topic, timer interval (จับเวลา), Bluetooth filter และอื่นๆ
มาเปิด BLE beacon ที่มาพร้อมกับ GL-S10 โดยสมัครสมาชิกใหม่ให้กับ GL-IoT/dataTopic/<GL-S10 MAC> และรับข้อมูลทุกวินาทีหรือทุกช่วงเวลาที่กำหนดค่าในแอปหรือผ่าน MQTT ไคลเอนต์
ข้อมูลมีลักษณะดังนี้:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "dev_wifi_sta_mac": "E8DB841D7388", "dev_ble_mac": "E8DB841D738A", "dev_sn": "32d1e73977ae85e2", "dev_id": "E8d7388", "dev_version": "2.3.1", "dev_list": [ { "mac": "D896E08B7E29", "rssi": -43, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072867391000 }, { "mac": "D896E08B7E29", "rssi": -45, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072867394000 } ], "dev_list_len": 2, "publish_ts": 18446744072867394000 } |
ด้านบนเป็นข้อมูลบางส่วนเกี่ยวกับเกตเวย์ และ dev_list รายงานข้อมูลเกี่ยวกับ BLE beacon รวมถึง MAC, RSSI, ad (ข้อมูลออกอากาศ advData ) และ ts (timestamp) หาก BLE beacon มีชื่อก็จะมีฟิลด์ “n” พร้อมข้อมูลด้วย
ที่นี่เรามีอุปกรณ์ 2 อัน แต่เห็นได้ชัดว่า BLE beacon ของเราส่งข้อความสองข้อความ RSSI อยู่ที่ประมาณ -43 ถึง -45 dBm โดยมี beacon อยู่ห่างจากเกตเวย์ประมาณห้าเซนติเมตร มาดูกันว่าจะเกิดอะไรขึ้นถ้าฉันย้าย BLE beacon ไปจากเกตเวย์ประมาณ 9 เมตร (ระดับสายตา):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "dev_wifi_sta_mac": "E8DB841D7388", "dev_ble_mac": "E8DB841D738A", "dev_sn": "32d1e73977ae85e2", "dev_id": "E8d7388", "dev_version": "2.3.1", "dev_list": [ { "mac": "D896E08B7E29", "rssi": -65, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072867475000 }, { "mac": "D896E08B7E29", "rssi": -65, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072867478000 } ], "dev_list_len": 2, "publish_ts": 18446744072867478000 } |
ความแรงของสัญญาณลดลงอย่างมากเป็น -65 dBm และข้อมูลประเภทนี้สามารถช่วยเราประเมินระยะห่างจากเกตเวย์ภายในห้องได้ เช่นเดียวกับการใช้ beacon หลายตัวแม้แต่ตำแหน่งในอาคาร ฉันทำสิ่งนี้ด้วยการ MAC filter เพื่อแสดงข้อมูลจาก beacon เท่านั้น มาลบการ MAC filter :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
{ "dev_wifi_sta_mac": "E8DB841D7388", "dev_ble_mac": "E8DB841D738A", "dev_sn": "32d1e73977ae85e2", "dev_id": "E8d7388", "dev_version": "2.3.1", "dev_list": [ { "mac": "697E44B45AE0", "rssi": -68, "ad": "0201021107FC9DD0B3CB84E0840642F3F7E2E0BFCB", "ts": 18446744072868538000 }, { "mac": "D896E08B7E29", "rssi": -72, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072868538000 } ], "dev_list_len": 2, "publish_ts": 18446744072868538000 } |
มีอุปกรณ์ใหม่ที่มี “697E44B45AE0” Bluetooth MAC ฉันหาแบรนด์ไม่เจอแต่เมื่อวานฉันสังเกตเห็นอุปกรณ์อื่นที่มี MAC A4E22988ED6F ซึ่งมีลักษณะเป็น “Qingdao Haier Technology Co.,Ltd” อืม.. บ้านนี้มีอุปกรณ์ Haier บ้างไหม? …ใช่, สัปดาห์นี้ฉันติดตั้งเครื่องปรับอากาศในห้องนอน และแน่นอนว่ามีจุดเชื่อมต่อ WiFi แบบเปิดสำหรับเครื่องปรับอากาศด้วย แอร์ของฉันกำลังส่งข้อความ BLE…
เกตเวย์สามารถใช้เป็นอุปกรณ์ติดตาม (แฟนของฉันที่บ้านหรือไม่) … เนื่องจากสามารถติดตาม Amazfit Bip Watch ของเธอได้:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
{ "dev_wifi_sta_mac": "E8DB841D7388", "dev_ble_mac": "E8DB841D738A", "dev_sn": "32d1e73977ae85e2", "dev_id": "E8d7388", "dev_version": "2.3.1", "dev_list": [ { "mac": "EB5B4CBA55EE", "rssi": -81, "n": "Amazfit Bip Watch", "ad": "0201061BFF5701006E74DCD42A214DE1A8988A3FFA043C9E03EB5B4CBA55EE1209416D617A666974204269702057617463680302E0FE", "ts": 18446744072869593000 }, { "mac": "D896E08B7E29", "rssi": -70, "ad": "0201061AFF4C0002151732050807568877293527446341505900014B07C51816C0DE0200014B070400000000000000000000000022F70C", "ts": 18446744072869593000 } ], "dev_list_len": 2, "publish_ts": 18446744072869595000 } |
ซึ่งจะต้องมีการทดสอบความปลอดภัยที่ดีขึ้นอย่างเห็นได้ชัดด้วยชื่อผู้ใช้ รหัสผ่าน และการเชื่อมต่อ SSL/TLS แต่ฉันหมดเวลาสำหรับการทดสอบแล้ว
ฉันขอขอบคุณ GL.inet ที่ส่ง GL-S10 เกตเวย์ BLE <-> MQTT เพื่อทดสอบ คุณสามารถซื้อพร้อมกับ beaconได้ในราคา $29.90 (~970฿) ที่ร้านค้าGL.Inet
แปลจากบทความภาษาอังกฤษ : Review of GL.inet GL-S1ทด0 BLE to MQTT gateway with MQTT X open-source client
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT