Lesson 12 : ก้าวเข้าสู่ IOT – ตอนที่ 2 ทดสอบเจ้ายุงน้อย(MQTT) บน Windows กัน

ในบทเรียนนี้จะแนะนำให้รู้จักกับ Protocol MQTT เพื่อประยุกต์ใช้งานกับ IOT สนุกแน่นอนครับ เริ่มกันเลย!!

ระดับความยาก :  

สิ่งที่จะได้จากบทเรียนนี้

บทความนี้ผมอ้างอิงจาก URL ดังนี้ครับ (ขอขอบพระคุณล่วงหน้าครับ)
1. http://mqtt.org/
2. http://workswithweb.com/mqttbox.html
3. https://mosquitto.org/
4. https://sivatechworld.wordpress.com/2015/06/11/step-by-step-installing-and-configuring-mosquitto-with-windows-7/

อุปกรณ์

ลำดับชิ้นส่วนจำนวน
1Notebook หรือ Computer1 เครื่อง

เริ่มกันเลย!!!
1. รู้จักกันก่อน : MQTT Protocol ถูกคิดค้นโดยบริษัท IBM และ Arcom(Eurotech) ในปี 1999 เป็น Protocol ที่ใช้ในการติดต่อสื่อสารหรือรับส่งข้อความ ระหว่างอุปกรณ์และอุปกรณ์ มันเหมาะที่จะนำมาใช้กับ IOT อย่างมาก เนื่องจากใช้ Brandwidth น้อย และไม่จำเป็นต้อง Specification ของอุปกรณ์สูงในการรับส่งข้อมูล รวมทั้ง Message ที่รับส่งกัน ก็มีขนาดเล็กอีกด้วย

ในเรื่องความปลอดภัย สำหรับ Protocol MQTT Version 3.1 รองรับมาตรฐาน SSL แล้ว
สำหรับ Port ที่ใช้ การเชื่อมต่อปกติจะใช้ Port 1883 และสำหรับ SSL จะใช้ Port 8883 ดังนั้นในการทดลองนี้
ระมัดระวังเรื่อง Firewall ในเครื่องของเราด้วยนะครับ

2. องค์ประกอบของ MQTT Protocol ประกอบด้วย 2 ส่วนสำคัญ ดังนี้

2.1 MQTT Server เป็นเครื่องแม่ข่ายหรืออุปกรณ์ ซึ่งทำหน้าที่บริหารจัดการ การรับส่งข้อมูลระหว่าง Client ต่าง ๆ ซึ่ง
ใน Protocol นี้จะเรียกว่า Broker (ขอให้จินตนาการว่าเป็น Facebook Server ครับ)

2.2 MQTT Client เป็นเครื่องหรืออุปกรณ์ ที่ต้องการรับส่งข้อมูลกับ Broker (ขอให้จินตนาการว่าเป็นสมาชิก Facebook
ทุก ๆ คนครับ) โดยจะแบ่งประเภทข้อความในการสื่อสารออกเป็น 2 ประเภท คือ

Subscriber เป็น Message สำหรับลงทะเบียนหัวข้อ(Topic) เพื่อใช้เป็น Topic อ้างอิงในการสื่อสาร
เมื่อ Client ส่ง Message Subscriber ไปที่ Broker แล้ว Broker จะจดจำ Client นั้นไว้ว่าได้ลงทะเบียน Topic อะไรไว้
และเมื่อมี Publish Message มาที่ Topic นั้น ๆ Broker จะ Forward ข้อความนั้น ๆ มาให้ (เปรียบเทียบเป็นสมาชิก
Facebook ซักคนเริ่มสร้างโพสแรก หรือ สมาชิก Facebook คนอื่น ๆ มากด Like ที่โพสครับ การสร้างโพสและLike โพสนี้
คือการ Subscriber ครับ)

Publish เป็น Message เพื่อส่งข้อมูลให้กับ Topic นั้น ๆ โดยทุก ๆ Message จะมีเวลาติดมาด้วยเสมอ
และจะไม่มีการทับ Message ก่อนหน้า (เปรียบเทียบเป็นเพื่อน ๆ มา Comment ใน Post ของเรา ดังนั้นเราที่สร้างโพสและ
เพื่อนๆ ที่มากด Like ที่โพสนั้นก็จะเห็นด้วย)

ที่ผมเล่ามาอาจงง ๆ ขออธิบายด้วย Sequence Diagram นี้ละกันนะครับน่าจะเข้าใจง่ายกว่าครับ

หากยังไม่เข้าใจ ลองดู Diagram เปรียบเทียบกับการใช้งาน Facebook ด้านล่างนี้ครับ

3. ลองใช้งานจริงกันเลยดีกว่าครับ ติดตั้ง Broker กันก่อนครับ MQTT Broker มีหลายค่าย พัฒนาขึ้นมา
ให้ได้ใช้งาน เช่น HiveMQ, Mosquitto,CloudMQTT, Eclipse IoT เป็นต้น ลองเข้าไปศึกษากันต่อได้ที่นี่ครับ
ในบทความนี้ผมเลือกใช้ Mosquitto ครับ วิธีติดตั้งมีดังนี้ครับ

3.1 Download โปรแกรม Mosquitto จาก URL นี้ครับ
https://mosquitto.org/

3.2 ติดตั้งโปรแกรมที่ได้ Download มาโดยเมื่อคลิกที่ไฟล์ mosquitto-1.4.14-install-win32.exe แล้วนั้น
ระบบจะแจ้งให้เราติดตั้งโปรแกรม เพิ่มอีก 2 ตัวด้วย OpenSSL และ pthreads ก่อนเนื่องจาก Mosquitto
ต้องการใช้ Dll บางตัวจาก 2 โปรแกรมนั้น ให้เราค้างที่ Popup นี้ไว้ก่อนอย่าเพิ่งกดปุ่ม Next
ขั้นตอนต่อไปเราจะไปติดตั้ง OpenSSL และ pthreads ให้เรียบร้อยก่อน
(ทำข้อ 3.2.1 และ 3.2.2 ให้เรียบร้อยก่อน แล้วไปต่อที่ข้อ 3.3 ครับ)

3.2.1 ให้คลิกที่ Link แรก เพื่อเปิดหน้า Browser สำหรับติดตั้ง OpenSSL และเลื่อนหน้าจอมาจบพบ
Link ตามภาพด้านล่างนี้และ Save ได้เลยครับ

จากนั้นให้ Double Click ที่ไฟล์ Win32OpenSSL_Light-1_1_0f.exe ที่ได้ Download มาและทำการ Setup
ตามคำแนะนำของระบบ

3.2.2 ทำการติดตั้ง pthreads โดยเปิดที่ URL ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/dll/x86/
ตามรูปในข้อ 3.2 และทำการ copy dll มาไว้ใน folder ที่เราต้องการ

3.3 เมื่อติดตั้ง OpenSSL และ pthreads เสร็จแล้ว ให้กลับมาที่ Popup ที่ค้างไว้ที่ข้อ 3.2 กันต่อครับ
ให้คลิก Next ได้เลยครับ (ให้จด Path ที่ติดตั้ง Mosquitto ไว้ด้วยนะครับ) และดำเนินการ Setup
ต่อไป 2-3 ขั้นตอนก็จะติดตั้งระบบเสร็จครับ แต่อย่าเพิ่ง Run Service นะครับ

3.4 เมื่อติดตั้งเสร็จแล้ว ต้อง Copy Dll จาก OpenSSL และ pthreads ก่อนครับ โดยให้เปิด
Path ที่ติดตั้ง Mosquitto และ Copy Dll ตามสองข้อด้านล่างนี้ครับ (3.4.1 และ 3.4.2)

3.4.1 Copy Dll ดังรูปนี้จาก OpenSSL มาวางใน Folder ของ Mosquitto ครับ

3.4.2 Copy Dll ดังรูปนี้จาก pthreads มาวางใน Folder ของ Mosquitto ครับ

3.5 Start Mosquitto Service ได้เลยครับ และตรวจสอบว่า Port 1883 นั้นเปิดพร้อมให้ติดต่อสื่อสารหรือยังครับ

**ขณะนี้ MQTT Broker ติดตั้งเรียบร้อยแล้วครับ ขั้นตอนต่อไปเรามาทดสอบการสื่อสารกันครับ

4. เราลองติดตั้ง Client จำลอง เพื่อทดสอบความเข้าใจการใช้งาน MQTT กันครับ มี MQTT Client
หลายตัวที่สามารถนำมาทดลองได้เช่น MQTTLens MQTTBox เป็นต้น สามารถใช้ได้ทั้ง 2 ตัวครับ
บทความนี้ผมเลือกใช้ MQTTBox ละกันนะครับ ให้ทำดังนี้ครับ

4.1 ติดตั้ง MQTTBox ผ่าน Chrome ครับ โดยเข้าไปที่ URL
https://chrome.google.com/webstore/search/mqtt จากนั้นกดปุ่ม Add To Chrome

4.2 หลังจากติดตั้งโปรแกรม MQTTBox เสร็จแล้ว(MQTTBox จะอยู่ใน Chrome://apps )ก็เปิดขึ้นมาได้เลยครับ จะพบหน้าจอด้านล่าง
ให้ Click ที่ปุ่ม Create MQTT Client ก่อนครับ

4.3 เมื่อเปิดหน้าต่างสร้าง MQTT Client ขึ้นมาแล้ว ให้ระบุ 3 ช่องดังนี้
1. ชื่อ MQTT Client ตามที่ต้องการครับ
2. Protocal เลือกเป็น TCP ครับ
3. กำหนด IP เป็น IP ของเครื่องเราครับ

4.3.1 วิธีการตรวจสอบ IP ของเครื่องให้ใช้คำสั่ง Ipconfig ที่หน้าต่าง Command Prompt

4.4 เมื่อได้ Client ตัวที่ 1 มาแล้วให้ลองสร้าง Client ตัวที่ 2 ด้วยวิธีเดียวกันครับ
โดยให้เปิด Chrome ขึ้นมาอีกหน้าจอหนึ่งครับ

4.5 ย้อนมาที่หน้าจอที่ของ Client ตัวที่ 1 ให้ลอง Subscriber Message ได้เลยครับ โดย
ให้กดปุ่ม Add Subscriber และระบุชื่อ Topic ตามต้องการและกดปุ่ม Subscribe

**หาก MQTTBox ขึ้น Connection Error ให้ตรวจสอบหมายเลข IP ดูครับ

เมื่อ Client Subscriber สำเร็จจะปรากฏหน้าต่างดังภาพด้านล่างนี้ครับ ผมใช้ Topic ชื่อว่า Room1/Light1/

4.6 ไปที่หน้าต่าง Client ที่ 2 ครับ ลอง Publish Message มาที่ Topic Room1/Light1/
โดยคลิก Add Publisher และระบุข้อมูล ดังภาพนี้ครับ จากนั้นกดปุ่ม Publish ได้เลยครับ

4.7 ข้อความก็จะไปปรากฏที่หน้าต่างของ Client ที่ 1 ดังภาพนี้ครับ มาถึงขึ้นตอนนี้การทดสอบการใช้งาน MQTT สำเร็จแล้วครับ
ลอง Add publisher ตามที่ต้องการ และใส่ Payload ใหม่ ๆ ได้เลยครับ

5. ตอนนี้เราได้ติดตั้ง MQTT Broker สำเร็จแล้ว พร้อมที่จะรองรับการติดต่อจาก Client ของเราแล้วครับ
ดังนั้นบทความต่อไป ก้าวเข้าสู่ IOT – ตอนที่ 3 เราจะใช้ Arduino + ESP8266 เป็น Client เชื่อมต่อเข้าไปที่ MQTT Broker กันครับ

หมายเหตุ บทความนี้ยาวไปหน่อยนะครับ ผมพยายามลงขั้นตอนให้ระเอียดมากที่สุดเพื่อให้ทุกคนทำตามได้ง่าย ๆ ครับ
ขอบพระคุณครับ 😀

Next Step :
บทความต่อไป จะใช้ Arduino ติดต่อไปที่ Broker นะครับ โปรดติดตาม

Share ผลงาน
เมื่อน้อง ๆ ทำสำเร็จแล้วอย่าลืมแชร์ให้เพื่อนๆ ดูได้ที่ Facebook MrMakerThailand
และหากน้อง ๆ ทำไม่ได้ ให้ติดต่อมาได้ตลอดเวลาที่ Inbox นะครับ