Line bot เปิดปิด LED ผ่านบอร์ด NodeMCU esp8266 แบบละเอียด !

Line bot เปิดปิด LED ผ่านบอร์ด NodeMCU esp8266 แบบละเอียด !

ในหัวข้อวันนี้จะเป็นการใช้ Line Message API เพื่อติดต่อกับ NodeMCU esp8266 โดยใช้ Cloud Service คือ NETPIE กับ Heroku Server


Hardware 

1. NodeMCU esp8266
2. หลอด LED 

Software

1.Line Application

Cloud Service

1. Line Message API
2. NETPIE
3. Heroku
4. Github

เอาล่ะมาเริ่มลุยกันเลยครับ !

1. สร้าง Line bot 


    สร้าง Accout บน LINE Developers ไปที่ https://developers.line.biz/en/

1.1 เข้าสู่ระบบ และ กดที่ Documents


1.2 กดที่ Products, กดที่ Message API, กด Start now 

1.3 กด Create New Provider และตั่งชื่อของ Provider List ให้เรียบร้อย

1.4 สร้างเสร็จแล้วก็กดเข้ามาใน Provider List ที่สร้างไว้ และ กด Create new channel

1.5 เลือก Messaging API


1.6 ใส่ข้อมูลของ Bot 

1.7 เมื่อใส่ข้อมูลของ Bot เสร็จแล้ว หน้าตาจะเป็นแบบนี้ให้ลื่นลงมา จนจอ Messaging Setting (รูปที่ 2) ให้จำหน้านี้ไว้เพราะจะต้องกลับมา เอา Channel Access token, เปลี่ยน Webhook จาก Disabled เป็น Enabled และ ใส่ Link Webhook ที่ได้จาก Heroku Server มาใส่


2. Heroku Server 

ต่อไปนี้จะเป็นการสร้าง Webhook จาก Heroku Server โดยเชื่อมต่อกับ Github เข้าไปที่ https://www.heroku.com/

2.1 สมัครสมาชิก และล็อกอินให้เรียบร้อย

2.2 กด  New และ Create new app




2.3 ใส่ชื่อ App ตามที่ต้องการ จากนั้นเลือก Choose a region เป็น United States แล้ว กด Create app

2.4 เมื่อใส่ชื่อ app และ เลือก Choose a region เรียบร้อยแล้ว จะได้หน้าตาเป็นแบบนี้ กดที่ GitHub



2.5 ใส่ชื่อ Repositories ของ GitHub ลงไป แล้วกด Connect ถ้า ยังไม่มี Code ใน GitHub สามารถใช้ https://github.com/xNewz/linebot เป็นตัวทดสอบได้ครับ

2.6 กดที่ Enable Automatic Deploys เมื่อ Code ใน GitHub มีการเปลี่ยนแปลง ทาง Heroku จะ Update Code ตาม GitHub และกด Deploy Branch



2.7 และลองทดสอบดูว่าสามารถใช้งานได้หรือไม่ 
โดยไปที่ https://ชื่อappของheroku.herokuapp.com/ เช่น https://arduinotestapp123.herokuapp.com/ เมื่อเข้ามาแล้วจะได้หน้าตาแบบนี้


3. เชื่ออมต่อ Webhook กับ Messaging API

3.1 เข้าไปที่ลิงค์ https://manager.line.biz/ เข้าสู่ระบบและ เลือกบัญชีที่เราสร้างไว้ตอนแรก


3.2 เมื่อเลือกบัญชีที่สมัครไว้ตอนแรกแล้ว ให้กด ตั้งค่า และ ตั้งค่าการตอบกลับ ดังภาพ


3.3 แล้วเลื่อนลงมาจะเจอ ตั้งค่าออย่างละเอียด ให้ไป ติ๊ก เปิด ตรง Webhook
3.4 เมื่อกด ติ๊กเปิด ตรง Webhook เรียบร้อยแล้ว ให้กดไปที่ ตั้งค่า Messaging API 
3.5 ใส่ URL ของ Heroku Server ลงไป ก็คือ https://ชื่อappของheroku.herokuapp.com/ เมื่อใส่เรียบร้อยแล้ว กด บันทึก
3.6 จากนั้นไป Copy โดยเข้าไปที่ https://developers.line.biz/en/ เหมือนกับตออนแรก
3.7 จากนั้นเลือก Providers ที่เราสร้างไว้ของผมชื่อ Arduino แล้วจากนั้นเลือก Channels ของผมเป็น test 

3.8 เมื่อเลือก Channels เสร็จ ให้กดไปที่ Messageing API



3.9 แล้วเลื่อนลงมา จะเจอ Channels access token ให้กดที่ issue แล้ว Copy token ไว้

4. NETPIE

4.1 เข้าไปที่ https://netpie.io/ สมัครสมาชิกให้เรียบร้อย จากนั้นกด Login 
เมื่อ Login เสร็จเรียบร้อยแล้ว กดที่ Resources จากนั้น กดที่ Applications

4.2 กดที่ เครื่องหมายบวก และ ใส่ชื่อ App ตามต้องการ

4.3 กดที่ เครื่องหมาย บวก ตั้งชื่ออุปกรณ์ และ เลือกเป็น Device Key แล้วกด CREATE

4.4 กดที่ เครื่องหมาย บวก ตั้งชื่อ และ เลือกเป็น Session Key แล้วกด CREATE

4.5 Code : https://github.com/xNewz/linebot/blob/master/Code/linebot_led/linebot_led.ino

const char* host = "Line bot server"; 
ใส่ http://{ชื่อAppในHeroku}.herokuapp.com/bot.php

#define APPID   "arduinotestapp" ชื่อ APP ID ใน NETPIE

#define KEY     "4EK109INhdbrTgs" key ของ Device Key


#define SECRET  "qRMCnM0Fvp04MgPa7WNJF0gSt" Secret ของ Device Key


4.6 ตั้งชื่อ ALIAS ให้ตรงกับ ชื่ออุปกรณ์ ใน Device Key ของ NETPIE



4.7 แก้ไขไฟล์ bot.php ใน GitHub 

แก้ Topic ให้ตรงกับ ชื่ออุปกรณ์ ใน Device Key ของ NETPIE

4.8 แก้ไขไฟล์ pub.php ใน GitHub

แก้ APPID เป็นชื่อของ App ID ใน NETPIE 

** เช่น arduinotestapp/  มี / ข้างหลังด้วย **

แก้ KEY เป็น Key ของ Session Key ใน NETPIE

แก้ SECRET เป็น Key ของ Secret Key ใน NETPIE


4.9 แก้ไขไฟล์ line.php ใน GitHub

เอา access token ใน Line Developer ที่ให้ Copy ไว้ตอนแรกมาใส่ ในช่อง $access_token

เอา User ID ใน Line Devoloper มาใส่ ในช่อง to ดังภาพ

4.10 จากนั้น App Line Bot ด้วย ID หรือ QR Code ดังภาพ



เท่านี้ก็เสร็จเรียบร้อยแล้วครับสำหรับการทำ Line Bot เพื่อใช้ในการ เปิดปิด LED 



ความคิดเห็น

  1. In member function 'void MicroGear::syncTime(Client*, long unsigned int*)
    เราลองทำตามแล้วคอมไพล์ดูติด error เราพยายามหาทางแก้แล้วแต่ยังไม่เจอทางออกเลยค่ะ

    ตอบลบ
    คำตอบ
    1. ลองตรวจสอบเวอร์ชั่นของ library ของ MicroGear ครับ ลองลดเวอร์ชั่น หรือ อัพเดทเวอร์ชั่นของ library MicroGear ดูครับ

      ลบ
  2. ArduinoJson.h มันขึ้น errer ค่ะลง libary แล้วก็ขึ้นค่ะ

    ตอบลบ

แสดงความคิดเห็น

บทความที่ได้รับความนิยม