IoT Weekend: ควบคุมการเปิด/ปิดหลอดไฟด้วย LINE Bot ผ่าน Messaging API และ MQTT Protocol [ver. 2018] Part 1

Krisada Vivek
LINE Developers Thailand
4 min readJul 31, 2018

สวัสดีครับ ทุกๆท่าน ผมโม ตอนนี้ทำงานเป็น Software Engineer อยู่ที่ LINE เนื่องจากวันหยุดยาวที่ผ่านมา (27–30 กรกฎา 2018) เกิดความซน อยากสร้างโน้นนี่นั่น เลยจัดเป็น IoT Weekend นั่งซนเขียนโปรแกรม ตลอดช่วงการเดินทาง พกคอมคิดตัวไปเที่ยวด้วย โดยบทความเกี่ยวกับทความในครั้งนี้ผม โม จะนำทุกท่านไปสร้าง LINE Bot โดยใช้ LINE Messaging API และ MQTT Protocol ในการสื่อสารระหว่าง อุปกรณ์ Internet of Things และ Smart Phone เพื่อใช้ควบคุมเปิดปิดหลอด LED ผ่าน LINE ChatBot ได้อย่างง่ายมั่กๆ

โครงสร้างคร่าวๆ ที่วางไว้

KeyWording จะได้พูดถึงในบทความ(ทั้ง 3 Part)นี้

Internet of Things (IoT)Arduino, ESP32, MQTT, Pub-Sub, Ruby, Sinatra, ChatBot, SmartHome

รู้จักกับ LINE Messaging API กันเถอะ

LINE Messaging API คือ API ที่ทำการเชื่อมต่อระหว่าง ผู้ใช้ผ่านทาง LINE Official Account ซึ่งด้วย API นี้เราจะสามารถ add friend, ส่ง message รูปแบบต่างๆหา ผู้ใช้งานคนอื่นๆ (1-to-1 chat) ที่ add ตัวเราเป็นเพื่อน

การใช้งาน Messaging API สามารถส่งข้อมูลระหว่าง server ไปยัง ผู้ใช้งาน LINE ผ่านทาง LINE Platform ซึ่ง Request ที่ใช้ส่งข้อมูล จะต้องอยู่ในรูปของ JSON format, โดยตัว server นั้นจะต้องเชื่อมต่อกับ LINE Platform และเมื่อมี ผู้ใช้งานคนอื่นๆ ส่งข้อความมาหาเรา, LINE Platform จะทำการส่ง request (API callback) มายัง server ที่เราตั้งผูกไว้กับ LINE account วิธีนี้เรียกว่า Webhook ซึ่งทำให้ผู้ใช้งานรู้สึกเหมือนกับว่าได้โต้ตอบกับคนจริงๆ (Bot API)

รู้จักกับ MQTT

MQTT Pub-Sub และ Broker

MQTT เป็นการส่งข้อมูลขนาดเบาที่ได้ความนิยมใช้สำหรับการสื่อสารในโลกของ IoT (Pub-Sub) มีไลบารี่ให้พร้อมนำไปใช้สำหรับภาษาต่างๆ อาทิเช่น Ruby Go Python JS C/C++ เป็นต้น โดยหลักทำงานอยู่บนฐานของส่งข้อมูลแบบ TCP

การทำงานของ MQTT นั้น สิ่งที่ต้องมีคือ Server กลาง หรือที่เราเรียกกันว่า Broker นอกจากนี้จะต้องมี Publisher หรือเรียกสั้นๆว่า Pub แปลเป็นง่ายๆก็คือ คนปล่อย ซึ่งในที่นี้คือเจ้ามือถือของเราที่ Publish message ออกไปและสิ่งสุดท้ายก็คือ Subscriber หรือเรียกสั้นๆว่า Sub, คือคนรับ message เหล่านั้น (ซึ่งในที่นี้คือเจ้า อุปกรณ์ IoT) โดยจะส่ง/รับ เนี่ยเราก็จำเป็นจะต้องบอก หัวข้อ-Topic ให้รู้ว่าที่ส่งมาคืออะไร แล้วให้ผู้รับเนี่ยรอฟัง หัวข้อ-Topic อะไร เพื่อไม่ให้เกิดการตีกัน/ชนกันของข้อความที่ถูกส่งเข้ามา

สิ่งที่ใช้ในการทำครั้งนี้นะครับ

  1. Heroku Account
    - มี server 2 ตัว อันนึงเอาไว้วาง เจ้า LINE Bot กับ อีกอันเอาไว้ วาง MQTT Broker (Part 1+2)
  2. LINE Developer Account สำหรับสร้าง DevTrial BoT (Part 2)
  3. IoT Device
    - ซึ่งในที่นี้โมใช้ ESP32 กับ LED สีแดง 1 ดวง (Part 3)

บทความนี้จะถูกแบ่งออกเป็น 3 Part เพื่อจะได้คลอบคลุมการทำงานทุกอย่าง โดยจะเริ่มจาก การตั้ง MQTT Server บน บน Heroku, ต่อด้วยการ สร้าง Bot ด้วย LINE DevTrail Account และจบท้ายด้วย สร้าง IoT Device กัน มาสนุกกัน!!!

ขอเปิดด้วย Part 1 ลองเล่นกับ MQTT Protocol กันก่อน

สมัครใช้งาน/สร้างฟรี MQTT Server จาก CloudMQTT ที่ตั้งไว้บน Heroku

  • ขั้นตอนแรกคือ สมัครใช้งาน Heroku (Free Account) เข้าไปที่ลิ้งค์ https://www.heroku.com/ ลงทะเบียนให้เสร็จสรรพ

อย่างที่เห็น เจ้า Heroku เป็น Platform ที่ไว้ให้สำหรับนักพัฒนาเข้ามาสร้างทดลองเล่น Application มีหลากหลายภาษาให้เลือกพัฒนาอาทิเช่น Nodejs, Ruby, JAVA, PHP, Python, Go, Scala และ Clojure

  • ขั้นตอนที่สอง เมื่อลงทะเบียนเสร็จเรียบร้อย ตัวเว็บจะนำเข้าไปที่ลิ้ง https://dashboard.heroku.com/ ตรง ปุ่ม new กด create-new-app เพื่อทำการสร้าง Heroku Intance แรกของเรา

ตั้งชื่อ intance ที่เราตามต้องการ แล้วกด create-app

  • ขั้นตอนที่ 3 เมื่อเราได้ server ขอ Heroku มาเป็นที่เรียบร้อย ให้กดเข้าไปที่ Overview/configure-add-on/find-more-add-on แล้วค้นหา CloudMqtt Add-on

เลือก Plan การใช้งาน และเตรียมพร้อมฝั่ง MQTT Server

เมื่อเลือก add-on แล้ว เราก็จะสามารถเลือก Price ของเจ้า add-on ในที่นี้โมเลือก Cute Cat ซึ่งเป็นแบบฟรีไป (ยิ่งแพงยิ่งความสามารถเยอะ)

กดปุ่มนี้ๆ

หลังการที่ ตัว Heroku ได้ทำการติดตั้ง add-on เป็นที่เรียบร้อย จะแสดงผลดังนี้

  • ขั้นตอนที่ 4 คือเข้าไป Config เจ้า MQTT Server ที่เราได้สร้างขึ้นมา
ในหน้าแรก จะบอกรายละเอียดดีงกว่าเพื่อใช้ในการเชื่อต่อ

เมื่อเราเข้าไปสู่หน้าแรกของ MQTT Server ของเรา สิ่งที่แสดงอยู่บนหน้าจอคือ ข้อมูลเบื้องต้นของ Broker ที่เราจะต้องใช้ค่าเหล่านี้ใน Part ต่อไป เอาไว้ใช้อุปกรณ์ Application ภายนอกเข้ามาเชื่อมต่อกับ Broker เรา (ขอยกไปอธิบายใน Part ต่อๆไปนะครับ ว่าสิ่งเหล่านี้คืออะไร ><)

ต่อไป เราก็ไปทำการสร้าง User ด้วยการเข้าไปในหน้า Users and ACL

(ภาพบน) ให้สร้าง Username กับ Password เพื่อเอาไว้ใช้บอกว่าใครเป็นคนส่ง Message นี้เข้ามา, (ภาพล่าง) เอาไว้ สร้าง path Topic

ACLs ตรงส่วนนี้จะเป็นส่วนที่ไว้กำหนดว่า User คนใด สามารถฟัง (Read) หรือประกาศ (Write) Topic ใดได้บ้าง เลือก Tap Topic จากนั้นิ เลือก User ตั้งจากแถบข้างบน จากนั้นในช่องที่ 2 ใส่ /message ลงไปในช่อง หรือจะเลือกตั้ง Topic เอง สุดท้ายเลือก Permission ในการใช้งาน Topic จากนั้นกด +Add

  • ขั้นตอนที่ 5 เข้าไป ทดสอบเจ้า MQTT Server ที่เราได้สร้างขึ้นมา ในหน้านี้จะมีกล่องมาให้เรากดส่ง message ที่เข้าไปที่ Topic ที่เราได้สร้างขึ้นมา ในที่นี้โมสร้าง /test ไว้ และส่ง message “helloworld” เข้าไป

เพียงเท่านี้เราก็มี MQTT Server เป็นที่เรียบร้อย เตรียมไว้ต่อกับ LINE Bot และ Hardware ที่ได้เตรียมไว้

ยังไม่จบเพียงเท่านี้นะค้าบ

โปรดติดตาม Part 2 ผมจะนำพาทุกท่านมาสร้าง LINE Bot
โปรดติดตาม Part 3 ผมจะนำพาทุกท่านมาสร้าง IoT Device

โปรดติดตามตอนต่อไป!!! つづく

--

--