Show
MQTT ย่อมาจาก Message Queue Telemetry Transport เป็นโปรโตคอลประยุกต์ที่ใช้โปรโตคอล TCP เป็นรากฐาน ออกแบบมาสำหรับงานที่ต้องการ ๆ สื่อสารแบบเรียลไทม์แบบไม่จำกัดแพลตฟอร์ม หมายถึงอุปกรณ์ทุกชิ้นสามารถสื่อสารกันได้ผ่าน MQTT MQTT จะแบ่งเป็น 2 ฝั่ง คือฝั่งเซิร์ฟเวอร์มักจะเรียกว่า MQTT Broker ส่วนฝั่งผู้ใช้งานจะเรียกว่า MQTT Client ในการใช้งานด้าน IoT จะเกี่ยวข้องกับ MQTT Client เป็นหลัก โดยจะมี MQTT Broker ทั้งแบบฟรี และเสียเงินไว้รองรับอยู่แล้ว ทำให้การสื่อสารข้อมูลผ่าน MQTT จะใช้เซิร์ฟเวอร์ฟรี หรือ MQTT Broker ฟรี เหล่านั้นเป็นตัวกลาง ลักษณะการใช้งาน MQTT อาจะเปรียบเสมือนได้กับการใช้งานห้องแชท Line สำหรับอุปกรณ์ โดยอุปกรณ์แต่ละตัวจะมีชื่อเป็นของตนเอง มี Username Password เป็นของตัวเอง และอาจจะมีห้องลับเฉพาะของตนเอง ดังนั้นการใช้งาน MQTT ผู้เขียนจึงจะขอยกตัวอย่างของ MQTT เทียบกับห้องแชทได้ดังนี้ กลุ่มผู้ใช้ (User) ใน MQTT จะแบ่งกลุ่มของผู้ใช้งานออกเป็น 2 ระดับ คือ
ในการใช้งานจริง ในอุปกรณ์ต่าง ๆ ควรจะใช้งานในระดับทั่วไป เพื่อความปลอดภัยกรณีอุปกรณ์เหล่านั้นถูกแฮกแล้วไม่สร้างความเสียหายไปยังอุปกรณ์อื่น ๆ ที่อยู่ในช่องทางเฉพาะของแต่ละอุปกรณ์ เส้นทาง (Topic) เส้นทาง เปรียบเหมือนกับหัวข้อ หรือห้องแชทที่ต้องการจะคุย และการคุยกันจะมีเฉพาะอุปกรณ์ที่อยู่ในห้องนั้น ๆ (Subscribe) ถึงจะสามารถได้รับข้อมูลที่มีการส่งไปในห้องนั้น ๆ ที่ถูกเรียกว่าเส้นทางเนื่องจากการใช้งานส่งข้อมูลและรับข้อมูลจะเหมือนกับเส้นทางในระบบไฟล์ เช่น /Room1/LED ซึ่งระบบเส้นทางนี้นอกจากอุปกรณ์จะสามารถรอการสนทนาในห้องตามเส้นทาง /Room1/LED ได้แล้ว ยังสามารถรอสนทนาเส้นทาง /Room1 ได้ด้วย หากเป็นการรอฟังในเส้นทาง (Subscribe) /Room1 จะหมายถึงการส่งข้อมูลใด ๆ ที่นำหน้าด้วย /Room1 เช่น /Room1/LED , /Room1/Value ผู้ที่รอฟัง (Subscribe) /Room1 อยู่จะได้รับข้อมูลเหล่านั้นด้วย คุณภาพข้อมูล (QoS) แบ่งออกเป็น 3 ระดับดังนี้
การส่งข้อมูล (Publish) การส่งข้อมลในแต่ละครั้งจะต้องประกอบไปด้วยเส้นทาง (Topic) ข้อมูล และคุณภาพข้อมูล ซึ่งการส่งข้อมูลจะเรียกว่า Publish การรับข้อมูล (Subscribe) การรับข้อมูลในระบบ MQTT จะรับข้อมูลได้เฉพาะเมื่อมีการเรียกใช้การ Subscribe ไปยัง Topic ที่กำหนด อาจเปรียบได้กับการ Subscribe คือการเข้าไปนั่งรอเพื่อนในกลุ่ม Line ส่งแชทมาหา เมื่อมีการส่งข้อมูลเข้ามาจะเกิดสิ่งที่เรียกว่าเหตุการณ์ (Event) ให้เรากดเข้าไปดูข้อความที่เพื่อน ๆ ส่งเข้ามา จะเห็นได้ว่า MQTT ก็เปลี่ยนเสมือนห้องแชทของอุปกรณ์ที่จะสนทนาแลกเปลี่ยนข้อมูลกันแบบเรียลไทม์ผ่านเครือข่ายอินเตอร์เน็ต การใช้งาน MQTT ฟรีจาก CloudMQTTการสมัครสมาชิกเข้าไปที่หน้าเว็บไซต์ https://www.cloudmqtt.com/ จากนั้นกดที่ Control Panel หากสมัครสมาชิกไว้แล้ว สามารถข้ามขั้นตอนไปในส่วนของการใช้งาน CloudMQTT ได้เลย หากยังไม่ได้สมัครสมาชิกให้กรอกอีเมล์ลงในช่อง E-mail ตรงส่วน Sign up แล้วกดปุ่ม Sign up จากนั้นจะพบข้อความแจ้งผล ให้เข้าไปเช็คอีเมล์ จากนั้นคลิกลิ้งที่ส่งมาในอีเมล์ กรอกข้อมูลลงในฟอร์มสมัครสมาชิกให้ครบ จากนั้นกดปุ่ม Submit จากนั้นระบบจะพามาหน้าจัดการ เป็นการจบการสมัครสมาชิก การสร้าง Brokerกดไปที่ปุ่ม Create เพื่อสร้าง Broker ใหม่ ที่ช่อง Name ให้ตั้งชื่อ Broker ใหม่ เลือก Plan เป็น Cute Cat จากนั้นกดปุ่ม Create หน้าเว็บจะกลับมาที่หน้าจัดการ และมีรายการ Broker ที่สร้างขึ้นมาใหม่ กดไปที่ปุ่ม Details จากนั้นจะพบข้อมูลต่าง ๆ ของ Broker ซึ่งบางส่วนจะต้องนำไปใช้ในโค้ดที่จะได้ทดลองกันต่อไป สามารถอธิบายแต่ละส่วนได้ดังนี้
ซึ่งข้อมูลในส่วนนี้จะแตกต่างกันไปตามแต่ละ Broker ที่สร้างขึ้นมา การจัดการผู้ใช้และสิทธิ์ในหน้าของ CloudMQTT Console ที่ใช้จัดการ Broker ให้เลื่อนมาที่หัวข้อ Manage Users จะมีช่องอยู่ 2 ช่อง สำหรับกรอก Username และ Password เพื่อสร้างผู้ใช้ใหม่ เมื่อใส่ข้อมูลเรียบร้อยให้กดปุ่ม Save รายชื่อผู้ใช้ใหม่จะปรากฏขึ้นมา หากต้องการลบผู้ใช้ใดสามารถกดปุ่ม Delete ที่ผู้ใช้นั้น ๆ ได้เลย ต่อมาให้เลื่อนมาที่หัวข้อ ACLs เพื่อเริ่มจำกัดสิทธิ์ และให้สิทธิ์ของผู้ใช้ โดยรายละเอียดการกรอกข้อมูลแต่ละช่องในหัวข้อย่อย New Rule มีดังนี้
เมื่อกำหนดสิทธิ์เรียบร้อยแล้ว ให้กดปุ่ม Save ได้เลย หลังจากกดปุ่ม Save จะแสดงผลการจัดการสิทธิ์ดังรูป หากต้องการยกเลิกการจัดการสิทธิ์สามารถกดปุ่ม Delete เพื่อลบได้ การเรียกดูข้อมูลเข้าออกแบบเรียลไทม์ที่ส่วนด้านบนสุด ให้คลิกที่ปุ่ม Websocket UI ข้อมูลที่มีการรับส่งกันผ่าน MQTT ทั้งหมดจะแสดงผลในหัวข้อ Received messages โดยใช้สิทธิ์ของผู้ใช้ระดับสูงสุด ในส่วนหัวข้อ Send message สามารถกำหนดเส้นทาง และข้อมูลที่ต้องการส่งได้ โดยคลิกปุ่ม Send เพื่อส่ง การใช้งาน MQTT บน ESP32 จะใช้งานผ่านไลบารี่ PubSubClient.h จะต้องติดตั้งเพิ่มเติมโดยใช้ Library Manager ค้นหาคำว่า PubSubClient แล้วสามารถกดปุ่ม Install เพื่อติดตั้งได้เลย การในการเชื่อมต่อกับ MQTT จะต้องมีการเรียกใช้ไลบารี่ PubSubClient.h ด้วยเสมอ โดยจะต้องเพิ่มคำสั่ง #include ไว้ด้านบนของไฟล์โปรแกรมเสมอ ในการสร้างออปเจคเพื่อใช้งานคลาสของไลบารี่ PubSubClient สามารถทำได้โดยมีรูปแบบดังนี้ PubSubClient::PubSubClient(Client &client); ฟังก์ชั่นย่อยที่มีให้ใช้งาน จะแบ่งตามเคสได้ดังนี้ เชื่อมต่อกับ Broker – ใช้ฟังก์ชั่นย่อย .setServer() เพื่อตั้งค่า Broker ที่ต้องการเชื่อมต่อ มีรูปแบบการใช้งานดังนี้ void PubSubClient::setServer(const char * domain, uint16_t port); มีค่าพารามิเตอร์ดังนี้
และไม่มีค่าที่ส่งกลับ นอกจากนี้การเชื่อมต่อกับ Broker จะใช้ฟังก์ชั่นย่อย .connect() ซึ่งมีรูปแบบดังนี้ bool PubSubClient::connect(const char *id, const char *user, const char *pass); มีรายละเอียดของค่าพารามิเตอร์ดังนี้
และตอบกลับมาเป็นผลการเชื่อมต่อ หากเชื่อมต่อสำเร็จจะให้ค่าเป็น True การตรวจสอบสถานะการเชื่อมต่อจะใช้ฟังก์ชั่นย่อย .connected() ในการตรวจสอบ ซึ่งมีรูปแบบการใช้งานดังนี้ bool PubSubClient::connected(); ไม่มีค่าพารามิเตอร์ และตอบกลับมาเป็นผลการเชื่อมต่อ หากกำลังเชื่อมต่ออยู่ให้ค่าเป็น True การรับข้อมูล (Subscribe) – การรับข้อมูลเข้าจะทำงานด้วยเหตุการณ์ โดยจะมีการสร้างฟังก์ชั่นไว้ 1 ตัวเพื่อรอการเรียก เมื่อมีการส่งข้อมูลมาจะเข้าไปเรียกฟังก์ชั่นนั้นขึ้นมาใช้ ฟังก์ชั่นย่อยที่ใช้กำหนดชื่อฟังก์ชั่นที่จะถูกเรียกเมื่อเกิดเหตุการณ์ขึ้นคือฟังก์ชั่นย่อย .setCallback() ซึ่งมีรูปแบบการใช้งานดังนี้ void PubSubClient::setCallback(void (*callback)(char*, uint8_t*, unsigned int)); มีค่าพารามิเตอร์ 1 ตัว คือ
และไม่มีค่าตอบกลับ ฟังก์ชั่นที่ใช้รับข้อมูล (Subscribe) จากเส้นทางที่สนใจ จะใช้ฟังก์ชั่นย่อย .subscribe() มีรูปแบบการใช้งานดังนี้ void PubSubClient::subscribe(const char *topic); มีค่าพารามิเตอร์ 1 ตัว คือ
และไม่มีการตอบกลับ การใช้งานฟังก์ชั่นย่อย .subscribe() มักจะเรียกใช้เมื่อมีการเชื่อมต่อกับ Broker สำเร็จแล้วเท่านั้น การส่งข้อมูล (Publish) – ใช้ฟังก์ชั่นย่อยที่ชื่อว่า .publish() มีรูปแบบการใช้งานดังนี้ bool PubSubClient::publish(const char *topic, const char *payload); มีรายละเอียดของค่าพารามิเตอร์ดังนี้
และมีการตอบกลับเป็นข้อมูลชนิด bool ถ้าส่งข้อมูลสำเร็จจะได้ค่า True ทดลองใช้งาน MQTT ควบคุมหลอด LED ผ่านอินเตอร์เน็ตก่อนอื่นให้ต่อวงจรเพิ่มเติม เนื่องจากหลอด LED ที่อยู่บนบอร์ด NodeMCU-32S ถูกใช้ไปกับการบอกสถานะการเชื่อมต่อ WiFi ดังนั้นจึงต้องต่อหลอด LED เพิ่มเพื่อใช้ในการทดลอง ซึ่งสามารถต่อวงจรได้ดังนี้ จากนั้น เข้าไปคัดลอกโค้ดที่ใช้ทดลองที่ลิ้ง https://goo.gl/sLpxxb แก้ไขส่วนของ WIFI_STA_NAME และ WIFI_STA_PASS ให้ถูกต้อง แก้ไขส่วนที่เกี่ยวข้องกับการเชื่อมต่อ MQTT ทั้งหมด ดังนี้
หลังจากแก้ไขทุกส่วนเรียบร้อยแล้ว สามารถอัพโหลดโปรแกรมลงบอร์ด NodeMCU-32S ได้เลย เปิด Serial Monitor ขึ้นมา ปรับไปที่ 115200 แล้วรอจนกว่าจะสามารถเชื่อมต่อกับ MQTT ได้ ไปที่หน้า Websocket UI ตรงส่วนของ Topic ให้ใส่เป็น /ESP31_1/LED แล้วใส่ Message แล้วกด Send ผลที่ได้คือหลอด LED ที่ได้ต่อไว้เพิ่มติดสว่าง และในหน้า Serial Monitor ก็แสดงผลข้อมูลที่ได้รับออกมา เมื่อทำตามขั้นตอนเดิมแต่เปลี่ยนข้อความเป็น OFF ผลคือหลอด LED ที่ต่อไว้ดับลง หมายความว่าเราสามารถควบคุมหลอด LED ผ่านอินเตอร์เน็ตได้แล้ว สำหรับโค้ดที่ใช้ในการทดลองมีดังนี้ เนื่องจากโค้ดในส่วนของการเชื่อมต่อ WiFi มีเป็นจำนวนมาก และมีการอธิบายในหลาย ๆ ตัวอย่างแล้ว ดังนั้นในครั้งนี้จึงจะอธิบายเฉพาะส่วนของการเชื่อมต่อ MQTT เท่านั้น บรรทัดที่ 2 เรียกใช้ไลบารี่ PubSubClient.h โดยใช้คำสั่ง #include เพื่อเตรียมเชื่อมต่อกับ MQTT Broker บรรทัดที่ 7 กำหนดให้ MQTT_SERVER แทนที่ด้วย “m11.cloudmqtt.com” ใช้กำหนดชื่อโดเมน หรือโฮสของ Broker บรรทัดที่ 8 กำหนดให้ MQTT_PORT แทนที่ด้วย 10384 ใช้กำหนดพอร์ตของ Broker บรรทัดที่ 9 กำหนดให้ MQTT_USERNAME แทนที่ด้วย esp32_1 บรรทัดที่ 10 กำหนดให้ MQTT_PASSWORD แทนที่ด้วย 123456 บรรทัดที่ 15 เรียกใช้ WiFiClient เพื่อเตรียมใช้การเชื่อมต่อแบบ TCP บรรทัดที่ 16 ส่งออปเจคของ WiFiClient ไปให้ไลบารี่ PubSubClient ใช้งานและตั้งชื่อออปเจคเป็น mqtt บรรทัดที่ 18 สร้างฟังก์ชั่นย่อยชื่อ callback() บรรทัดที่ 19 – 20 แปลงค่าตัวแปร topic และ payload ให้เป็นข้อมูลในรูปแบบ String แล้วนำไปเก็บใน topic_str และ payload_str ตามลำดับ บรรทัดที่ 21 แสดงผลข้อความไปที่ Serial Monitor บรรทัดที่ 23 ใช้ Ternary Operators เปรียบเทียบตัวแปร payload_str ว่าเป็น ON หรือไม่ ถ้าใช่ จะส่งค่า HIGH กลับไป และถ้าไม่ใช่ จะส่งค่า LOW กลับไป ค่าที่ส่งกลับไปถูกนำไปใช้เขียนข้อมูลออกขา GPIO แบบดิจิตอลด้วยฟังก์ชั่น digitalWrite() บรรทัดที่ 24 จบคำสั่งในฟังก์ชั่นย่อย callback() บรรทัดที่ 51 ใช้ฟังก์ชั่นย่อย .setServer() กำหนดค่าเตรียมเชื่อมต่อไปยัง MQTT Broker โดยกำหนดชื่อเมนหรือโฮสตาม MQTT_SERVER และกำหนดพอร์ตตาม MQTT_PORT บรรทัดที่ 52 ใช้ฟังก์ชั่นย่อย .setCallback() กำหนดฟังก์ชั่นที่จะเรียกใช้เมื่อมีเหตุการณ์เกิดขึ้น โดยกำหนดให้ไปเรียกฟังก์ชั่น callback บรรทัดที่ 56 ใช้ฟังก์ชั่นย่อย .connected() ตรวจสอบการเชื่อมต่อกับ MQTT Broker แล้วนำค่าไปเทียบในคำสั่ง if หากมีค่าเป็น False หรือไม่มีการเชื่อมต่ออยู่ จะทำคำสั่งในปีกกา บรรทัดที่ 57 แสดงผลไปที่ Serial Monitor บรรทัดที่ 58 ใช้ฟังก์ชั่นย่อย .connect() เชื่อมต่อไปยัง Broker โดยใช้ค่า Username และ Password ตาม MQTT_USERNAME และ MQTT_PASSWORD แล้วนำผลการเชื่อมต่อไปเช็คในคำสั่ง if หากเป็นจริง หรือสามารถเชื่อมต่อได้สำเร็จจะทำในปีกกาของ if บรรทัดที่ 59 แสดงผลไปที่ Serial Monitor บรรทัดที่ 60 ใช้ฟังก์ชั่น .subscribe() กำหนดให้รับข้อมูลที่เส้นทาง /ESP32_1/LED บรรทัดที่ 61 จบคำสั่งใน if และเริ่ม else เมื่อผลการเปรียบเทียบใน if เป็นเท็จ หรือเชื่อมต่อไม่ได้ จะเข้ามาทำคำสั่งในปีกกา else บรรทัดที่ 62 แสดงผลไปที่ Serial Monitor บรรทัดที่ 63 หน่วงเวลา 5000 มิลลิวินาที หรือ 5 วินาที บรรทัดที่ 64 จบคำสั่งในปีกกา else บรรทัดที่ 65 จบคำสั่งในปีกกา if ที่ตรวจสอบการเชื่อมต่อกับ Broker หากการเปรียบเทียบใน if เป็นเท็จ หรือมีการเชื่อมต่ออยู่ จะมาทำปีกกา else บรรทัดที่ 66 เรียกฟังก์ชั่นย่อย .loop() เพื่อให้ไลบารี่ PubSubClient สามารถทำงานต่อไปได้ ทดลองสร้าง MQTT Dashboard ด้วยแอพพลิเคชั่น MQTT Dashในการใช้งานจริงหากต้องการควบคุมหลอด LED ต้องทำได้อย่างสะดวก โดยเปิดแอพพลิชั่น / เว็บไซต์ขึ้นมาก็สามารถควบคุมอุปกรณ์ต่าง ๆ ได้เลย การใช้งาน MQTT เป็นตัวกลางของข้อมูลทำให้เข้าถึงเครื่องมือต่าง ๆ ที่ทำออกมาเพิ่มความสามารถให้ MQTT มากมาย หนึ่งในนั้นคือแอพพลิเคชั่น MQTT Dash ที่ใช้สร้างหน้าควบคุมและแสดงผลได้ง่าย ๆ โดยไม่ต้องพิมพ์โค้ดซักบรรทัดเดียว จากตัวอย่างที่แล้วเราได้ทดลองควบคุมหลอด LED ผ่าน MQTT โดยใช้หน้า Websocket UI กันไปแล้ว ในการทดลองครั้งนี้จะเป็นการใช้แอพพลิเคชั่น MQTT Dash เป็นตัวกลางระหว่างผู้ใช้กับระบบเบื้องหลังทั้งหมด ก่อนอื่นให้ติดตั้งแอพพลิเคชั่น MQTT Dash ก่อน โดยค้นหาคำว่า “MQTT Dash” แล้วกดติดตั้งได้เลย เมื่อเปิดแอพพลิชั่น MQTT Dash ขึ้นมาแล้ว จะต้องสร้างการเชื่อมต่อกับ Broker ชึ้นมาใหม่ โดยกดไปที่ไอค่อนรูป + ที่ด้านมุมขวาบน กรอกข้อมูลแต่ละช่องตามลำดับต่อไปนี้
จากนั้นกดไอค่อนรูปแผ่นดิสท์ที่ด้านมุมบนขวาเพื่อบันทึก แอพพลิเคชั่นจะเด้งกลับมาที่หน้าหลัก แล้วกดเข้าไปที่ชื่อของ Broker ที่ตั้งไว้ จากนั้นรอเชื่อมต่อซักครู่ เมื่อเสร็จแล้วจะแสดงหน้า Dashboard เปล่า ๆ ขึ้นมา ให้กดไปที่ไอค่อนรูป + ด้านบนมุมขวา เพื่อสร้างวัตถุใหม่เพื่อติดต่อกับผู้ใช้ จากนั้นจะเลือกชนิดของวัตถุที่ต้องการเพิ่ม กรณีควบคุมอุปกรณ์ที่มีเพียง 2 สถานะ คือเปิด และปิด ควรเลือกใช้เพิ่มวัตถุแบบ Switch จากนั้นจะปรากฏช่องสำหรับกรอกข้อมูลต่าง ๆ ให้เลือกกรอกดังนี้
นอกจากนี้ไอค่อนใน On และ Off สามารถกำหนดได้ โดยกดที่รูปไอค่อนแล้วเลือกเปลี่ยนได้เลย จากนั้นกดที่ไอค่อนรูปแผ่นดิสท์เพื่อบันทึกข้อมูล แอพพลิเคชั่นจะนำกลับมาที่หน้า Dashboard จะพบว่ามีวัตถุที่สร้างขึ้นมาแล้ว สามารถทดลองกดเพื่อส่งข้อมูลได้เลย หลังจากกดแล้ว จะพบว่าหลอด LED ที่ NodeMCU-32S สามารถควบคุมได้ตามที่ต้องการได้แล้ว เมื่อเข้าไปดูที่หน้า Websocket UI จะพบข้อมูลทั้งหมดที่วิ่งจากแอพ ฯ ผ่าน MQTT Broker ไปยัง ESP32 สรุปท้ายบทในบทนี้เป็นเรื่องเกี่ยวกับการใช้งาน MQTT Broker เป็นตัวกลางในการสื่อสารระหว่างอุปกรณ์ต่าง ๆ ผ่านระบบอินเตอร์เน็ต การใช้งาน MQTT สามารถเลือกใช้บริการได้ทั้งแบบเสียเงิน และแบบฟรี ในการทดลองในบทนี้จะทดลองเกี่ยวกับ LED โดยมีการเปิด – ปิด หลอด LED ได้ผ่านอินเตอร์เน็ตโดยควบคุมผ่านแอพพลิเคชั่นสำเร็จรูปบนโทรศัพท์มือถือ เพื่อเตรียมต่อยอดใช้ MQTT เป็นส่วนประกอบของโครงงานอื่น ๆ ต่อไป ในบทต่อไปจะเป็นเรื่องของ มัลติทาสกิ้ง ซึ่งจะช่วยให้สามารถทำโครงงานได้สะดวกมากขึ้น กลไกเอ็มคิวทีที (MQTT) สื่อสารผ่านตัวกลางที่เรียกว่าอะไรโดยตัวโปรโตคอล MQTT เองไม่ได้ออกแบบให้เชื่อมต่อจากเซิร์ฟเวอร์เข้าไปยังไคลเอนต์แบบ HTTP ที่เว็บเบราว์เซอร์เชื่อมต่อกับเว็บเซิร์ฟเวอร์ แต่ MQTT อาศัยตัวกลางที่เรียกว่า broker ในการเชื่อมต่อไคลเอนต์ในระบบเข้าด้วยกัน ทำให้ไคลเอนต์แต่ละตัวสามารถรับข้อมูลจากไคลเอนต์ตัวอื่นๆ ได้
กลไกการสื่อสาร MQTT เป็นการสื่อสารโดยใช้วิธีการแบบใดMQTT (Message Queuing Telemetry Transport) เป็นโปรโตคอลสำหรับใช้ส่งข้อความระหว่างอุปกรณ์ โดยใช้โมเดลเน็ตเวิร์คแบบ publish-subscribe ซึ่งจะแตกต่างจากโปรโตคอลอื่นๆโดยส่วนมากที่ใช้โมเดล Server-Client ในการรับส่งข้อมูล ตัวโปรโตคอลรันอยู่บนเทคโนโลยี TCP/IP จึงทำให้การส่งข้อมูลนั้นไม่มีการ loss ระหว่างทาง MQTT ถูกพัฒนาขึ้นมา ...
องค์ประกอบพื้นฐานของกลไก MQTT มีกี่องค์ประกอบ อะไรบ้าง?ซึ่ง MQTT เป็นชื่อเรียกสำหรับโปรโตคอลนี้เท่านั้น โดยหลักการทำงานของ MQTT จริง ๆนั้นมีส่วนประกอบ 3 อย่างคือ ผู้ส่ง (publish) , ผู้รับ (subscribe) และ ตัวกลาง (MQTT broker) โดยผู้รับหรือผู้ส่งจะใช้อุปกรณ์ชนิดไหนก็ได้ ขอเพียงมีแอพพลิเคชั่นหรือโปรแกรมที่รองรับโปรโตคอล MQTT ก็เพียงพอแล้ว
ข้อตกลงระหว่างผู้ส่ง(Publisher) ผู้รับข้อมูล (MQTT Broker) ในการรับประกันการส่งข้อมูลมีกี่ระดับ อะไรบ้างQoS (Quality of Service) 3 ระดับ คือ ข้อตกลงระหว่างผู้ส่ง (Publisher) และผู้รับ (MQTT Broker) ในการรับประกันการส่งข้อมูล QoS Level 0 : การส่งข้อมูลที่มีการรับประกันผลในระดับต่ำสุด หรือเป็นข้อมูลที่ต้องการความรวดเร็วในการส่ง คือ ไม่ต้องการการตอบกลับว่าข้อมูลถึง MQTT Broker แล้ว
|