ฉันต้องใช้ MQTT หรือ HTTP หรือไม่


9

ฉันกำลังทำงานกับอุปกรณ์ที่รับรู้และรวบรวมข้อมูลจากสภาพแวดล้อมเช่นอุณหภูมิความชื้น ฯลฯ

อุปกรณ์ไม่ได้เชื่อมต่อกับแหล่งพลังงานใด ๆ แต่มีแบตเตอรี่และแผงพลังงานแสงอาทิตย์เพื่อชาร์จ

เกือบจะอยู่ในสถานะหลับสนิทเกือบตลอดเวลาและจะตื่นขึ้นเมื่อจำเป็นต้องรับรู้และถ่ายโอนข้อมูลเท่านั้น การดำเนินการนี้ใช้เวลาประมาณ 1-2 นาทีและจากนั้นจะเข้าสู่โหมดสลีอีกครั้ง

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

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


1
มันคล้ายกัน แต่จุดของฉันคือการเข้าใจว่าฉันต้องใช้ MQTT ในสถานการณ์ของฉันหรือไม่: เมื่ออุปกรณ์ของฉันจะอยู่ในระยะลึก 99% ของเวลาและเพิ่งตื่นขึ้นมาสำหรับการส่งการอ่าน
zephrax

1
ฉันจะไม่แนะนำ ขั้นแรกเขียนข้อกำหนดของคุณและใช้โปรโตคอลที่ง่ายที่สุด คงไม่มีเหตุผลที่จะใช้ Ferrari Engine ในเครื่องตัดหญ้าเพื่อตัดหญ้า อย่าจมดิ่งอยู่ในความฉวัดเฉวียนของสิ่งต่าง ๆ - เพียงแค่ทำการวิจัยพื้นฐานของคุณและนำสิ่งที่ดีที่สุดมาใช้
Xofo

คงจะดีหากได้รับความต้องการในหัวข้อคำถามโดยทั่วไปคุณถามถึงค่าเซ็นเซอร์ขนาดเล็กและไม่บ่อยนัก
Sean Houlihane

@ Xofo ฉันสนใจที่จะเห็นคำตอบในนั้นและทำไมคุณถึงแนะนำให้ใช้โปรโตคอลที่กำหนดเอง มันคุ้มค่ากับความพยายามเพิ่มเติมของ 'การกลิ้งของคุณเอง' รวมถึงปัญหาด้านความปลอดภัย ฯลฯ หรือไม่
Aurora0001

ไม่ใช่โปรโตคอลที่กำหนดเอง ... ฉันพูดก่อนกำหนดข้อกำหนด โพรโทคอลบางตัวที่กำหนดมักจะหนักเกินไป
Xofo

คำตอบ:


8

หากคุณกำลังเก็บข้อมูลเพียงติดกับ HTTP HTTP เป็นเพียงสัญญาณเดียว

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


1
นอกจากนี้ยังมีการแบ่งระหว่างปริมาณข้อมูลขนาดใหญ่ (http) และขนาดเล็ก (mqtt) ในครั้งเดียวและ mqtt มีความน่าเชื่อถือมากขึ้นในสภาพสัญญาณไม่ดี
แฟลช

1
เซิร์ฟเวอร์รับข้อมูลจากเซ็นเซอร์เท่านั้น จุดโพสต์ของฉันคือฉันไม่แน่ใจว่าเหมาะสมหรือไม่ที่จะใช้ MQTT เพราะอุปกรณ์จะ 99% ของเวลาในสถานะหลับลึก (รถบัสโมเด็มเซ็นเซอร์ทั้งหมดถูกปิด) และมันเท่านั้น ตื่นขึ้นมาเพื่ออ่านเซ็นเซอร์และส่งข้อมูล
zephrax

หากคุณเก็บข้อมูลของคุณไว้ที่นี่หมายความว่าคุณมีฐานข้อมูลและวิธีการแบ็กเอนด์เพื่อสอบถามข้อมูล (เซิร์ฟเวอร์ apache, บรรทัดคำสั่ง SQL, ... ) หากคุณวาง MQTT ไว้ด้านบนคุณจะมีอินสแตนซ์และพอร์ตอื่นที่จะจัดการ
Goufalite

1
ฉันเห็นด้วยกับคำตอบนี้ หากคุณไม่ต้องการการสื่อสารสองทางและอุปกรณ์นั้นใช้เวลาส่วนใหญ่ HTTP เป็นตัวเลือกโปรโตคอลที่ง่ายและเหมาะสม
TheMagicCow

8

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

ดังนั้นคุณอาจต้องการพิจารณาCoAP , Co nstrained A pplication P rotocol ซึ่งออกแบบมาโดยเฉพาะสำหรับอุปกรณ์ที่ถูก จำกัด ใน Internet of Things

ในกระดาษการเปรียบเทียบต้นทุนที่มีประสิทธิภาพของ CoAP และ HTTP ในแอปพลิเคชัน Web of Thingsคุณสามารถพบหลักฐานที่น่าสนใจที่ CoAP อาจช่วยให้คุณประหยัดพลังงานได้ที่นี่ ในภาคผนวก A (หน้า 38) คุณสามารถดูอายุการใช้งานแบตเตอรี่ที่คาดหวังของอุปกรณ์ในตาราง A.4 สำหรับช่วงเวลา 120 วินาทีตามที่คุณคาดหวังในกรณีการใช้งานของคุณ:

t bat (HTTP), วัน - 2013

t bat (CoAP) วัน - 11013

การคำนวณเหล่านั้นใช้แบตเตอรี่ถ่าน AA สังกะสีคู่หนึ่ง แต่คุณสามารถเห็นได้อย่างชัดเจนว่า CoAP ใช้พลังงานน้อยกว่ามากดังนั้นจึงควรพิจารณาด้วย 'โหมดการผลักดัน' ตามที่อธิบายไว้ในกระดาษดูเหมือนว่าเป็นสิ่งที่คุณวางแผนจะทำ

แม้ว่าคุณจะไม่ได้ถาม CoAP เป็นพิเศษ แต่ฉันคิดว่ามันคุ้มค่าที่จะกล่าวถึงเนื่องจาก Goufalite ได้ครอบคลุมความแตกต่างที่สำคัญระหว่าง MQTT และ HTTP แล้ว กฎง่ายๆคือคุณวางแผนที่จะสื่อสารแบบตัวต่อตัวหรือตัวต่อตัวหรือไม่? ถ้าเป็นอดีต HTTP และ CoAP ดูเหมือนจะเหมาะกว่า ถ้าเป็นรุ่นหลัง MQTT น่าจะสะดวกกว่า

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