เมื่อคุณพูดถึง เชื่อมต่ออุปกรณ์ IoT นับล้านเครื่อง สำหรับการสื่อสารที่เชื่อถือได้ น้ำหนักเบา และปลอดภัย ชื่อที่มักถูกกล่าวถึงเสมอคือ MQTT โปรโตคอลนี้ได้กลายเป็นส่วนประกอบสำคัญสำหรับเซ็นเซอร์ เกตเวย์อุตสาหกรรม อุปกรณ์สมาร์ทโฮม และแพลตฟอร์มคลาวด์ในการสื่อสารโดยไม่ทำให้เครือข่ายโอเวอร์โหลดหรือสิ้นเปลืองพลังงานมากเกินไป
นี่ไม่ใช่แค่ "อีกหนึ่งระเบียบปฏิบัติ" เท่านั้น MQTT เหมาะสมอย่างยิ่งกับความต้องการที่แท้จริงของอินเทอร์เน็ตของสรรพสิ่ง (IoT)เครือข่ายที่ไม่เสถียร แบนด์วิดท์ต่ำมาก ฮาร์ดแวร์ที่จำกัด สภาพแวดล้อมทางอุตสาหกรรมที่ต้องการประสิทธิภาพสูง หรือแอปพลิเคชันที่ทำงานแบบเรียลไทม์ เช่น โรงงานไซเบอร์ ระบบวัดพลังงาน หรือระบบบ้านอัจฉริยะขั้นสูง มาดูกันอย่างละเอียดว่ามันทำงานอย่างไร บทบาทของมันในการเชื่อมต่อ IoT คืออะไร เกตเวย์ MQTT คืออะไร และในกรณีใดบ้างที่การใช้งานเกตเวย์ MQTT เหมาะสมกว่าตัวเลือกอื่นๆ
MQTT คืออะไร และเหตุใดจึงได้รับความนิยมอย่างมากใน IoT?
MQTT (Message Queuing Telemetry Transport) คือระบบหนึ่ง โปรโตคอลการส่งข้อความแบบมาตรฐานเปิดที่มีน้ำหนักเบา ออกแบบมาโดยเฉพาะสำหรับการสื่อสารระหว่างเครื่องจักร (M2M) และโดยนัยเดียวกันสำหรับอินเทอร์เน็ตของสรรพสิ่ง (IoT) วัตถุประสงค์ของมันชัดเจนมาก คือ เพื่อให้สามารถส่งและรับข้อมูลระหว่างอุปกรณ์ได้ แม้ว่าเครือข่ายจะไม่ดี แบนด์วิดท์จำกัด และอุปกรณ์จะมีหน่วยความจำหรือกำลังประมวลผลน้อยมากก็ตาม
แตกต่างจากโมเดลไคลเอ็นต์-เซิร์ฟเวอร์แบบดั้งเดิม MQTT ใช้ สถาปัตยกรรมการเผยแพร่/การสมัครสมาชิก ระบบนี้อาศัยตัวกลางที่เรียกว่าโบรกเกอร์ อุปกรณ์ต่างๆ ไม่ได้สื่อสารกันโดยตรง แต่จะเผยแพร่ข้อความในหัวข้อเฉพาะและสมัครรับหัวข้อที่สนใจ โบรกเกอร์มีหน้าที่รับข้อความทั้งหมด คัดกรอง และส่งต่อไปยังไคลเอ็นต์ที่เหมาะสม
วิธีการทำงานแบบนี้ทำให้ MQTT เกิดขึ้นได้ มีความยืดหยุ่นและปรับขนาดได้สูงมากแทนที่จะมีการเชื่อมต่อแบบจุดต่อจุดที่จัดการยากหลายร้อยหรือหลายพันจุด ทุกอย่างจะถูกจัดการผ่านตัวกลาง (broker) ซึ่งสามารถจัดการได้ตั้งแต่ไม่กี่อุปกรณ์ไปจนถึงหลายล้านอุปกรณ์ ขึ้นอยู่กับการใช้งานและทรัพยากรที่มีอยู่
คุณสมบัติทางเทคนิคที่สำคัญของ MQTT สำหรับ IoT
โปรโตคอลที่มีน้ำหนักเบาและมีประสิทธิภาพ
หนึ่งในเหตุผลหลักที่ทำให้ MQTT ได้รับความนิยมอย่างมากใน IoT ก็คือ... เบาอย่างเหลือเชื่อการนำไปใช้งานบนอุปกรณ์นั้นใช้โค้ดน้อยมากและต้องการทรัพยากรน้อยมาก ทำให้เหมาะสำหรับไมโครคอนโทรลเลอร์ขนาดเล็ก เซ็นเซอร์ราคาประหยัด หรืออุปกรณ์ที่ใช้พลังงานจากแบตเตอรี่
ข้อความควบคุม MQTT ในเวอร์ชันขั้นต่ำสามารถมีได้ดังนี้ ข้อมูลเพียงสองไบต์เท่านั้นนอกจากนี้ ส่วนหัวของข้อความยังมีขนาดกะทัดรัดมาก ช่วยลดภาระการสื่อสารให้น้อยที่สุด การออกแบบนี้เหมาะอย่างยิ่งสำหรับสถานการณ์ที่มี แบนด์วิดท์น้อย หรือเครือข่ายที่มีราคาแพง (เช่น เครือข่ายโทรศัพท์มือถือบางประเภท หรือ LPWAN) ซึ่งทุกไบต์มีความสำคัญ
เมื่อเทียบกับโปรโตคอลที่ซับซ้อนกว่า เช่น HTTP ซึ่งมีการร้องขอที่ซับซ้อนและส่วนหัวที่ยาวเหยียด MQTT ช่วยให้การทำงานง่ายขึ้น เพื่อเพิ่มประสิทธิภาพการใช้งานเครือข่ายเรื่องนี้มีความสำคัญอย่างยิ่งเมื่อมีอุปกรณ์หลายพันเครื่องส่งข้อมูลกันทุกๆ สองสามวินาที
แม่แบบการเผยแพร่/การสมัครรับข้อมูลพร้อมหัวข้อต่างๆ
MQTT มีพื้นฐานมาจากโมเดลของ สิ่งพิมพ์/การสมัครสมาชิกในหัวข้อต่างๆนี่คือสตริงข้อความ (ในรูปแบบ UTF-8) ที่จัดระเบียบข้อมูลเป็นระดับต่างๆ ตัวอย่างเช่น ในบ้านอัจฉริยะ เราอาจมี:
- บ้าน/ห้องนั่งเล่น/อุณหภูมิ
- บ้าน/ห้องครัว/ควัน
- บ้าน/โรงรถ/ประตู
เซ็นเซอร์วัดอุณหภูมิในห้องนั่งเล่นจะส่งค่าที่วัดได้ไปยังหัวข้อดังกล่าว บ้าน/ห้องนั่งเล่น/อุณหภูมิในขณะที่แอปพลิเคชันตรวจสอบจะสมัครรับข้อมูลจากหัวข้อเดียวกันเพื่อรับข้อความขาเข้าทั้งหมด ด้วยวิธีนี้ การเพิ่มอุปกรณ์ใหม่หรือผู้ใช้ข้อมูลจึงทำได้ง่ายเพียงแค่... ใช้หัวข้อที่เหมาะสมโดยไม่ต้องเปลี่ยนแปลงโครงสร้างพื้นฐานที่มีอยู่เดิม
ระบบนี้ แม้จะไม่ใช่คิวข้อความแบบคลาสสิกเสียทีเดียว แต่ก็มีความคล้ายคลึงกับโมเดลแบบคิวอยู่มาก กล่าวคือ อุปกรณ์ต่างๆ สร้างข้อความและส่งไปยังจุดศูนย์กลาง (ตัวกลาง) จากนั้น ระบบประมวลผลจะนำข้อมูลเหล่านั้นไปใช้ ตามความต้องการของพวกเขา ซึ่งทำให้การขยายระบบทำได้ง่ายขึ้นมาก โดยการเพิ่มจำนวนผู้บริโภคโดยไม่ต้องเปลี่ยนเซ็นเซอร์
คุณภาพการบริการ (QoS) และความน่าเชื่อถือ
อุปกรณ์ IoT จำนวนมากเชื่อมต่อผ่าน เครือข่ายที่มีความหน่วงสูง แบนด์วิดท์ต่ำ และความน่าเชื่อถือจำกัดเช่น ในสภาวะที่เครือข่ายมือถือไม่เสถียรหรือการเชื่อมต่อไร้สายแออัด MQTT มีกลไกหลายอย่างที่ช่วยให้มั่นใจได้ว่าข้อความจะถูกส่งถึงผู้รับในบริบทดังกล่าว
โปรโตคอลกำหนดระดับไว้สามระดับ คุณภาพการบริการ (QoS):
- QoS 0 – “อย่างมากที่สุดเพียงครั้งเดียว”ข้อความจะถูกส่งเพียงครั้งเดียวโดยไม่มีการยืนยัน เป็นวิธีที่เร็วและเบาที่สุด แต่ข้อความบางส่วนอาจสูญหายได้
- QoS 1 – “อย่างน้อยหนึ่งครั้ง”วิธีนี้ช่วยให้มั่นใจได้ว่าข้อความจะถึงปลายทาง แม้ว่าอาจจะส่งมาซ้ำก็ตาม จึงมีการใช้ระบบยืนยันการรับเพื่อรับประกันการส่งมอบข้อความ
- QoS 2 – “ส่งเพียงครั้งเดียว”นี่คือระดับที่มีความแข็งแกร่งที่สุด ระบบนี้รับประกันว่าข้อความแต่ละข้อความจะถูกส่งไปเพียงครั้งเดียวเท่านั้น โดยใช้... การจับมือสี่ขั้นตอนมันหนักกว่าเล็กน้อย แต่จำเป็นอย่างยิ่งในบางกรณีที่ต้องการความละเอียดอ่อน
ด้วยระดับคุณภาพบริการ (QoS) เหล่านี้ ทำให้ MQTT สามารถปรับให้เข้ากับ... กรณีการใช้งานที่แตกต่างกัน: ตั้งแต่ระบบวัดระยะทางที่ไม่มีอะไรเกิดขึ้นหากข้อมูลบางส่วนสูญหาย ไปจนถึงระบบที่สำคัญยิ่งซึ่งการทำสำเนาหรือการสูญหายของข้อความถือเป็นสิ่งที่ยอมรับไม่ได้
การจัดการการเชื่อมต่อใหม่และเครือข่ายที่ไม่เสถียร
ข้อดีอีกประการหนึ่งคือ MQTT ได้รับการออกแบบมาเพื่อ สภาพแวดล้อมที่มีการตัดการเชื่อมต่อบ่อยครั้งโปรโตคอลนี้มีคุณสมบัติที่ช่วยลดเวลาที่อุปกรณ์ใช้ในการเชื่อมต่อใหม่กับโบรกเกอร์ ซึ่งเป็นสิ่งสำคัญในเครือข่ายเซลลูลาร์หรือ Wi-Fi ที่มีคุณภาพไม่แน่นอน และช่วยปรับปรุงประสิทธิภาพ การเชื่อมต่อ WiFi ที่ปลอดภัย สามารถเสริมความสามารถเหล่านี้ได้
นอกจากนี้ โบรกเกอร์ยังสามารถจัดการข้อความที่ถูกพักไว้ สถานะเซสชัน และคุณสมบัติอื่นๆ ที่อนุญาตให้ใช้งานกับอุปกรณ์ต่างๆ ได้ การสื่อสารอย่างต่อเนื่องโดยไม่สูญเสียบริบท ทุกครั้งที่เครือข่ายล่มและกลับมาใช้งานได้อีกครั้ง
ความปลอดภัยและการเข้ารหัส
ใน IoT ความปลอดภัยไม่ใช่เรื่องที่เลือกได้ MQTT จึงรวมการสนับสนุนสำหรับเรื่องนี้ไว้ด้วย การเข้ารหัสและการพิสูจน์ตัวตน โดยอาศัยโปรโตคอลที่ทันสมัย: สามารถใช้ TLS 1.3 ในการเข้ารหัสช่องทางการสื่อสาร การตรวจสอบสิทธิ์ผ่านใบรับรองไคลเอ็นต์ OAuth และเทคนิคอื่นๆ ที่ใช้กันทั่วไปในสภาพแวดล้อมทางธุรกิจและคลาวด์
วิธีนี้ช่วยให้สามารถเข้ารหัสข้อความระหว่างการส่งและนำไปใช้ได้ การควบคุมการเข้าถึง เกี่ยวกับการกำหนดว่าใครบ้างที่สามารถเผยแพร่หรือสมัครรับข้อมูลในหัวข้อใดหัวข้อหนึ่ง โดยคำนึงถึงทั้งการรักษาความลับและความถูกต้องของข้อมูล ซึ่งมีความสำคัญอย่างยิ่งในภาคอุตสาหกรรม พลังงาน หรือสาธารณสุข
รองรับภาษาและแพลตฟอร์มต่างๆ อย่างครอบคลุม
MQTT มี การใช้งานระบบอย่างครบวงจรสำหรับนายหน้าและลูกค้าในหลายภาษา (Python, C, C++, Java, JavaScript, Go ฯลฯ) และมีชุมชนที่คึกคักมาก ทำให้ผู้พัฒนาสามารถผสานรวมอุปกรณ์ IoT เข้ากับระบบที่มีอยู่ ฐานข้อมูล เครื่องมือ Big Data หรือบริการคลาวด์ได้อย่างง่ายดาย โดยไม่ต้องสร้างระบบใหม่ทั้งหมด
เป็นโปรโตคอลโอเพนซอร์สที่มี ห้องสมุดที่ผ่านการทดสอบมาเป็นอย่างดีระยะเวลาในการเรียนรู้ค่อนข้างสั้น และความเสี่ยงของปัญหาความเข้ากันได้ลดลง ทำให้เป็นที่น่าสนใจอย่างมากสำหรับโครงการต่างๆ ตั้งแต่ต้นแบบขนาดเล็กไปจนถึงการใช้งานในวงกว้าง
บทบาทของตัวกลาง MQTT ในสถาปัตยกรรม IoT
นายหน้าคือ หัวใจหลักของสถาปัตยกรรมใดๆ ที่ใช้ MQTTเป็นส่วนประกอบที่รับข้อความทั้งหมด ประมวลผล และกระจายข้อความเหล่านั้นไปยังไคลเอ็นต์ที่สมัครรับข้อมูลในหัวข้อที่เกี่ยวข้อง
หน้าที่หลักได้แก่:
- รับข้อมูล เผยแพร่โดยอุปกรณ์ไคลเอ็นต์ (เซ็นเซอร์ เกตเวย์ แอปพลิเคชัน ฯลฯ)
- ถอดรหัสและกรองข้อความ ขึ้นอยู่กับหัวข้อ ระดับคุณภาพบริการ (QoS) หรือกฎการรักษาความปลอดภัย
- ระบุว่าลูกค้ากลุ่มใดสนใจ ในแต่ละข้อความ (ตามการสมัครรับข้อมูลของคุณ)
- ส่งข้อความไปยังกลุ่มลูกค้าเป้าหมายโดยคำนึงถึงนโยบายคุณภาพบริการ (QoS) และการอนุญาต
มีการใช้งานโบรกเกอร์หลายรูปแบบ ทั้ง ทั้งแบบโอเพนซอร์สและเชิงพาณิชย์หนึ่งในโปรแกรมที่เป็นที่รู้จักมากที่สุดคือ Mosquitto ซึ่งใช้กันอย่างแพร่หลายในบ้านเรือน กลุ่มผู้สร้างสรรค์ และแม้แต่ในการใช้งานที่จริงจังมากขึ้น โดยสามารถจัดการไคลเอนต์ได้ตั้งแต่ไม่กี่เครื่องไปจนถึงหลายพันเครื่องด้วยการตั้งค่าที่ค่อนข้างง่าย
MQTT ในทางปฏิบัติ: Arduino, ESP8266 และเครือข่ายท้องถิ่น

ในโครงการ IoT ที่บ้านหรือกึ่งมืออาชีพหลายๆ โครงการ สถานการณ์ทั่วไปอย่างหนึ่งคือ การมีลักษณะดังต่อไปนี้ โบรกเกอร์ MQTT ที่ทำงานบน Raspberry Pi หรือพีซี ภายในเครือข่ายท้องถิ่น และอุปกรณ์ต่างๆ เช่น Arduino พร้อมแอป Arduino IoT Cloud Remote หรือ ESP8266 ที่เชื่อมต่อในฐานะไคลเอ็นต์
ตัวอย่างเช่น คุณสามารถใช้ Arduino ร่วมกับเซ็นเซอร์วัดอุณหภูมิ DHT22 เพื่อส่งค่าที่วัดได้เป็นระยะไปยังหัวข้อต่างๆ เช่น บ้าน/ห้องนั่งเล่น/อุณหภูมิในขณะเดียวกัน Arduino อีกตัวหรือแอปพลิเคชันบนมือถือจะสมัครรับข้อมูลจากหัวข้อเดียวกันเพื่อแสดงอุณหภูมิแบบเรียลไทม์ ตัวกลางรับส่งข้อมูล (ในกรณีนี้คือ Mosquitto) จะรับข้อความจาก Arduino ตัวแรกและส่งต่อไปยังตัวที่สอง โดยที่ทั้งสองตัวไม่จำเป็นต้องรู้จักกันหรือจัดการการเชื่อมต่อโดยตรง
สถาปัตยกรรมนี้มีข้อได้เปรียบอย่างมากข้อหนึ่ง: สามารถปรับขนาดได้อย่างง่ายดายแทบไม่ต้องใช้ความพยายามคุณสามารถเพิ่มเซ็นเซอร์ เพิ่มตัวรับข้อมูล และเชื่อมต่อเข้ากับฐานข้อมูล ระบบแมชชีนเลิร์นนิง หรือแดชบอร์ดแสดงผลข้อมูลได้โดยไม่ต้องแก้ไขพฤติกรรมของอุปกรณ์ที่ติดตั้งใช้งานอยู่แล้ว คุณเพียงแค่ต้องทดลองกับหัวข้อและการสมัครรับข้อมูลเท่านั้น
ทำไมต้องใช้ MQTT แทนที่จะใช้ HTTP?
คำถามที่พบบ่อยมากคือ การใช้ MQTT คุ้มค่าจริงหรือไม่ ในเมื่อดูเหมือนว่าคุณสามารถแก้ปัญหาทุกอย่างได้ด้วย คำขอ HTTP โดยตรง ไปยัง ESP8266 หรืออุปกรณ์ที่คล้ายกัน โดยการเปิดพอร์ตบนเราเตอร์ และแค่นั้นเอง หรือแม้กระทั่งด้วย เว็บซ็อกเก็ตบนแอนดรอยด์.
คำตอบคือ แม้ว่าจะเป็นไปได้ในทางเทคนิค แต่ MQTT ก็มีข้อดีที่สำคัญหลายประการ:
- เวลาแฝงเฉลี่ยต่ำลงและค่าใช้จ่ายในการจัดการน้อยลง ในการสื่อสารที่เกิดขึ้นบ่อยครั้ง โดยเฉพาะข้อความสั้นๆ ที่ส่งทุกๆ สองสามวินาที
- ผับ/ซับพื้นเมืองโทรศัพท์มือถือไม่จำเป็นต้องสื่อสารกับอุปกรณ์แต่ละเครื่องโดยตรง เพียงแค่สื่อสารกับตัวกลางก็พอแล้ว
- การจัดการความปลอดภัยและการตรวจสอบสิทธิ์แบบรวมศูนย์ โดยจะประมวลผลผ่านตัวกลาง (broker) แทนที่จะคัดลอกตรรกะไปยังอุปกรณ์แต่ละตัว
- ความง่ายในการขยายขนาดหากพรุ่งนี้คุณเพิ่มจำนวนอุปกรณ์จาก 5 เป็น 500 เครื่อง คุณไม่จำเป็นต้องเปิดพอร์ต 500 พอร์ตหรือออกแบบโครงสร้างเครือข่ายใหม่ทั้งหมด
- รองรับการเชื่อมต่อใหม่และคุณภาพการบริการ (QoS) อย่างเต็มรูปแบบ เมื่อนึกถึงเครือข่ายที่ไม่เสถียร ซึ่งเป็นสิ่งที่ HTTP ไม่ได้รองรับโดยค่าเริ่มต้น
ในสถานการณ์ทั่วไป แอปมือถือของคุณจะเชื่อมต่อกับโบรกเกอร์ MQTT (ไม่ว่าจะภายในเครือข่าย LAN โดยใช้การส่งต่อพอร์ต หรือกับโบรกเกอร์บนคลาวด์) และเผยแพร่ข้อความไปยังหัวข้อควบคุม (ตัวอย่างเช่น) บ้าน/ห้องนั่งเล่น/ไฟ/ชุดและ ESP8266 ซึ่งสมัครรับข้อมูลในหัวข้อนั้น จะได้รับคำสั่งแทบจะในทันที คุณแค่ต้องเปิดเผยชื่อโบรกเกอร์เท่านั้นเองไม่ใช่ทุกอุปกรณ์ในเครือข่าย
สำหรับบริการต่างๆ เช่น io.adafruit.com และช่วงเวลาการเปิดใช้งาน (ทุก 15 นาทีในเวอร์ชันฟรี ทุก 5 วินาทีในเวอร์ชันเสียเงิน) นั้น... ข้อจำกัดของบริการเฉพาะนั้นปัญหาไม่ได้อยู่ที่โปรโตคอล MQTT เอง โปรโตคอลนี้รองรับความหน่วงต่ำมากได้อยู่แล้ว ปัญหาอยู่ที่ผู้ให้บริการกำหนดข้อจำกัดเรื่องความถี่ในการใช้งาน
เกตเวย์ MQTT: ตัวเชื่อมต่อระหว่างเซ็นเซอร์และระบบคลาวด์
MQTT gateway คืออะไร?
สิ่งที่เรียกว่า “MQTT Gateway” หรือ MQTT Gateway นั้น โดยพื้นฐานแล้วคือ... อุปกรณ์ตัวกลางระหว่างเซ็นเซอร์หรืออุปกรณ์ในพื้นที่กับแพลตฟอร์ม IoT หรือโบรกเกอร์ MQTTหน้าที่หลักของมันคือการรวบรวมข้อมูลจากโปรโตคอลต่างๆ (เช่น บลูทูธ เซ็นเซอร์แบบใช้สาย โมดบัส ฯลฯ) แปลงข้อมูลเหล่านั้นให้เป็นรูปแบบ MQTT และส่งไปยังระบบคลาวด์หรือโบรกเกอร์ส่วนกลาง
ในหลายกรณี เกตเวย์ MQTT จะถูกนำไปใช้งานในรูปแบบ เกตเวย์อีเธอร์เน็ตพร้อมซอฟต์แวร์เฉพาะ ซึ่งทำหน้าที่เป็นไคลเอ็นต์ MQTT เกตเวย์นี้สามารถมีอินเทอร์เฟซวิทยุ อินพุตและเอาต์พุตทางอุตสาหกรรม หรือการเชื่อมต่อฟิลด์บัส และมีหน้าที่ในการแปลงข้อมูลทั้งหมดเหล่านั้นให้เป็นภาษา MQTT เพื่อรวมเข้าด้วยกัน
ข้อดีของเกตเวย์ MQTT (รวมถึง MQTT ผ่านบลูทูธ)
เกตเวย์ที่ใช้ MQTT โดยเฉพาะอย่างยิ่งเกตเวย์ที่ผสานรวมบลูทูธ มีข้อดีที่น่าสนใจหลายประการ:
- ข้อความที่เบามากซึ่งทำให้การสื่อสารมีประสิทธิภาพแม้จะมีเซ็นเซอร์จำนวนมากส่งข้อมูลพร้อมกัน
- การส่งข้อความแบบสองทางระบบเหล่านี้รองรับการสื่อสารทั้งจากคลาวด์ไปยังอุปกรณ์และจากอุปกรณ์ไปยังคลาวด์ ไม่ใช่แค่การส่งข้อมูลขึ้นไปยังคลาวด์เท่านั้น
- การจัดส่งที่เชื่อถือได้ โดยได้รับการสนับสนุนจากระดับ QoS ซึ่งช่วยให้มั่นใจได้ว่าข้อความจะมาถึงตามระดับการรับประกันที่กำหนดไว้
- ความปลอดภัยในตัวโดยทั่วไป เกตเวย์จะรองรับการเข้ารหัส TLS และการตรวจสอบสิทธิ์ด้วยใบรับรอง ดังนั้นข้อมูลที่ส่งผ่านเกตเวย์จึงเข้าสู่ระบบคลาวด์ได้อย่างปลอดภัย
ในกรณีของ เกตเวย์บลูทูธ MQTTอุปกรณ์นี้จะสแกนและตรวจจับเซ็นเซอร์ BLE ทั้งหมดที่อยู่ในระยะทำการ จัดการการสื่อสารกับเซ็นเซอร์เหล่านั้น และรวมศูนย์การส่งข้อมูลไปยังโบรกเกอร์ MQTT จากมุมมองของแพลตฟอร์ม IoT เซ็นเซอร์บลูทูธทั้งหมดเหล่านี้จะ "สื่อสารด้วย MQTT" แม้ว่าในความเป็นจริงแล้วพวกมันจะสื่อสารผ่านเกตเวย์ก็ตาม
วิธีการทำงานของ MQTT Gateway และวิธีการตั้งค่า
โดยทั่วไปแล้ว ขั้นตอนการทำงานของเกตเวย์ MQTT มีดังนี้:
- สแกนและตรวจจับเซ็นเซอร์และอุปกรณ์ต่างๆ ภายในระยะทำการ (เช่น ผ่านบลูทูธหรือเครือข่ายแบบใช้สาย)
- รวบรวมข้อมูล จากเซ็นเซอร์เหล่านั้นผ่านทางโปรโตคอลที่เกี่ยวข้อง
- แปลงข้อมูลเหล่านั้นให้อยู่ในรูปแบบ MQTT (โดยกำหนดหัวข้อและเพย์โหลดที่เหมาะสม)
- เผยแพร่ข้อมูลบนโบรกเกอร์ หรือบนแพลตฟอร์ม IoT ที่เลือกไว้
การกำหนดค่าเกตเวย์ทางกายภาพนั้น ขั้นแรกจะเกี่ยวข้องกับสิ่งต่อไปนี้ การประกอบฮาร์ดแวร์: การเดินสายที่ถูกต้อง การแยกการเชื่อมต่อเซ็นเซอร์และโมดูลวิทยุ และการเลือกพอร์ต ที่อยู่ MAC และที่อยู่ IP แบบคงที่ เพื่อให้มั่นใจได้ว่ามีการระบุตัวตนที่ไม่ซ้ำกันบนเครือข่าย
ถัดไป คุณเลือกโมดูลที่ไคลเอนต์ MQTT จะใช้งาน ตัวอย่างเช่น:
- Arduino + โมดูลอีเธอร์เน็ต W5100.
- โมดูล ESP8266 พร้อมการเชื่อมต่อ WiFi
เฟิร์มแวร์เป็นตัวกำหนด หัวข้อการเผยแพร่และการสมัครสมาชิกตัวอย่างเช่น คำนำหน้าเช่น MY_MQTT_PUBLISH_TOPIC_PREFIX/FROM_NODE_ID/SENSOR_ID อาจก่อให้เกิดหัวข้อต่างๆ เช่น mygateway1-out/2/1/1/0/49ในขณะที่การส่งคำสั่งไปยังเซ็นเซอร์จะใช้คำนำหน้าการสมัครรับข้อมูล เช่น MY_MQTT_SUBSCRIBE_TOPIC_PREFIXก่อให้เกิดหัวข้อประเภทต่างๆ mygateway1-in/2/1/1/0/49.
เมื่อตั้งค่าเสร็จแล้ว ขอแนะนำอย่างยิ่งให้ทดสอบเกตเวย์ MQTT กับโบรกเกอร์ที่เป็นที่รู้จัก เช่น Mosquitto เพื่อให้มั่นใจได้ว่า... ตรวจสอบว่าได้รับข้อความอย่างถูกต้องแล้วเนื้อหาจะถูกเผยแพร่ในหัวข้อที่คาดไว้ และอุปกรณ์ที่สมัครรับข้อมูลจะได้รับสิ่งที่ควรได้รับ
เกตเวย์ MQTT ทำหน้าที่เป็นสะพานเชื่อมไปยังเซิร์ฟเวอร์กลาง
เมื่อคุณติดตั้งอุปกรณ์ MQTT ในหลายสถานที่ คุณมักจะต้องดำเนินการดังต่อไปนี้ รวบรวมข้อมูลทั้งหมดไว้บนเซิร์ฟเวอร์ที่ใช้ร่วมกัน หรือบนแพลตฟอร์มคลาวด์แบบรวมศูนย์ นี่คือจุดที่เกตเวย์ MQTT โดดเด่นในฐานะสะพานเชื่อม
แนวคิดคือการติดตั้งเกตเวย์ MQTT ในแต่ละตำแหน่งที่มีอุปกรณ์ IoT เกตเวย์แต่ละตัวจะรวบรวมข้อมูลจากสภาพแวดล้อมในพื้นที่นั้นๆ เพิ่มเข้าไปแล้วส่งต่อได้เลย ไปยังเซิร์ฟเวอร์กลาง (หรือโบรกเกอร์บนคลาวด์) โดยใช้ MQTT ด้วยวิธีนี้ คุณจะสามารถมองเห็นภาพรวมของข้อมูลทั้งหมดได้โดยไม่สูญเสียการควบคุมในระดับท้องถิ่น และยังช่วยเพิ่มประสิทธิภาพการใช้งานเครือข่ายอีกด้วย
นอกจากนี้ เกตเวย์เหล่านี้ยังสามารถ... ปลอดภัยด้วยใบรับรองของตนเองกลไกการเข้ารหัสและการตรวจสอบสิทธิ์ TLS ช่วยปกป้องเซ็นเซอร์และอุปกรณ์ IoT ที่อยู่ "เบื้องหลัง" เกตเวย์ นอกจากนี้ยังสามารถจัดเก็บข้อมูลในพื้นที่ ปรับแต่งส่วนติดต่อผู้ใช้เพื่อจัดการอุปกรณ์ใกล้เคียง และเพิ่มความเข้ากันได้กับโปรโตคอลอุตสาหกรรมอื่นๆ ตามความจำเป็น
ความเข้ากันได้ของ MQTT กับแพลตฟอร์มคลาวด์และโปรโตคอลอื่นๆ
จุดแข็งที่สำคัญที่สุดอย่างหนึ่งของ MQTT คือ... ใช้งานร่วมกับแพลตฟอร์ม IoT บนคลาวด์หลักๆ ส่วนใหญ่ได้เกตเวย์ MQTT สำหรับงานอุตสาหกรรมจำนวนมากใช้งานได้กับอุปกรณ์มาตรฐานดังต่อไปนี้:
- Azure IoT.
- Google Cloud ไอโอที.
- AWS IoT.
- ไอบีเอ็ม วัตสัน ไอโอที.
เกตเวย์จะตีความข้อมูลที่ได้รับจากเซ็นเซอร์และ โดยจะส่งข้อมูลเหล่านั้นไปยังแพลตฟอร์มในรูปแบบ MQTTผู้ใช้เพียงแค่สมัครรับข้อมูลในหัวข้อที่เกี่ยวข้องก็สามารถดูหรือประมวลผลข้อมูลได้ทุกเมื่อ
นอกจากนี้ แคทวอล์คเหล่านี้จำนวนมากยังสามารถใช้เป็น... ตัวแปลงโปรโตคอลด้วยการผสานรวมเครือข่ายต่างๆ เช่น Modbus TCP เข้ากับ MQTT และการนำเสนอแผงควบคุมเว็บระยะไกลเพื่อจัดการกลุ่มอุปกรณ์ ทำให้ MQTT กลายเป็นส่วนประกอบสำคัญของสถาปัตยกรรมแบบไฮบริด ซึ่งระบบเดิมสามารถทำงานร่วมกับโซลูชัน IoT ใหม่ได้
ตัวอย่างการใช้งานจริงของ MQTT และ IoT
สภาพแวดล้อมทางอุตสาหกรรมและระบบส่งข้อมูลทางไกล
ในโลกอุตสาหกรรม MQTT ได้รับการยอมรับอย่างกว้างขวางแล้ว มาตรฐานโดยพฤตินัยสำหรับการส่งข้อมูลโทรมาตร จากเซ็นเซอร์และอุปกรณ์ที่ติดตั้งกระจายอยู่ในโรงงาน เหมืองแร่ โรงงานผลิตน้ำมันและก๊าซ หรือบริษัทด้านเกษตรและอาหาร
บริษัทต่างๆ ติดตั้งเซ็นเซอร์จำนวนมากเพื่อวัดค่าต่างๆ เช่น อุณหภูมิ ความดัน การไหล การสั่นสะเทือน และการใช้พลังงาน ข้อมูลเหล่านี้จะถูกส่งผ่าน MQTT ไปยังระบบวิเคราะห์ข้อมูล พวกเขาสามารถตรวจจับความไม่สอดคล้องกัน แนวโน้ม และโอกาสในการปรับปรุงได้ ในการดำเนินงาน ด้วยเหตุนี้ กระบวนการต่างๆ จึงสามารถได้รับการปรับปรุงให้เหมาะสม คาดการณ์ความล้มเหลว และลดเวลาหยุดทำงานโดยไม่คาดคิดได้
เครือข่ายบริเวณกว้างพลังงานต่ำ (LPWANs)
เครือข่าย LPWAN (Low Power Wide Area Network) ถูกออกแบบมาเพื่อ อุปกรณ์ที่ใช้พลังงานต่ำมากซึ่งส่งข้อความขนาดเล็กในระยะทางไกลโดยทั่วไป เครือข่ายที่มีความหน่วงสูงและแบนด์วิดท์จำกัดมักเป็นปัญหา MQTT เหมาะอย่างยิ่งสำหรับสภาพแวดล้อมนี้ เนื่องจากข้อความมีขนาดเล็ก รองรับคุณภาพของบริการ และปรับตัวเข้ากับเครือข่ายที่ไม่เสถียรได้
ในบริษัทที่ใช้ LPWAN เพื่อส่งข้อมูลเซ็นเซอร์ไปยังโซลูชันคลาวด์ MQTT ช่วยให้สามารถดำเนินการได้ ส่งข้อความปริมาณมาก โดยไม่ทำให้เครือข่ายเกิดความแออัด และเพื่อให้มั่นใจได้ว่าข้อมูลจะส่งไปถึงระบบวิเคราะห์และตรวจสอบได้มากที่สุดเท่าที่จะเป็นไปได้
เครือข่ายสังคมและการส่งข้อความจำนวนมาก
ตัวอย่างที่โดดเด่นของการใช้ MQTT นอกเหนือจากสภาพแวดล้อมทางอุตสาหกรรมแบบดั้งเดิมคือกรณีของ Facebookโดยถูกนำมาใช้เป็นโปรโตคอลการสื่อสารหลักในการจัดการข้อความจำนวนมหาศาลแบบเรียลไทม์ นอกจากนี้ยังมีบทบาทในการส่งข้อความไปยังแพลตฟอร์มต่างๆ เช่น Instagram ด้วย
ข้อเท็จจริงที่ว่าบริษัทขนาดใหญ่เช่นนี้เลือกใช้ MQTT ยิ่งตอกย้ำความคิดที่ว่านี่คือบริษัทที่มีศักยภาพสูง โปรโตคอลที่แข็งแกร่งและปรับขนาดได้ เหมาะสำหรับสถานการณ์ที่มีการใช้งานพร้อมกันสูงไม่ใช่แค่สำหรับโครงการ IoT ขนาดเล็กเท่านั้น
บ้านอัจฉริยะและระบบบ้านอัตโนมัติ
ในแวดวงภายในประเทศ MQTT ได้กลายเป็นหนึ่งใน... โปรโตคอลยอดนิยมสำหรับการทำให้บ้านอัจฉริยะเป็นระบบอัตโนมัติระบบนี้สามารถทำงานร่วมกับแพลตฟอร์มคลาวด์ เช่น Azure หรือ IBM Watson ได้อย่างราบรื่น รวมถึงระบบอัตโนมัติในเครื่องได้ด้วย
ด้วย MQTT คุณสามารถตรวจสอบได้ การใช้พลังงานในบ้านควบคุมแสงสว่าง ตรวจสอบอุณหภูมิหรือคุณภาพอากาศแบบเรียลไทม์ และประสานงานอุปกรณ์หลายชิ้น (เทอร์โมสตัท มู่ลี่ ระบบชลประทาน ฯลฯ) รวมถึงอุปกรณ์ต่างๆ เช่น Xiaomi เวลาโดยที่อุปกรณ์แต่ละตัวไม่จำเป็นต้องสื่อสารโดยตรงกับอุปกรณ์อื่นๆ ตัวอย่างเช่น เกตเวย์บลูทูธ MQTT สามารถรวมศูนย์เซ็นเซอร์ BLE ทั้งหมดในบ้านและเชื่อมต่อเข้ากับโบรกเกอร์เพียงตัวเดียวได้
ส่วนยานยนต์
การเปลี่ยนแปลงสู่ระบบดิจิทัลในอุตสาหกรรมยานยนต์เกี่ยวข้องกับการเชื่อมต่อยานพาหนะ สายการผลิต และระบบการจัดการ โดยใช้ MQTT เป็นเครื่องมือ ช่องทางการส่งข้อความที่เชื่อถือได้ระหว่างระบบคลาวด์และยานพาหนะซึ่งช่วยให้สามารถส่งข้อมูลโทรมาตร การวินิจฉัยระยะไกล และการอัปเดตพารามิเตอร์ได้
ความสามารถในการสื่อสารแบบเรียลไทม์ได้เกือบตลอดเวลา แม้ว่าการเชื่อมต่อมือถือจะเปลี่ยนแปลงไป ทำให้ MQTT เป็นตัวเลือกที่น่าสนใจอย่างยิ่งสำหรับผู้ผลิตยานยนต์และผู้ให้บริการ
ขนส่งและโลจิสติกส์
ในด้านการขนส่งและโลจิสติกส์ ความสามารถของ ติดตามยานพาหนะและสินค้าที่กำลังเคลื่อนที่ มันสำคัญมาก MQTT ใช้สำหรับส่งข้อมูลเกี่ยวกับตำแหน่ง สถานะสินค้า เหตุการณ์การเปิดประตู หรือสภาพแวดล้อมภายในตู้คอนเทนเนอร์
ด้วยการใช้ระบบส่งข้อความที่มีน้ำหนักเบาและสถาปัตยกรรมแบบใช้ตัวกลาง ทำให้สามารถดำเนินการได้ การตรวจสอบกลุ่มยานพาหนะขนาดใหญ่แบบเรียลไทม์ ด้วยความหน่วงต่ำและไม่ทำให้เครือข่ายมือถือหรือดาวเทียมที่ใช้ในการเชื่อมต่อเกิดการโอเวอร์โหลด
สถาปัตยกรรมที่ปรับขนาดได้และการแยกส่วนระหว่างฮาร์ดแวร์และซอฟต์แวร์
หนึ่งในข้อดีที่สำคัญของการนำ MQTT มาใช้ในโครงการ IoT คือ ช่วยให้ แยกชั้นฮาร์ดแวร์ออกจากชั้นซอฟต์แวร์อย่างชัดเจนเซ็นเซอร์และอุปกรณ์ต่างๆ มีหน้าที่เพียงแค่ส่งข้อมูลไปยังตัวกลางและรับคำสั่งจากหัวข้อเฉพาะเท่านั้น ส่วนกระบวนการอื่นๆ ที่เกิดขึ้นหลังจากนั้น (การจัดเก็บ การวิเคราะห์ การแสดงผล) สามารถพัฒนาไปได้อย่างอิสระ
แนวทางนี้มักชวนให้นึกถึง รูปแบบไมโครเซอร์วิสโดยที่แต่ละส่วนประกอบทำหน้าที่เพียงอย่างเดียวและทำได้ดี ในกรณีของเรา อุปกรณ์ฮาร์ดแวร์จะเน้นที่การวัดและเผยแพร่ข้อมูล ส่วนบริการอื่นๆ จะจัดการด้านการประมวลผล การจัดเก็บ การแสดงผล หรือการประยุกต์ใช้ปัญญาประดิษฐ์ โดยที่เซ็นเซอร์ไม่จำเป็นต้อง "รู้" อะไรเกี่ยวกับบริการเหล่านั้นเลย
ด้วยการแยกส่วนนี้ หากพรุ่งนี้คุณตัดสินใจที่จะย้ายจากเว็บไซต์แสดงภาพข้อมูลแบบง่ายๆ บน Raspberry Pi ไปยัง... ระบบที่ซับซ้อนของข้อมูลขนาดใหญ่และการเรียนรู้ของเครื่องจักร ในระบบคลาวด์ คุณไม่จำเป็นต้องแตะต้องเซ็นเซอร์เลย เซ็นเซอร์จะยังคงส่งข้อมูลไปยังโบรกเกอร์ต่อไป และคุณจะต้องเชื่อมต่อเฉพาะผู้บริโภครายใหม่ที่สมัครรับข้อมูลในหัวข้อที่มีอยู่แล้วเท่านั้น
MQTT และเกตเวย์ที่เกี่ยวข้องทำงานร่วมกันเพื่อสร้างโซลูชัน มีความทนทานสูงมากสำหรับการเชื่อมต่อ IoTน้ำหนักเบา ปรับขนาดได้ ปลอดภัย เข้ากันได้กับแพลตฟอร์มคลาวด์หลัก ๆ และรองรับเครือข่ายทุกประเภท ตั้งแต่ LPWAN ไปจนถึง WiFi ในบ้านหรือ Ethernet ในภาคอุตสาหกรรม ทั้งหมดนี้ เมื่อรวมกับโมเดลการเผยแพร่/สมัครรับข้อมูล และความสามารถในการเพิ่มเกตเวย์ที่เชื่อมต่อโปรโตคอลต่าง ๆ ทำให้มันเป็นหนึ่งในส่วนประกอบสำคัญที่ใช้ในการสร้าง Internet of Things ในปัจจุบันและอนาคต แบ่งปันข้อมูลเพื่อให้ผู้ใช้ทราบเกี่ยวกับหัวข้อนี้มากขึ้น.