โปรโตคอล MQTT เหมาะสมสำหรับการส่งสัญญาณการอ่านค่าเซ็นเซอร์ผ่าน BLE หรือไม่?


12

สมมติว่ามีเซ็นเซอร์อ่อนแอจำนวนมาก (เช่นอุปกรณ์ระดับ Arduino) ซึ่งใช้ BLE เป็นเครื่องมือในการสื่อสารและอุปกรณ์เหล่านี้เชื่อมต่อกับเกตเวย์ที่ทรงพลังกว่า (เช่นอุปกรณ์ Raspberry pi)

ฉันต้องการทราบว่า MQTT ถือเป็นโปรโตคอลที่เหมาะสมสำหรับการส่งสัญญาณการอ่านของพวกเขาหรือไม่

บล็อก / เอกสารจำนวนหนึ่งพิจารณาว่า MQTT เหมาะสมสำหรับ "แอปพลิเคชัน IoT" เนื่องจากมีน้ำหนักเบาเมื่อเทียบกับ HTTP และประหยัดพลังงาน อย่างไรก็ตามเพื่อความเข้าใจของฉันมันต้องมีการเชื่อมต่อจะถูกเปิดไว้ซึ่งไม่ใช่กรณีที่มี BLE หรือโปรโตคอลการสื่อสารอื่น ๆ ที่เหมาะสมสำหรับ IoT BLE ไม่คงการเชื่อมต่อไว้เป็นเวลานานเพื่อสงวนพลังงาน เห็นได้ชัดว่า MQTT เหมาะสมเมื่อมีการใช้โปรโตคอลเลเยอร์ MAC เช่น WiFi สิ่งนี้เกือบจะทำลายเหตุผลเบื้องหลังการใช้ MQTT ในตอนแรก (เช่นถ้าอุปกรณ์ที่ใช้จัดการโปรโตคอลเช่น WiFi นั้นอาจไม่จำเป็นต้องใช้โปรโตคอลเช่น MQTT) คุณเห็นข้อบกพร่องในตรรกะนี้หรือไม่?

มีโปรโตคอลชั้นแอปพลิเคชันอื่น ๆ สำหรับจุดประสงค์นั้นหรือไม่? โครงสร้างที่เห็นบ่อยที่สุดของข้อความประเภทนี้คืออะไร (เช่นข้อมูลไบนารีดิบ, JSON, XML) เมื่อพวกเขาสื่อสารกับเกตเวย์และเมื่อพวกเขาสื่อสารกับเซิร์ฟเวอร์โดยตรง?


กลไก BLE ดั้งเดิมไม่เหมาะสมไม่ว่าด้วยเหตุผลใดก็ตาม
Sean Houlihane

คำถามของฌอนอาจแบ่งออกเป็นสองส่วนได้ดีที่สุด - ก) กลไกโปรโตคอล BLE แบบเนทีฟสามารถใช้งานได้สำหรับลิงก์ทันทีจากอุปกรณ์และ B) ข้อมูลใดที่จำเป็นต้องใช้ในท้ายที่สุด หากคำตอบของส่วน B นั้นอยู่นอกเหนือขอบเขตของ BLE แล้วจำเป็นต้องใช้บริดจ์ (อย่างน้อยระหว่างรูปแบบวิทยุ แต่อาจจำเป็นต้องใช้โปรโตคอลเช่นกัน)
Chris Stratton

เกตเวย์ใช้การอ่านแบบ raw หรือถ่ายทอดไปเรื่อย ๆ และในบริบทนั้นสามารถทำให้ช่องสัญญาณ MQTT แบบ end-to-end แทนที่จะเป็นบริดจ์ BLE แบบดั้งเดิมเป็น MQTT ที่เกตเวย์หรือไม่
Sean Houlihane

คำตอบ:


14

MQTT ต้องเรียกใช้ผ่าน TCP / IP (ฉันจำไม่ได้ว่ามันอยู่ในสเป็คจริงหรือถ้ามีการตั้งสมมติฐานให้เพียงพอ) แต่โปรโตคอลน้องสาวMQTT-SNนั้นสามารถทำงานได้เกือบทุกโปรโตคอลที่สามารถส่งผ่านข้อมูลได้ ฉันเห็นการใช้งานใน UDP และอนุกรม

ต้องบอกว่าฉันไม่แน่ใจว่าสิ่งที่คุณได้รับจากการทำงานอย่างใดอย่างหนึ่งมากกว่า BLE คุณลักษณะที่สร้างขึ้นใน BLE ให้ประโยชน์เหมือนกันมาก (ถ้าเป็นแบบ 1 ต่อ 1) พร้อมสิ่งต่าง ๆ เช่นการแจ้งเตือน

ฉันคิดว่าหนึ่งในสิ่งสำคัญที่ต้องจำคือสิ่งที่ "ฉัน" หมายถึงใน IoT มันหมายถึงการเข้าถึงอินเทอร์เน็ตในบางจุด (แม้ว่าจะเป็นอุปกรณ์เกตเวย์หรือโทรศัพท์) ณ จุดนั้น MQTT จะมีประโยชน์มาก แต่ก็ไม่ได้แปลว่าไปจนถึงขอบ (ตกเลือด)


ก่อนอื่นขอขอบคุณที่แจ้งให้เราทราบเกี่ยวกับการมีอยู่ของ MQTT-SN วรรณกรรมส่วนใหญ่ค่อนข้างเข้าใจผิดเพราะมันหมายถึงว่า MQTT ให้อำนาจอุปกรณ์ขอบส่วนใหญ่เนื่องจากคุณสมบัติการประหยัดพลังงาน ในกรณีนั้นการใช้พลังงานที่ลดลงนั้นไม่ใช่ข้อโต้แย้งที่แท้จริงเพราะในอุปกรณ์ที่มีโปรไฟล์นั้นมันก็ไม่สำคัญ อุปกรณ์ควรใช้ IP สแต็คเต็มรูปแบบและเนื่องจาก MQTT รักษาการเชื่อมต่อแบบเปิดโปรโตคอลเลเยอร์ MAC ที่ประหยัดพลังงานจึงไม่ใช่ตัวเลือก
dr.doom

1
MQTT ไม่ประหยัดพลังงานเมื่อเปรียบเทียบกับสิ่งที่ชอบ HTTP เนื่องจากการเชื่อมต่อ TCP แบบเปิดไม่ได้ใช้พลังงานมากพอที่จะเปิดเมื่อคุณใช้สแต็ก TCP แล้วและแพ็คเก็ตที่ยังมีชีวิตอยู่นั้นมีขนาดเล็กมาก ค่าโสหุ้ยโปรโตคอลนั้นต่ำกว่า HTTP มากเนื่องจากส่วนหัว HTTP นั้นมีขนาดใหญ่มากเมื่อเทียบกับส่วนหัวของแพ็กเก็ต MQTT วรรณคดีการคำนวณจำนวนมากใช้อุปกรณ์มือถือเช่นโทรศัพท์
hardillb

นอกจากนี้ขอบได้ถูกย้ายมันเคยเป็นที่ TCP / IP หยุดสิ่งต่าง ๆ เช่น ZigBee (โดยเฉพาะกับ lpwan) และแม้แต่โปรเซสเซอร์พลังงานที่ต่ำกว่าได้ย้ายไปยังอุปกรณ์ที่บางลง
hardillb

มันชัดเจนไม่เพียง TCP / IP; ข้อกำหนดเพียงอย่างเดียวคือโปรโตคอลจะต้องมีการเชื่อมต่อแบบ "สั่งแบบไม่สูญเสียทิศทาง" มันเป็นนามธรรมของเอกสารสองย่อหน้า SN มีอยู่เนื่องจากข้อกำหนดนั้นเป็นเรื่องยากสำหรับระบบขนาดเล็กโดยเฉพาะอย่างยิ่งสัญญาณวิทยุ อาจเป็นสิ่งที่คุณหมายถึงโดย "มีการตั้งสมมติฐานมากพอที่จะทำให้เป็นเช่นนั้น" แต่แน่นอนที่สุดไม่ได้พึ่งพา TCP / IP
Dave Newton

9

เนื้อหาคุณจะดีกว่าในการทำแผนที่ข้อมูลจากกระบวนทัศน์ BLE ไปยัง MQTT แทนที่จะพยายามส่ง MQTT ผ่าน BLE อย่างแท้จริง

BLE ทั่วไปข้อมูลการแลกเปลี่ยนในรูปแบบของลักษณะ สิ่งเหล่านี้มีกลไกที่ไม่เหมือนใครของ BLE สำหรับการค้นพบการเปลี่ยนแปลงมูลค่าที่คุณอาจพบว่ามีประโยชน์ แต่พวกเขามีความยาวของข้อมูลสูงสุด 20 ไบต์

เป็นไปได้ที่จะสตรีมข้อมูลอนุกรมผ่าน BLE ซึ่งสามารถย้ายได้ครั้งละ 20 ไบต์ บางครั้งจะทำเพื่อใช้พอร์ตอนุกรมเสมือนและคุณสามารถใช้ช่องสัญญาณ MQTT แบบเต็มได้

แต่คุณน่าจะใช้คอลเล็กชั่น BLE เพื่อส่งข้อมูลของหัวข้อต่าง ๆ และมีบริดจ์ที่แมปข้อมูลลักษณะเฉพาะกับหัวข้อ MQTT และแมปค่ากับส่วนของข้อมูล MQTT

BLE มีความรู้สึกของตัวเองในการเชื่อมต่ออย่างต่อเนื่องกับสิ่งที่ไม่ได้เชื่อมต่อ คุณควรทราบว่าการใช้ BLE ใดที่ดีที่สุดสำหรับแอปพลิเคชันของคุณจากนั้นแมปสิ่งนี้กับความรู้สึก MQTT ในการรักษาการเชื่อมต่อ

คุณควรทำสิ่งนี้ได้ทั้งสองทิศทาง: BLE-> MQTT และ MQTT-> BLE


5
หากคุณต้องการสะพาน MQTT 2 BLE คุณสามารถดูเหมืองgithub.com/hardillb/mqtt2ble
hardillb

ขอบคุณสำหรับลิงค์นั้นฉันกำลังดูอยู่ตอนนี้
dr.doom
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.