ESPIno32CAM : Line Notify
ตัวอย่างการใช้งาน ESPIno32CAM ส่งข้อ ,สติ๊กเกอร์ และ ภาพถ่าย ไปแจ้งเตือนยัง Line Notify
วิธีขอ Token เพื่อใช้งาน Line Notify
1 สมัครหรือสร้างบัญชี Line ของเรา (สำหรับผู้ที่ยังไม่เคยใช้งาน Application Line)
2 เข้าไปยัง Website : https://notify-bot.line.me
3 Login เข้าใช้งาน

4 คลิกที่ชื่อ User ของเราและเลือก My page

5 คลิกที่ Generate token

6 ตั้งชื่อ Notification ของเรา เลือกผูกการแจ้งเตือนไปยัง Line ID ของเรา หรือเลือกให้แจ้งเตือนไปยัง Group Line ของเรา จากนั้นคลิก Generate token

7 Line Notify จะสร้าง Token สำหรับให้เรานำไปใช้งาน ซึ่งผู้ใช้งานจะต้องนำค่า Token นี้ไปใช้ในการเขียนโปรแกรมด้วย

เริ่มต้นการทดลอง
– เปิดโปรแกรม Arduino IDE
– เปิดตัวอย่าง File > Example >ESPIno32CAM > Ex_Line_Notify

-ตั้งค่า Arduino IDE ให้ใช้งานกับ ESPIno32CAM (Link)
-ตั้งค่า SSID , password ของ Access point ที่ต้องการให้ ESPIno32CAM เชื่อมต่อ Internet
-ใส่ Token ที่ได้จากหัวข้อ “วิธีขอ Token เพื่อใช้งาน Line Notify” ในข้างต้น

– Upload Program ลงไปยัง ESPIno32CAM

– เปิด Serial Monitor

– ตั้งค่า Baudrate = 115200

– เมื่อเริ่มทำงาน ESPIno32CAM จะเชื่อมต่อไปยัง Access point ที่ตั้งค่าไว้ รอจนเชื่อมต่อสำเร็จ

– กด Button Program

– โปรแกรมจะทำการถ่ายรูป แล้วส่งข้อความ , สติ๊กเกอร์ และ รูปภาพไปแจ้งเตือนยัง Line Notify


คำอธิบาย Code Program
#include "ESPino32CAM.h" #include "ESPino32CAM_LineNotify.h" const char* ssid = ""; const char* password = ""; String token = ""; ESPino32CAM cam; LineNotify line; #define Button 0 void setup() { Serial.begin(115200); Serial.println("\r\nESPino32CAM"); if (cam.init() != ESP_OK) { cam.printDebug(F("Init Fail")); while (1); } sensor_t *s = cam.sensor(); s->set_framesize(s, FRAMESIZE_VGA); s->set_whitebal(s,true); Serial.print("Attempting to connect to SSID: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(1000); } Serial.println("\r\nConnected"); line.authenKey(token); line.setUTC(7); } void loop() { camera_fb_t *fb; String msg; if(!digitalRead(Button)) { lineResp ret; msg = "ทดสอบ ส่งข้อความ สติ๊กเกอร์ และ รูปภาพจากกล้อง ESPIno32CAM"; Serial.println("Send Message,Sticker and Image: "+msg); Serial.println("Capture"); fb = cam.capture(); ret = line.send(msg,4,275,fb->buf, fb->len); cam.clearMemory(fb); if(ret.status) { Serial.printf("API Called %d/%d per hour\r\n",ret.remaining,ret.limit); Serial.printf("Send Image %d/%d per hour\r\n",ret.imageremaining,ret.imagelimit); Serial.printf("The time when the limit is reset %d(UTC epoch seconds) , ",ret.reset); Serial.println(ret.reset_time); } else Serial.println(ret.response); Serial.println(); } }
บรรทัดที่ 1: ประกาศใช้ Library ESPIno32CAM
บรรทัดที่ 2: ประกาศใช้ Library ESPino32CAM_LineNotify
บรรทัดที่ 3: ใส่ชื่อ SSID ของ Access piont ที่ต้องการเชื่อมต่อ
บรรทัดที่ 4: ใส่ชื่อ password ของ Access piont ที่ต้องการเชื่อมต่อ
บรรทัดที่ 5: ใส่ Token ที่ได้จากการ generate token
บรรทัดที่ 6: สร้าง Object cam
บรรทัดที่ 7: สร้าง Object line
บรรทัดที่ 8: กำหนดให้ BUTTON = IO 0
บรรทัดที่ 12: Initial โมดูลกล้อง
บรรทัดที่ 18: กำหนดให้ถ่ายภาพขนาด VGA (640×480 Pixel)
บรรทัดที่ 19: เปิดใช้ white balance
บรรทัดที่ 22: เชื่อมต่อ WiFi
บรรทัดที่ 23-27: รอจนเชื่อมต่อ WiFi สำเร็จ
บรรทัดที่ 29: กำหนดค่า Toket
บรรทัดที่ 30: ตั้ง Time zone เป็น UTC+7
บรรทัดที่ 36: ตรวจเช็คว่ามีการกด Button Program หรือไม่
บรรทัดที่ 38: ประกาศตัวแปร lineResp สำหรับรอรับ Status การส่งข้อมูลไปยัง Line Notify
บรรทัดที่ 39: กำหนดข้อความที่ต้องการส่ง Message
บรรทัดที่ 42: ถ่ายรูปแล้วเก็บ JPG File ยัง fb
บรรทัดที่ 43: ส่ง ข้อความ , หมายเลข stickerPacketID , stickerID , รูปภาพ , ขนาดรูปภาพ และ return สถานะการส่งข้อมูล ออกมาเก็บมที่ ตัวแปร lineResp ret
บรรทัดที่ 44: คืนค่า Memory fb
บรรทัดที่ 45: ตรวจสอบ ret.status มีค่าเป็น True หมายถึงสามารถส่ง Line Notify ได้สำเร็จ
บรรทัดที่ 47-50 แสดงผล ที่ line Notify ตอบกลับมา
เช่น
API Called 997/1000 per hour // ใน 1 ชั่วโมงเรียกใช้ Line API ไปแล้ว 997 ครั้ง จากทั้งหมด 1000 ครั้ง
Send Image 47/50 per hour // ใน 1 ชั่วโมง ส่งรูปภาพไปแล้ว 47 ครั้ง จากทั้งหมด 50 ครั้ง
The time when the limit is reset 1561998440(UTC epoch seconds) , 23:27:20 // Server จะ Reset จำนวนนับกลับไปเป็น 0 เวลา 23:27:20
บรรทัดที่ 53 แสดงข้อความที่ Server ตอบกลับในกรณีที่ไม่สามารถส่งข้อมูลได้
เช่น {“status”:400,”message”:”Image rate limit exceeded.”} // ส่งรูปภาพมากกว่า 50 ครั้ง ใน 1 ชั่วโมง