MQTT
รายละเอียด (Description)
ปลั๊กอิน MQTT สำหรับโปรแกรม KidBrightIDE ใช้กับบอร์ด KidBright32 / OpenKB
MQTT เป็นโปรโตคอลที่นิยมใช้ด้าน IoT ใช้สำหรับการติดต่อสื่อสารระหว่างอุปกรณ์ เช่น สื่อสารระหว่างบอร์ด KidBright กับบอร์ด KidBright หรือระหว่าง KidBright กับโทรศัพท์มือถือ หรือระหว่าง KidBright กับคอมพิวเตอร์
ปลั๊กอินนี้เข้าควบคุมหลอดแอลอีดี IoT บนบอร์ด KidBright32 / OpenKB เมื่อเชื่อมต่อกับ MQTT Broker ได้ หลอดแอลอีดี IoT จะติดสว่าง
วีดีโอตัวอย่างการใช้งาน
ใช้บอร์ด OpenKB ควบคุมรีเลย์และแสดงค่าอุณหภูมิบนโทรศัพท์มือถือ
การติดตั้ง
ดาวน์โหลดไฟล์ปลั๊กอินที่ด้านล่างของหน้านี้ จากนั้นเปิดโปรแกรม KidBrightIDE ขึ้นมา กดที่ Plugins เลือก Install Plugins จากนั้นรอติดตั้งปลั๊กอินซักครู่ แล้วโปรแกรม KidBrightIDE จะปิดแล้วเปิดใหม่อัตโนมัติ จากนั้นกดที่เมนู Plugins > MQTT จะมีบล็อกใหม่เพิ่มเข้ามาแล้ว
หมายเหตุ ปลั๊กอินนี้รองรับโปรแกรม KidBrightIDE เวอร์ชั่นล่าสุด
บล็อกที่มีให้ใช้งาน
ปลั๊กอิน MQTT มีบล็อกใช้งาน ดังนี้
MQTT Config
ใช้ตั้งค่าการเชื่อมต่อไปยัง MQTT Broker ซึ่งเป็นเซิร์ฟเวอร์กลางบนอินเตอร์เน็ต ใช้ส่งต่อข้อมูลจากอุปกรณ์ถึงอุปกรณ์ สามารถดูรายชื่อ MQTT Broker ฟรีได้ที่ # 10 Free Public MQTT Brokers(Private & Public)
พารามิเตอร์ที่จำเป็นต้องใส่ในบล็อกนี้คือ Host (ใช้บล็อกข้อความมาต่อ) ใช้กำหนดหมายเลข IP หรือโดเมนของ MQTT Broker ส่วนพารามิเตอร์ Port (ใช้บล็อกตัวเลขมาต่อ) เป็นหมายเลขพอร์ต TCP ของ MQTT Broker (มักเป็น 1883) ส่วนพารามิเตอร์ Client Id ใช้กำหนดชื่ออุปกรณ์ของตัวเอง กรณีใช้ NETPIE2020 จำเป็นต้องกำหนด Client Id ให้ตรงกับที่ผู้ให้บริการให้มา
MQTT on Connected
เป็นบล็อกที่ใช้ใส่บล็อกที่ต้องการให้ทำงานเมื่อเชื่อมต่อกับ MQTT Broker ได้สำเร็จ
MQTT is connected ?
ใช้ตรวจสอบว่าขณะนี้กำลังเชื่อมต่อกับ MQTT Broker อยู่หรือไม่ โดยให้ค่าเป็น true หรือ 1 เมื่อกำลังเชื่อมต่ออยู่ และให้ค่าเป็น false หรือ 0 เมื่อไม่ได้เชื่อมต่ออยู่
MQTT Publish
ใช้ส่งข้อมูล (Publish) ไปที่ Topic ที่ต้องการ โดยพารามิเตอร์ Topic คือ Topic ที่ต้องการ และ data คือข้อมูลที่ต้องการส่ง รองรับบล็อกข้อความ บล็อกตัวเลข
หมายเหตุ. กรณีใส่บล็อกตัวเลขลงในพารามิเตอร์ data ตัวเลขจะถูกแปลงเป็นข้อความแล้วจึงส่งออก
MQTT Subscribe
ใช้รับข้อมูลจาก Topic ที่ต้องการ รองรับ Topic แบบ Wildcard ทั้งแบบ Single Level และ Multi Level
เมื่อได้รับข้อมูลจาก Topic ที่กำหนด บล็อกที่อยู่ภายในบล็อกนี้จะถูกเรียกใช้ และสามารถดูชื่อ Topic เต็ม ๆ ได้โดยใช้บล็อก MQTT get topic
และเรียกใช้ข้อมูลที่ส่งเข้ามาได้ด้วยบล็อก MQTT get payload ...
หมายเหตุ. บล็อก MQTT Subscribe
ควรอยู่ในบล็อก MQTT is connected ?
เพื่อให้เริ่มรับข้อมูลจาก Topic ได้ทันทีที่เชื่อมต่อ MQTT Broker ได้
MQTT get topic
ใช้ดู Topic ที่ส่งข้อมูลมา ต้องเรียกใช้งานภายในบล็อก MQTT Subscribe
เท่านั้น
MQTT get payload number
ใช้อ่านข้อมูลที่ส่งเข้ามาในรูปแบบตัวเลข ต้องเรียกใช้งานภายในบล็อก MQTT Subscribe
เท่านั้น
MQTT get payload text
ใช้อ่านข้อมูลที่ส่งเข้ามาในรูปแบบข้อความ ต้องเรียกใช้งานภายในบล็อก MQTT Subscribe
เท่านั้น
ตัวอย่างการใช้งาน
ควบคุมรีเลย์และแสดงค่าอุณหภูมิบนโทรศัพท์มือถือ
ที่โปรแกรม KidBrightIDE หลังจากติดตั้งปลั๊กอิน MQTT แล้ว ให้ต่อบล็อกดังนี้
จากโค้ดโปรแกรมด้านบน อธิบายตามลำดับได้ดังนี้
- ใช้บล็อก
Write Output
สั่งให้รีเลย์ที่ต่ออยู่ที่ขา OUT1 ไม่ทำงาน (รีเลย์ที่ใช้เป็นแบบ Active LOW ดังนั้นสั่ง off => on และสั่ง on => off) - ใช้บล็อก MQTT Config ตั้งค่าการเชื่อมต่อไปที่ MQTT Broker ฟรี ที่
mqtt.eclipse.org
และพอร์ต1883
กำหนดชื่ออุปกรณ์เป็นMyOpenKB
- ใช้บล็อก
MQTT on Connected
เพื่อกำหนดบล็อกที่จะถูกเรียกเมื่อเชื่อมต่อกับ MQTT Broker ได้- ใช้บล็อก
MQTT Subscribe
กำหนดรับข้อมูลจาก Topic/openkb/out/1/set
และกำหนดบล็อกที่จะถูกเรียกเมื่อได้รับข้อมูลมาจาก Topic ดังกล่าว- ใช้บล็อก
if
ตรวจสอบว่าข้อมูลที่ได้รับมา เป็น 1 หรือไม่ (1 = true) ถ้าใช่ - ใช้บล็อก
Write Output
สั่งให้รีเลย์ที่ต่ออยู่ที่ขา OUT1 ทำงาน - ถ้าไม่
- ใช้บล็อก
Write Output
สั่งให้รีเลย์ที่ต่ออยู่ที่ขา OUT1 ไม่ทำงาน
- ใช้บล็อก
- ใช้บล็อก
- ใช้บล็อก Forever กำหนดบล็อกที่จะถูกให้เรียกทำงานตลอดเวลา
- ใช้บล็อก
MQTT Publish
ส่งค่าอุณหภูมิไปที่ Topic/openkb/sensor/temp
- ใช้บล็อก
Delay
หน่วงเวลาการส่งค่าอุณหภูมิ 5 วินาที
- ใช้บล็อก
ตั้งค่าการเชื่อมต่อ WiFi ที่เมนู WiFi Config แล้วอัพโหลดโปรแกรมลงบอร์ด
หลังจากอัพโหลดโปรแกรมลงบอร์ด สังเกตหลอดแอลอีดี WiFi จะต้องติดสว่าง จากนั้นหลอดแอลอีดี IOT จะติดสว่าง แสดงว่าสามารถเชื่อมต่อกับ MQTT Broker ได้แล้ว และคาดว่าข้อมูลสามารถรับ-ส่งได้แล้ว
การทดสอบว่าบอร์ด KidBright32 / OpenKB สามารถรับ-ส่งข้อมูลได้หรือไม่ ให้ใช้เครื่องมือ MQTT Websocket Client ในการตรวจสอบ โดยเข้าไปใช้ได้ที่ http://www.hivemq.com/demos/websocket-client/
หลังจากเข้าไปใน MQTT Websocket Client แล้ว ให้กรอกข้อมูล Host ให้ตรงกับในโค้ด คือ mqtt.eclipse.org
และใส่หมายเลขพอร์ตของ Web Sockets ซึ่งมักจะเป็น 80 หาก MQTT Broker ที่ใช้บริการมี Username และ Password ก็จำเป็นจะต้องใส่ Username และ Password ด้วย สำหรับ mqtt.eclipse.org
ไม่มี จึงไม่ต้องใส่ จากนั้นกดปุ่ม Connect
เมื่อเชื่อมต่อได้แล้ว จะขึ้นข้อความ connected พร้อมย่อส่วนของ Connection
การทดสอบ เริ่มจาก Subscribe ไปที่ Topic /openkb/sensor/temp
เพื่อดูว่ามีค่าอุณหภูมิส่งมาหรือไม่ โดยกดปุ่ม Add New Topic Subscription
ช่อง Topic ใส่ /openkb/sensor/temp
แล้วกดปุ่ม Subscribe
สังเกตตรง Subscriptions จะมี /openkb/sensor/temp
ขึ้นมาแล้ว รอซักครู่ จะมีค่าอุณหภูมิแสดงขึ้นมาในส่วนของ Messages
ทดลองควบคุมการทำงานของรีเลย์ โดยทดลองส่งข้อความ (Publish) ไปที่ Topic /openkb/out/1/set
โดยใส่ /openkb/out/1/set
ในช่อง Topic จากนั้นใส่เลข 1 ลงในช่อง Message จากนั้นกดปุ่ม Publish รีเลย์จะทำงาน
ทดสอบอีกครั้งโดยเปลี่ยน Message เป็น 0 แล้วกด Publish รีเลย์จะตัดการทำงาน
เป็นอันจบการทดสอบเชื่อมต่อกับ MQTT แล้ว
ขั้นตอนต่อมาคือการตั้งค่าแอพพลิเคชั่นบนโทรศัพท์มือถือ ให้ส่งข้อมูลไปยังบอร์ด KidBright / OpenKB
ดาวน์โหลดแอพพลิเคชั่น Mqtt Dashboard จาก Google Play
เปิดแอพพลิเคชั่นขึ้นมา กดที่ปุ่ม Add first broker
จะแสดงหน้าต่าง Edit broker ขึ้นมา ให้ใส่ข้อมูลดังนี้
- Broker - กำหนดเป็นอะไรก็ได้ ตัวอย่างกำหนดเป็น MQTT
- tcp://.... - กำหนดเป็น Host ของ MQTT Broker
- 1883 - กำหนดพอร์ตของ MQTT Broker
- กดปุ่มบันทึก
กรณี MQTT Broker ต้องใช้ Username Password ให้กดตรง Broker Protection จะมีให้กรอก Username Password ขึ้นมา
จากนั้นแอพจะพามาหน้าหลักของบอร์ด ให้กดปุ่ม + เพื่อเริ่มเพิ่มวัตถุที่ต้องการให้แสดงผลในบอร์ด
กดเลือกประเภทวัตถุเป็นแบบ Standaed
กดเลือกวัตถุเป็น Button เพื่อทำปุ่มสำหรับเปิดรีเลย์
แอพจะแสดงหน้า Edit tile ขึ้นมา ให้กรอกข้อมูลดังนี้
- Tile name กรอกชื่อของวัตถุ ตัวอย่างกำหนดให้วัตถุนี้เมื่อกดแล้วจะทำให้รีเลย์ทำงาน จึงกำหนดเป็น ON
- Publish topic กำหนด topic ที่ต้องการส่งข้อความไปเมื่อกดที่วัตถุนี้ ตัวอย่างต้องการควบคุมรีเลย์จึงใส่
/openkb/out/1/set
- Payload กำหนดข้อความที่ต้องการส่ง ตัวอย่างกำหนดเป็น 1
จากนั้นกดเครื่องหมาย ? เพื่อเปลี่ยนสีและไอค่อนของวัตถุนี้
เลือกสีและไอค่อนของวัตถุตามต้องการ ตัวอย่างเลือกสีเขียว และไอค่อนเป็นรูปหลอดไฟ จากนั้นกด Save
แอพจะพากลับมาหน้า Edit tile ให้กด Paint card background เพื่อกำหนดให้ใส่สีในพื้นหลังของวัตถุ แล้วกดปุ่มรูปแผ่นดิสก์เพื่อบันทึก
แอพจะพากลับมาหน้าหลัก พร้อมแสดงวัตถุ ON ที่ได้สร้างขึ้นใหม่
สร้างวัตถุ OFF ขึ้นมาโดยทำตามขั้นตอนเดิม แต่เปลี่ยน Payload เป็น 0 แทน ส่วน Topic กำหนดเป็น /openkb/out/1/set
เช่นเดิม
สร้างวัตถุแสดงผลค่าอุณหภูมิที่วัดได้ โดยเลือกชนิดของวัตถุเป็น Text
กรอก Subscribe topic เป็น /openkb/sensor/temp
แล้วกดตรง Enable publishing ให้เครื่องหมายติ๊กถูกหายไป
กำหนดสีและไอค่อนตามต้องการ กดปุ่มรูปแผ่นดิสก์เพื่อบันทึก
แอพจะพากลับมาหน้าหลัก ทดลองกดปุ่ม ON จะพบว่ารีเลย์ทำงาน และกดปุ่ม OFF รีเลย์จะหยุดทำงาน และที่วัตถุ Temp จะแสดงค่าอุณหภูมิที่วัดได้ออกมา อัพเดทค่าทุก ๆ 5 วินาที
เวอร์ชั่น (Version)
MQTT Plugin V1.0
- ชื่อไฟล์: mqtt_plugin_v1.0.zip
- MD5: 47773e2675b08b5694cbb1aeea215269
- ขนาด: 8.50 kB
- ดาวน์โหลดแล้ว: 1676 ครั้ง
- เพิ่มเมื่อ: วันอังคารที่ 2 มิถุนายน พ.ศ.2563 15:12 น.
- ดาวน์โหลดเวอร์ชั่นนี้ หรือ ดูบล็อกตัวอย่าง