วันอาทิตย์ที่ 13 พฤษภาคม พ.ศ. 2561


Example Program for LINE Notify API

           LINE Notify เป็นบริการของทาง LINE Application ซึ่งเป็นบริการและช่องทางที่ถูกต้อง ท่านสามารถส่งข้อความการแจ้งเตือนใดๆ ไปยัง Line Account ของท่านเองผ่านการใช้ API ซึ่งเรียกผ่าน HTTP POST ข้อจำกัดของ LINE Notify คือ สามารถส่งแจ้งเตือนได้เฉพาะผู้ที่ขอใช้หรือกลุ่มที่ผู้ขอใช้เป็นสมาชิกเท่านั้น ไม่สามารถส่งข้อความไปยังตังบุคคลอื่นได้ บทความนี้จะนำเสนอตัวอย่างการส่งข้อความแจ้งเตือนจากอุปกรณ์ IoT (บอร์ด ESP32) ไปยัง Line Application

สิ่งที่ต้องเตรียมก่อน

1.       อุปกรณ์ IoT (ในบทความนี้ใช้บอร์ด ESP32 V.1 )


2.         Arduino IDE Program พร้อมติดตั้ง Library Core ของ WiFi ของบอร์ด ESP32



ขั้นตอนการทำงาน

            1. การขอ Access Token
             ก่อนที่เราจะใช้บริการของ “LINE Notify” เพื่อให้เราสามารถรับการแจ้งเตือนจากเว็บเซอร์วิสของทาง LINE นั้น ในการใช้งาน API ในทุก ๆ บริการ จะมีสิ่งที่เรียกว่า Access Token ไว้สำหรับเป็นรหัสที่ใช้ตอนจะเข้าใช้งาน โดยที่ LINE Notify API สามารถเข้าไปสมัครและขอรับ Token ได้ที่ https://notify-bot.line.me/my/

            หลังจากที่เข้าไปในหน้าเว็ปแล้ว ให้ทำการ “เข้าสู่ระบบ” ด้วย Line ID ของท่าน เมื่อเข้าสู่ระบบสำเร็จจะปรากฏชื่อของ Line ID ของท่าน และหลังจากนั้นให้คลิกที่ “ออก Tokenเพื่อรับ Token สำหรับนำมาใช้งาน


           ในเมนูของการออก Token ท่านจะต้องระบุดังนี้
·      ชื่อที่จะแสดงในการแจ้งเตือน
·      กลุ่มที่ต้องการส่งข้อความแจ้งเตือน หากท่านต้องการที่จะส่งข้อความแจ้งเตือนหาตัวท่านเองให้เลือก “รับการแจ้งเตือนแบบตัวต่อตัวจาก LINE Notify”
หลังจากใส่ข้อมูลครบถ้วนแล้ว ให้คลิกที่ปุ่ม “ออก Tokenท่านจะได้รับ Token ที่พร้อมนำมาใช้งานและได้รับข้อความเตือนมายัง Line ของท่าน ว่าได้ขอรับบริการของ LINE Notify เรียบร้อยแล้ว


          เมื่อได้ทำการออก Token เป็นที่เรียบร้อยแล้ว ในระบบจะแสดงการบริการที่เชื่อมต่ออยู่ ว่าตอนนี้เราได้ทำการเชื่อมต่อกับกลุ่มใดบ้าง และยังสามารถยกเลิกการเชื่อมต่อได้ด้วยหากต้องการ


         2. Code Program ของ ESP32
          หลังจากที่เราได้รับ Token จาก LINE Notify เป็นที่เรียบร้อยแล้ว หลังจากนั้นเราจะมาทำงานเขียนโปรแกรม ESP32 เพื่อที่จะส่งข้อความจากอุปกรณ์ไปยัง Line ที่เราได้ระบุเอาไว้ในข้างต้น

Code Program
หมายเหตุ
/*
 * Example Program For LINE Notify APL
 * MCU    : ESP32 V.1
 * Write By : Panya Hantula
 */
void Line_Notify(String message) ;

#include <WiFi.h>
#include <WiFiClientSecure.h>

// Config connect WiFi
#define WIFI_SSID "YOUR WIFINAME"
#define WIFI_PASSWORD "YOUR WIFIPASSWORD"

//--------- Line config
//--------- Get LINE_TOKEN From  https://notify-bot.line.me/th/
#define LINE_TOKEN "LINE ACCESS TOKEN"

String message = "Hi!  This is message from LINE Notify API.";

void setup() {
    Serial.begin(9600);

  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(WIFI_SSID);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());

  //---------------------- Send Message --------------
  Line_Notify(message);
}

void loop() {
           // to do something;
}

void Line_Notify(String 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 += "Authorization: Bearer " + String(LINE_TOKEN) + "\r\n";
  req += "Cache-Control: no-cache\r\n";
  req += "User-Agent: ESP8266\r\n";
  req += "Connection: close\r\n";
  req += "Content-Type: application/x-www-form-urlencoded\r\n";
  req += "Content-Length: " + String(String("message=" +
                    
message).length()) + "\r\n";
  req += "\r\n";
  req += "message=" + message;
  Serial.println(req);
  client.print(req);
  delay(20);
    Serial.println("----- Sending --------");
    while(client.connected()) {
      String line = client.readStringUntil('\n');
      if (line == "\r") {
        break;
      }
  }
  Serial.println("Messages are sended...");
}









WiFi name
WiFi Password



Line Token

Message ที่ต้องการส่ง


ส่วนของโค้ดโปรแกรมที่ท่านจำเป็นต้องแก้ไขมีอยู่ด้วยกัน 3 ส่วนคือ
·        
         WIFI_SSID "YOUR WIFINAME"       กำหนดชื่อ WiFi ที่ต้องการเชื่อมต่อ                 
·        WIFI_PASSWORD "YOUR WIFIPASSWORD"        กำหนดรหัสผ่านของ WiFi
·        LINE_TOKEN "LINE ACCESS TOKEN"     กำหนด Token ที่ได้รับจาก LINE Notify
·        message = "Hi!  This is message from LINE Notify API.";        ข้อความที่ต้องการแสดง

            เนื่องจากไมโครคอนโทรลเลอร์ไม่รองรับ UTF-8 ทำให้ไม่รองรับการพิมพ์ภาษาไทย แต่หากต้องการส่งเป็นข้อความภาษาไทย ข้อความยาวหลายบรรทัด มีการเว้นวรรค มีอักษรพิเศษ จะต้องแปลงข้อความให้อยู่ในรูป URL Encode ก่อน โดยใช้บริการเว็บ http://meyerweb.com/eric/tools/dencoder/ เมื่อเข้าไปในเว็บ ให้พิมพ์ข้อความที่ต้องการ จากนั้นกดปุ่ม Encode ก็จะปรากฏข้อความที่ถูกแปลงแล้วออกมาแล้วให้ท่านนำข้อความที่ถูกแปลงไปใส่ในตัวแปร message ได้เลย


          3. Upload code Program ที่เขียนและทดสอบการทำงาน
เมื่อกดที่ Upload ในโปแกรม Arduino IED สำเร็จ บอร์ด ESP32 จะแสดงข้อสถานการณ์ทำงานผ่านทาง Serial Monitor ด้วย Baudrate: 9600 โดยโปรแกรมจะส่งข้อความเพียง 1 ครั้ง และเมื่อส่งข้อความสำเร็จจะแสดงข้อความ “Message are sended…..”


        หลังจากบอร์ด ESP32 แสดงข้อความ “Message are sended…..” จะเห็นได้ว่ามีข้อความแจ้งเตือนส่งมายัง Line ที่เรากำหนดเอาไว้ ซึ่งในบทความนี้ได้ส่งหาตัวผู้เขียนเอง ข้อความประกอบด้วย “ชื่อ” ที่ได้ตั้งเอาไว้ในตอนที่ออก Token ข้างต้น และหลังจากชื่อจะตามด้วย ข้อความ” ที่ระบุอยู่ในตัวแปร message ใน code program ก่อนที่จะโหลด


           4. สรุป
          ในบทความนี้ได้พูดถึงเรื่องการส่งการแจ้งเตือนจากอุปกรณ์ IoT (ESP32) มายัง Line Application ผ่านทาง LINE Notify เป็นบริการของทาง LINE บริการและช่องทางที่ถูกต้อง ท่านสามารถส่งความการแจ้งเตือนใดๆ ไปยัง Line Account ของตัวท่านเองหรือกลุ่มที่ท่านเป็นสมาชิกในกลุ่มนั้นได้ สามารถนำมาประยุกต์ใช้งานได้อย่างหลากหลาย เช่น อุปกรณ์ตรวจจับการทำงานของเครื่องจักรในโรงงาน ทำการแจ้งเตือนเมื่ออุปกรณ์ตัวนั้นมีปัญหาหรือรายงานสถานะการทำงานของเครื่อง เป็นต้น