Posted on

ESP8285 ส่งข้อความเข้า LINE Notify ผ่าน BLYNK Dashboard

สวัสดีครับ เพื่อนๆ สาวก IOT ทุกท่าน สำหรับบทความนี้จะเป็นการแนะนำการส่งข้อความเข้า LINE Notify โดยใช้บอร์ด ESP8285 ซึ่งมี WIFI ในตัว โดยอาศัย BLYNK Server เป็นสื่อกลางในการควบคุมสั่งการ โดยเราจะทำการสร้าง Switch บน Blynk Application บนมือถือ และสั่งการผ่านการกด คล้ายๆ กับเรากดสวิทต์เพื่อให้ ESP8285 ทำการส่งข้อความเข้า LINE Notify นั่นเอง

ก่อนอื่นมาเช็คความพร้อมกันก่อนว่าเราต้องเตรียมอะไรกันบ้าง

  • บอร์ด ESP8285 หรือ ESP8266
  • บัญชีการใช้งาน Blynk ที่สร้าง Project ไว้เรียบร้อยแล้ว (เรามีให้ใช้ฟรีนะครับ ดูจากโพสต์ก่อนๆ หน้าได้เลย)
  • Line Token สำหรับการส่งข้อความเข้า Line Notify ของเราเอง

หลังจากมีครบแล้วเรามาดูตัวอย่างโค้ดส่วนแรกกันเลยครับ ซึ่งก็จะเป็นการตั้งค่าในส่วนของ Blynk Auth และ Line Token และการตั้งค่าการเชื่อมต่อ WIFI ของเราเอง สามารถตั้งค่าต่างๆ ตามการใช้งานของแต่ละท่านเองได้เลยครับ

ในส่วนของ void setup ก็จะเป็นการกำหนดค่าในการใช้งาน Blynk Private Server ของทางเราซึ่งเปิดให้ใช้งานได้ฟรีๆ นะครับ

หลังจากนั้นมาดูโค้ดในส่วนถัดไป จะเป็นการสร้างฟังชั่นในการรับค่าจากการกดปุ่มจาก Blynk Application ผ่าน Virtual Pin V1 นั่นคือเมื่อเรากดปุ่มในมือถือ ระบบก็จะทำการส่งข้อความที่กำหนดไปยัง Line ของเรานั่นเอง จะเห็นได้ว่าถ้ามีการกดปุ่ม ก็จะเข้าเงื่อนไข if pinValue==1 ซึ่งเราก็สามารถกำหนดให้มีการทำงานต่างๆ เช่นในภาพจะเป็นการเรียกฟังชั่น Send_lineNotify ขึ้นมาทำงาน และในบรรทัดถัดไปเราสามารถเพิ่มคำสั่งอื่นๆ เข้าไปได้อีกเช่นให้อ่านค่าจาก Sensor แล้วส่งมาให้เราได้เช่นกัน

ในส่วนถัดไปจะเป็นการสร้างฟังชั่น Send_LineNotify เพื่อเรียกใช้งานในกรณีที่มีการกดปุ่มมาจาก Blynk Application

โค้ดในส่วนสุดท้ายจะเป็น void loop ซึ่งก็เป็นการกำหนดให้ blynk ทำงานนั่นเอง

โดยสามารถ Copy โค้ดทั้งหมดได้ที่นี่ครับ และทำการ Upload ไปยัง บอร์ดของคุณ

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

char auth[] = "BlynkAUTH";  //Blynk  AUTH
String LINE_TOKEN = "LineToken";   //Line Token

// Your WiFi credentials.
char ssid[] = "WIFI-SSID";
char pass[] = "WIFI-PASSWORD";

void setup()
{
  Serial.begin(115200);
  Blynk.begin(auth, ssid, pass,"blynk.jpnet.co.th",8080);
  Blynk.syncAll(); 
}

BLYNK_WRITE(V1)
{
  int pinValue = param.asInt();
  if (pinValue == 1) {
    Serial.println(pinValue);
    String line_msg = "คุณได้กดปุ่ม V1 เพื่อทำการส่งข้อความเข้า LINE Notify";
    Send_LineNotify(LINE_TOKEN, line_msg);
  }
 
}

void Send_LineNotify(String Line_token, String message)
{
  String msg = String("message=") + message;

  WiFiClientSecure client;
  if (!client.connect("notify-api.line.me", 443)) {
    Serial.println("connection failed");
    return;
  }

  String req = "";
  req += "POST /api/notify HTTP/1.1\r\n";
  req += "Host: notify-api.line.me\r\n";
  req += "Content-Type: application/x-www-form-urlencoded\r\n";
  req += "Authorization: Bearer " + String(Line_token) + "\r\n";
  req += "Content-Length: " + String(msg.length()) + "\r\n";
  req += "\r\n";
  req +=  msg;

  client.print(req);
  
}

void loop()
{
  Blynk.run();
}

จากนั้นให้ทำการสร้างปุ่ม Button กดจาก Dashboard ของ Blynk กำหนด Out put เป็น Virtual Pin V1 และเลือกโหมดเป็น Push ตามภาพ และกำหนดให้ส่งค่า 1 ไปเมื่อมีการกดปุ่ม

หลังจากสร้างก็จะได้ตามภาพ

ให้ทำการ Run แล้วทดลองกดปุ่ม ก็จะพบว่ามีข้อความส่งมายัง Line ของเรา

ซึ่งการสร้างปุ่มกดใน Blynk เราสามารถนำไปดัดแปลงได้หลากหลาย เช่นการกดเพื่อให้ Board อ่านค่าเซนเซอร์ต่างๆ ส่งเข้าไลน์ของเรา เพื่อนๆ ลองไปประยุกต์ใช้งานดูนะครับ