MQTT คืออะไร

การติดต่อสื่อสารแบบ MQTT ย่อมาจาก Message Queuing Telemetry Transport เป็นรูปแบบการติดต่อสื่อสารมาตรฐาน ISO standard (ISO/IEC PRF 20922) โดยเป็นโปรโตคอลการติดต่อสื่อสารแบบ publish และ subscribe โดยใช้โปรโตคอล TCP/IP เป็นพื้นฐานในการออกแบบ ซึี่งออกแบบมาเพื่อเชื่อมต่อกับอุปกรณ์ที่ต้องติดต่อสื่อสารระยะไกลที่ใช้ส่งข้อมูลขนาดเล็ก (M2M : machine to machine) หรือมีแบนด์วิชท์ (Bandwidth) ที่จำกัด ซึ่งเป็นส่วนหนึ่งของการเชื่อมต่ออุปกรณ์ หรือ Thing ต่าง ๆ ให้ออนไลน์กับระบบอินเทอร์เน็ต (IoT : Internet of Things)

cr. https://www.pubnub.com

องค์ประกอบหลักของการติดต่อสื่อสารแบบ MQTT

1) MQTT Broker
ทำหน้าที่เป็นตัวกลางในการกระจายข้อความ (Boardcast) ให้กับผู้รับ ที่เรียกชื่อตรงกับผู้ส่ง โดยจะอ้างอิงผ่านทาง Topic ในการใช้งาน mqtt จะเรียกส่วนนี้ว่า Broker ซึ่งผู้ใช้งานสามารถเลือกใช้งานได้ทั้งแบบเช่า สร้างเอง หรือใช้งาน Broker ฟรีเช่น CloudMQTT, NETPIE, Mosquitto, HiveMQ เป็นต้น

2) Publish
ทำหน้าที่ในการพูดคุย ส่งข้อมูลไปยังตัวกลาง (Broker) โดยข้อมูลที่ส่งไปจะประกอบไปด้วยหัวข้อ (Topic) และข้อความ (Message)

3) Subscribe
ทำหน้าที่เชื่อมต่อกับตัวกลาง (Brokor) ในจะทำการติดตาม (Subscribe) หัวเรื่อง (Topic) นั้น ๆ ที่ผู้ส่ง (Publish) ส่งข้อมูลขึ้นมา เมื่อชื่อหัวเรื่อง (Topic) ตรงกัน ผู้รับก็จะได้รับข้อมูลนั้นได้ หากชื่อหัวเรื่องไม่ตรงกัน ผู้รับก็จะไม่ได้ข้อมูลนั้นเลย ดังนั้น เพื่อให้สามารถติดต่อสื่อสารกันได้อย่างสมบูรณ์ ผู้ส่ง และผู้รับจะต้องคุยกันในหัวเรื่องเดียวกัน

โดยคุณภาพของการส่งข้อมูลจะถูกแบบออกได้ 3 ระดับดังนี้

  1. QoS0 ส่งครั้งเดียง ไม่สนใจว่าจะรับได้หรือไม่
  2. QoS1 ส่งครั้งเดียว ไม่สนใจว่าจะรับได้หรือไม่ แต่จะจำค่าล่าสุดไว้
  3. QoS2 ส่งหลายครั้ง จนกว่าปลายทางจะได้รับข้อมูล (ทำงานได้ช้ากว่า QoS0 และ QoS1)

ขั้นตอนการทดลอง

  • ดาวน์โหลดโปรแกรม KB-IDE ( www.kbide.org )
  • เลือกบอร์ด Kidbright (Arduino API)
  • แถบเครื่องมือ Advanced → MQTT แสดงบล็อกการเชื่อมต่อกับ MQTT
  • ลากบล็อกโปรแกรมในส่วน Setup
  • ลากบล็อกโปรแกรมในส่วน Loop
  • เข้าเว็บไซต์ https://www.cloudmqtt.com ทำการสมัครสมาชิก และ Log in
  • คลิก +Create New Instance เพื่อสร้าง broker สำหรับให้อุปกรณ์เชื่อมต่อ
  • เมื่อสร้างเรียบร้อย จะได้ broker ที่สร้างขึ้นดังภาพ
  • กรอกรหัสเชื่อมต่ออินเทอร์เน็ต และรหัสเชื่อมต่อที่ได้จาก cloudMQTT
  • อัพโหลดโปรแกรม เปิด Serial monitor จะแสดงค่าอุณหภูมิ และแสงสว่าง
  • กลับไปที่เว็บ CloudMQTT เลือกแถบ WEBSOCKET UI
  • เมื่อกดปุ่มสวิตซ์ 1 ที่บอร์ด KidBright จะส่งข้อมูลอุณหภูมิที่ topic: KBIDE/temp และส่งข้อมูลแสงสว่างที่ topic: KBIDE/light
  • ทดลองส่งข้อมูลโดยกรอกข้อมูลในช่อง Send message โดย Topic: KBIDE/ และ Message: Hello from CloudMQTT
  • ข้อความจาก CloudMQTT จะถูกส่งลงมายังบอร์ด
  • การรับข้อมูล สามารถเลือก Topic ได้จากบล็อก MQTT SUBSCRIBE ใน void setup

สรุป

การติดต่อสื่อสารแบบ MQTT โดยใช้ CloudMQTT broker เปิดให้ใช้บริการฟรี แต่มีข้อจำกัดจำนวนการเชื่อมต่ออุปกรณ์ และความเร็วในการรับส่งข้อมูล โดยการรับส่งข้อมูลจะมี 3 องค์ประกอบคือ 1) MQTT Broker 2) Publish 3) Subscribe ทั้งนี้การใช้งาน MQTT จะต้องทำการเชื่อมต่ออินเทอร์เน็ตให้กับบอร์ดด้วย จึงจะสามารถส่งข้อมูลไปยัง broker ได้

--

--

Apirak Sang-ngenchai
Chiang Mai Maker Club

Sometime, We need to take a step away from certain things to reclaim your own self .