อินเทอร์เน็ตทุกวันนี้เราอาจจะมองแทบทุกอย่างเป็นเว็บไปได้เพราะการสื่อสารส่วนมากบนอินเทอร์เน็ตส่งข้อมูลผ่านโปรโตคอล HTTP แต่ในโลกยุค Internet of Things (IoT) อีกโปรโตคอลที่กำลังมีการใช้งานมากขึ้นเรื่อยๆ คือ MQTT หรือ MQ Telemetry Transport โปรโตคอลสำหรับการเชื่อมต่อแบบ machine-to-machine หรือคอมพิวเตอร์สู่คอมพิวเตอร์
MQTT คืออะไร
MQTT ย่อมาจาก Message Queuing Telemetry Transport เป็นโปรโตคอลสำหรับใช้ในสื่อสารข้อมูลระหว่าง Machine to Machine (M2M) ถูกคิดค้นขึ้นในปี ค.ศ. 1999 โดย Dr Andy Stanford-Clark จาก IBM และ Arlen Nipper จาก Arcom (now Eurotech) ออกแบบมาเพื่อใช้สื่อสารในระบบเครือข่ายที่มีทรัพยากรค่อนข้างจำกัด ใช้งานแบนด์วิธต่ำ สามารถ publish-subscribe ข้อมูลระหว่าง Device เพื่อสื่อสารกันระหว่างอุปกรณ์ และถ้ามองในด้านที่เกี่ยวกับ Internet of Things จะสามารถประยุกต์ให้อุปกรณ์ต่างๆเชื่อมต่อกันผ่านเครือข่ายของอินเทอร์เน็ตได้ ทำให้เราสามารถสร้างสรรค์โครงงานที่เกี่ยวกับการติดตามอุปกรณ์ เช่น มอนิเตอร์อุปกรณ์ผ่านอินเทอร์เน็ต ควบคุมอุปกรณ์ผ่านอินเทอร์เน็ต เป็นต้น
สำหรับระบบ IoT นั้น การติดต่อสู่ Internet นั้นเป็นสิ่งสำคัญอย่างยิ่งเพราะอินเทอเน็ตทำให้อุปกรณ์ IoT ต่าง ๆสามารถติดต่อสื่อสารและแลกเปลี่ยนข้อมูลกันได้ MQTT (Message Queue Telemetry Transport) ซึ่งพัฒนาต่อมาจาก TCP/IP อีกทีนั้นได้กลายเป็น protocol มาตรฐานสำหรับระบบ IoT และเนื่องจากมันสร้างมาจาก TCP/IP นั้นทำให้ MQTT ประกันว่าข้อมูลที่ส่งกันระหว่างอุปกรณ์ IoT นั้นไม่มีการหล่นหายระหว่างทาง
MQTT ประกอบด้วย อะไรบ้าง
– MQTT Client เป็นส่วน publish ข้อมูลต่างๆ ขึ้นไปยัง MQTT Broker และสามารถ Subscribe ข้อมูลต่างๆจาก MQTT Broker ผ่านทาง TCP/IP Protocol ถ้ามองในมุมมองของ Internet of Things (IoT) อุปกรณ์จำพวกนี้จะเป็น Device ที่สามารถเชื่อมต่อกับระบบเครือข่ายได้ เช่น บอร์ด Arduino Uno Wifi 2, Arduino MKR Wifi 1010, บอร์ด ESP32, บอร์ด ESP8266, บอร์ด Raspberry Pi, เว็ปไซต์, สมาร์ทโฟน
– MQTT Broker หรือ MQTT Server เป็นซอฟต์แวร์สำหรับรับข้อมูลจาก MQTT Client ที่ได้ publish เข้ามาและสามารถ publish ข้อมูลจาก MQTT Broker ไปยัง MQTT Client ที่ได้ Subscribe ข้อมูลไว้ได้ หากมองในมุมมองของ Internet of Things อุปกรณ์นี้อาจจะเป็น Cloud Server ของค่ายต่างๆ เช่น CloudMQTT, NETPIE, Azure, AWS เป็นต้น หรือใช้ Single Board Computer เช่นบอร์ด Raspberry Pi, LattePanda, Beagle Bone, nanoPi, อื่นๆ แล้วติดตั้งซอฟต์แวร์เพิ่มเติมก็สามารถใช้งานได้เช่นกัน
ตัวอย่างการสื่อสารเบื้องต้นของ MQTT
1. กำหนดให้ Client Device ในตัวอย่างนี้จะเป็นสมาร์ทโฟน ทำการ Subscribe MQTT Broker ตาม Topic ที่ต้องการ ตัวอย่างนี้ติดตาม Topic “temp” ไว้
2. กำหนดให้ Client Device (Device ที่ต่อกับเซ็นเซอร์วัดอุณหภูมิ) แล้วทำการ Publish ค่าขึ้นไปยัง MQTT Broker
3. MQTT Broker Publish ไปยังอุปกรณ์ที่ Subscribe ไว้ ดังนั้นในตัวอย่างนี้สมาร์ทโฟนจะได้รับข้อมูลจาก Client ที่ต่ออยู่กับเซ็นเซอร์เรียบร้อย
จากตัวอย่างการสื่อสารเบื้องต้นของ MQTT จะเห็นได้ว่าการสื่อสารระหว่างอุปกรณ์นั้นสามารถเชื่อมต่อกันได้อย่างกว้างขวาง ไม่จำกัดในเรื่องชนิดอุปกรณ์ว่าจำเป็นต้องเป็นอุปกรณ์ชนิดเดียวกัน สามารถสื่อสารกันได้หลากหลายแพลตฟอร์ม มีตัวอย่างการใช้งานสำหรับการพัฒนาโปรแกรมด้วยภาษาต่างๆ มากมายเช่น ภาษา C, Python และอื่นๆ ทำให้การเชื่อมต่อแบบ MQTT นี้น่าสนใจสำหรับการนำมาประยุกต์ใช้เป็นงานพอสมควร
สรุปประโยนชน์ของ MQTT
1. แค่เขียนโค้ดง่ายๆจากอุปกรณืของเราก็สามารถ เข้าถึงการทำงานของ MQTT ได้แล้ว
2. ประหยัดพลังงานในการส่งข้อมูล ซึ่งใช่กับอุปกรณ์ที่ใช่แค่ ถ่ายแบตเตอร์รี่ หรือ มีขนาด CPU น้อยๆ ได้
3. ติดตั้งระบบง่ายไม่ว่าจะเป็นฝั่ง broker หรือ client ซึ่งใน Python ก็มี library แล้ว
4. เป็น ระบบแบบ event-driven หรือก็คือสามารถรับข้อมูลได้ตลอดเวลาที่ topic นั้นๆ ถูก publish
5. เพิ่มความเร็วในการส่งข้อมูล เนื่องจาก headers ของข้อมูลนั้นมีขนาดเล็ก
6. สามารถแชร์ข้อมูลจาก อุปกรณ์ ไปยังอุปกรณ์อื่นๆได้ง่าย
ก็จบไปแล้วสำหรับบทความนี้หวังว่าจะเป็นประโยชน์ต่อหลายๆคนที่กำลังตั้งใจจะศึกษาเกี่ยวกับระบบ IoT ซึ่งความรู้ตรงนี้จะเอาไปต่อยอดเวลาตอนที่เราจะ ดีไซน์ ระบบของเราได้