เมื่อใดและทำไมต้องใช้โปรโตคอล MQTT


34

ฉันกำลังพัฒนาอุปกรณ์ที่ใช้วัดอุณหภูมิความชื้นและมวล ปัจจุบันใช้ HTTPS เพื่ออัปโหลดข้อมูลไปยังเซิร์ฟเวอร์ระยะไกล ตอนนี้ฉันรู้แล้วว่ามีโปรโตคอลที่เรียกว่าMQTTซึ่งอ้างว่าเป็น "โปรโตคอลของ Internet of Things"

ในกรณีใดและทำไมฉันจึงควรเปลี่ยนจาก HTTPS เป็น MQTT

คำตอบ:


32

MQTT เป็น "ผู้ส่งสาร" ระหว่างอุปกรณ์:

  • อุปกรณ์ของคุณวัดได้ในเวลาที่อุณหภูมิ X องศา
  • มันเชื่อมต่อ (ตัวเองหรือผ่านฮับ zwave) กับนายหน้า MQTT
  • มันสร้างข้อความด้วยหัวข้อ /domotics/myplace/mydevice/temperature
  • ภายในข้อความที่เพิ่งใส่X(เป็น "payload")

ที่อื่นในบ้านของคุณ:

  • Raspberry Pi ของคุณเชื่อมต่อกับโบรกเกอร์ MQTT (สามารถเป็นอินสแตนซ์ MQTT ได้)
  • มันสมัครสมาชิกเพื่อ/domotics/+/+/temperatureรับข้อมูลอุณหภูมิทั้งหมดจากอุปกรณ์ทั้งหมดที่ใช้รูปแบบหัวข้อนี้ ดูข้อมูลจำเพาะ MQTTสำหรับข้อมูลเพิ่มเติมเกี่ยวกับสัญลักษณ์แทนหัวข้อ MQTT ( +และ#)
  • มันจะได้รับข้อความพร้อมเพย์โหลดXและทำสิ่งที่ต้องการ!

ที่อื่นในบ้านของคุณ:

  • คอมพิวเตอร์ของคุณเชื่อมต่อกับโบรกเกอร์ MQTT และสมัครสมาชิก/domotics/myplace/mydevice/#เพื่อรับข้อมูลทั้งหมดจากอุปกรณ์ของคุณและบันทึก
  • มันจะได้รับข้อความพร้อมเพย์โหลดXและทำสิ่งที่ต้องการ!

MQTT มีประโยชน์มากในการหลีกเลี่ยงการวางบริการเว็บและซ็อกเก็ตทั่วเซิร์ฟเวอร์ของคุณ Node-RED ใช้ MQTT และ Domoticz สามารถกำหนดค่าเพื่อรับinและตั้งค่าoutสัญญาณ

ฉันใช้ MQTT เป็นการส่วนตัวที่บ้านเพื่อปิดคอมพิวเตอร์: ส่วนของ/house/computers/mycomputerข้อมูล:0


จุดที่ดีที่ฉันไม่ต้องรำคาญกับซ็อกเก็ตและบริการเว็บอื่น ๆ
Bence Kaulics

คุณสามารถแสดงความคิดเห็นในด้านความปลอดภัยได้หรือไม่? การจราจรเป็นข้อความธรรมดาหรือไม่
Mawg

1
คำตอบก็คือ MQTT รองรับ TLS; iot.stackexchange.com/a/69/39
Goufalite

20

MQ Telemetry Transport Protocolเป็นที่รู้จักกันในนามMQTTออกแบบมาสำหรับอุปกรณ์ที่ใช้พลังงานต่ำและแบนด์วิดธ์ต่ำ มันเป็นโปรโตคอลการส่งข้อความเผยแพร่ / สมัครสมาชิกที่มีน้ำหนักเบาซึ่งหมายความว่าอุปกรณ์อื่น ๆ สามารถสมัครสมาชิกหัวข้อใดหัวข้อหนึ่ง

HTTP / HTTPSถูกออกแบบมาเป็นโปรโตคอลตอบสนองคำขอสำหรับการประมวลผลไคลเอนต์ - เซิร์ฟเวอร์ซึ่งไม่เคยกังวลเกี่ยวกับการใช้พลังงานและมีข้อมูลจำนวนมาก

ใช้ MQTT หาก:

  • อุปกรณ์ที่คุณใช้กำลังทำงานบนเซลล์แบตเตอรี่และคุณไม่ต้องการแทนที่มันทุก ๆ วันที่จำนวน x (MQTT เหมาะสำหรับการใช้งานแบตเตอรี่ในขณะที่ HTTP / S ไม่ได้เป็น)
  • ต้องการการตอบสนองที่เร็วขึ้น
  • จำเป็นต้องมีกลไก pub / sub (ถ้าคุณต้องการส่งข้อความไปยังไคลเอนต์จำนวนมาก)
  • จำเป็นต้องส่งข้อมูลอย่างน่าเชื่อถือด้วยระดับ QoS ที่แตกต่างกัน

MQTT มีความปลอดภัยมากเท่ากับ HTTPS หรือไม่

MQTT อาศัย TCP เป็นโปรโตคอลการขนส่งซึ่งหมายความว่าโดยค่าเริ่มต้นการเชื่อมต่อไม่ได้ใช้การสื่อสารที่เข้ารหัส ในการเข้ารหัสการสื่อสาร MQTT ทั้งหมดโบรกเกอร์ MQTT ส่วนใหญ่เช่น HiveMQ อนุญาตให้ใช้ TLS แทน TCP ธรรมดา

Ref: HiveMQ


1
MQTT มีความปลอดภัยมากเท่ากับ HTTPS หรือไม่
Bence Kaulics

2
สามารถใช้ SSL / TLS ได้ดังนั้นควรปลอดภัยเท่ากับ HTTPS
Ghanima

1
ตรงตามที่ @Ghanima กล่าวว่าฉันได้อัปเดตคำตอบพร้อมบทความอ้างอิงเพื่อตรวจสอบว่าการเจรจาเกี่ยวกับการรักษาความปลอดภัย MQTT ใด
bravokeyl

11

MQTT (Message Queue Telemetry Transport) น่าจะเหมาะสำหรับการสมัครที่เสนอ

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

MQTT ยังนำเสนอวิธีการง่ายๆ ( คำกริยา ) ที่เหมาะกับงาน IoT ได้ดีเช่นการสมัครสมาชิกถาวรที่กู้คืนการเชื่อมต่อหลังจากการยกเลิกการเชื่อมต่อลูกค้าที่ไม่คาดคิด เมื่อเปรียบเทียบกับ HTTP / HTTPS มันยังง่ายกว่าในการดึงข้อมูลจากแพ็คเกจ (ไม่จำเป็นต้องใช้โปรแกรมแยกวิเคราะห์)


5

ที่นี่ฉันเขียนบทความที่แสดงและวิวัฒนาการในระบบการสื่อสารที่เรามีในโครงการของเรา มันเกี่ยวกับบริการไมโคร แต่คุณสามารถพิจารณาเซ็นเซอร์ใด ๆ ที่จะเป็นบริการไมโครกับงานในการรวบรวมและเผยแพร่ข้อมูล telemetry ใด ๆ

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

จากทราฟฟิก, ซีพียู, หน่วยความจำและมุมมองการใช้พลังงาน MQTT และ HTTP นั้นเหมือนกัน


2

การอ้างอิง MQTT ของคุณคือ "โปรโตคอลของ Internet of Things":

ใช่มีนักพัฒนาจำนวนมากที่ใช้โปรโตคอลนี้ (ดู IoT Developer Survey 2018) แต่CoAP (เป็น HTTP ที่ปรับสำหรับ IoT ตาม UDP) เป็นทางเลือกสำหรับ HTTP ในกรณีที่คุณต้องการใช้ฟังก์ชั่น Request / Response ที่มีน้ำหนักเบาภายใน ใบสมัครของคุณ.

MQTTในทางกลับกันให้ตรรกะ Publish / สมัครสมาชิกในตัวซึ่งทำให้มันยอดเยี่ยมสำหรับการปรับขนาด (คุณสามารถใช้เกตเวย์เพิ่มเติมสำหรับอุปกรณ์จำนวนมากขึ้น) นอกจากนี้ยังมีตัวเลือก UDP (เช่น CoAP to HTTP) ที่เรียกว่าMQTT-SN (MQTT สำหรับเครือข่ายเซ็นเซอร์) สิ่งนี้จะให้ค่าใช้จ่ายที่น้อยกว่า CoAP แต่ไม่ได้ใช้ประโยชน์จาก R / R

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