ปัจจุบัน LINE Notify ยุติการให้บริการแล้ว
แนะนำให้ใช้งาน Am Alert หรือ LINE Messaging API แทน
LINE Notify เป็นบริการส่งข้อความแจ้งเตือนเข้าแอพพลิเคชั่น LINE ผ่านอินเตอร์เน็ต โดยรองรับการส่งข้อความ สติ๊กเกอร์ รูปภาพ แผนที่ เปิดดูได้ทั้งบนมือถือและ PC มีข้อดีสำคัญคือนักพัฒนาไม่ต้องทำแอพ ฯ เอง ในเมื่อคนส่วนใหญ่ใช้แอพฯ LINE อยู่แล้ว การส่งแจ้งเตือนผ่าน LINE จึงใช้ได้ทุกคนทันที (แต่ต้องลงทะเบียนรับแจ้งเตือนก่อน)
บทความนี้ใช้บอร์ด IOXESP32+ ในการทดสอบ
การส่งแจ้งเตือนผ่าน LINE แบ่งเป็น 2 ขั้นตอน คือ 1) ขอ Token และ 2) เขียนโปรแกรมส่งแจ้งเตือน
Token เป็นรหัสที่ใช้ยืนยันตัวตนระหว่างผู้ส่งแจ้งเตือน กับระบบของ LINE โดยในขั้นตอนขอ Token ต้องระบุห้องที่จะให้ข้อความเข้าไปด้วย ดังนั้น Token จึงเป็นตัวกำหนดด้วยว่าข้อความจะเข้าไปที่ห้องไหน
1 Token สามารถส่งข้อความได้ 1 ห้องเท่านั้น หากต้องการส่งหลายห้องก็สามารถสร้างหลาย ๆ Token ขึ้นมา แล้วเขียนโปรแกรมส่งข้อความเดิมด้วยหลาย Token ได้ เท่านี้ก็สามารถส่งข้อความเข้าหลายห้องได้แล้ว
การขอ Token มีขั้นตอนดังนี้
1) เข้าไปที่ https://notify-bot.line.me/th/ จากนั้นกด เข้าสู่ระบบ ด้านมุมขวาบน
2) เข้าสู่ระบบ โดยใช้ Email และรหัสผ่าน ที่สมัครไว้กับ LINE หรือกดปุ่ม เข้าสู่ระบบโดยสแกนคิวอาร์โค้ด แล้วเปิดแอพฯ LINE ในมือถือสแกนได้เลย
3) เมื่อเข้าสู่ระบบเรียนร้อยแล้ว ให้กดชื่อตนเองด้านบนมุมซ้าย (1) แล้วกด หน้าของฉัน (2)
4) เลื่อนมาที่ด้านล่างสุดของหน้า กดปุ่ม ออก Token
5) หน้าต่าง ออก Token จะแสดงขึ้นมา ให้กรอกชื่อ Token (1) โดยตั้งเป็นอะไรก็ได้ (ชื่อที่ตั้ง จะมาพร้อมข้อความแจ้งเตือน) จากนั้นเลือกห้องที่ต้องการรับข้อความเข้า (2) โดยหากให้ส่งมาส่วนตัว เลือกเป็น "รับการแจ้งเตือนแบบตัวต่อตัวจาก LINE Notify" แต่หากต้องการให้ส่งเข้ากลุ่ม ก็เลือกกลุ่มที่ต้องการส่งเข้า จากนั้นกด ออก Token (3)
6) จะได้ Token มาแล้ว ให้เก็บ Token นี้ไว้ใช้ใส่ในโค้ดในขั้นตอนต่อไป
การส่งแจ้งเตือนผ่าน LINE Notify ทำผ่าน HTTPS โดยยิง HTTP Post ไปยัง endpoint : https://notify-api.line.me/api/notify
อ่านรายละเอียดได้ที่ เอกสาร API ของ LINE Notify
สำหรับ ESP32 และ ESP8266 ทาง อาร์ทรอน ชอป ได้จัดทำไลบรารี่ ArtronShop_LineNotify ขึ้นมา เพื่อความสะดวกในการเขียนโค้ดส่งแจ้งเตือนผ่าน LINE Notify ปัจจุบันรองรับการส่งข้อความ, สติ๊กเกอร์, รูปภาพ (ลิ้งรูปภาพ) และแผนที่ โดยเบื้องหลังไลบรารี่จัดการการสื่อสารกับเซิร์ฟเวอร์ของ LINE ผ่าน HTTPS ให้
ติดตั้งไลบรารี่ ArtronShop_LineNotify ตามขั้นตอนดังนี้
1) เปิดโปรแกรม Arduino IDE ขึ้นมา แล้วกดเปิด Library Manager ขึ้นมา ค้นหา ArtronShop_LineNotify แล้วกด INSTALL
2) หลังติดตั้งเสร็จ จะมีข้อความ Successfully ขึ้นมา เป็นอันจบการติดตั้งไลบรารี่เพิ่ม
การส่งข้อความแจ้งเตือนจะทำผ่านไลบรารี่ ArtronShop_LineNotify โดยก่อนใช้คำสั่งใด ๆ ของไลบรารี่นี้ ต้องใช้คำสั่ง #include <ArtronShop_LineNotify.h> นำเข้าคำสั่งในไลบารี่มาก่อน
เนื่องจากการส่งแจ้งเตือนต้องทำผ่านอินเตอร์เน็ต ดังนั้นใน void setup() จึงต้องสั่งเชื่อมต่อ WiFi ก่อน โดยใช้ชุดคำสั่งต่อไปนี้
หลังจากเชื่อมต่อ WiFi สำเร็จ ให้ใช้คำสั่ง LINE.setup(<Token>); เพื่อกำหนด Token ที่ได้จากในเว็บ LINE Notify
การส่งแจ้งเตือนใช้คำสั่ง LINE.send(<ข้อความที่ต้องการแจ้งเตือน>); โดยหากส่งสำเร็จ จะส่งค่า True กลับมา หากส่งไม่สำเร็จ จะส่งค่า False กลับมา ตัวอย่างส่งข้อความ "รถโดนขโมย" พร้อมตรวจสอบแจ้งใน Serial Monitor ว่าส่งข้อความสำเร็จหรือไม่ มีดังนี้
ได้โค้ดทดสอบส่งแจ้งเตือนฉบับเต็มดังนี้
แก้ไข ssid และ password เป็นชื่อ และรหัสผ่านของ WiFi ที่ออกอินเตอร์เน็ตได้
ตรง LINE_TOKEN ใส่ Token ที่ได้จากเว็บ LINE Notify
อัพโหลดโปรแกรมลงบอร์ด ESP32 เปิด Serial Monitor ขึ้นมา ปรับ 115200 ผลที่ได้หากส่งข้อความสำเร็จ จะมีข้อความ Send notify successful ขึ้น (ดังรูป)
ในแอพฯ LINE จะมีข้อความแจ้งเตือนส่งเข้าไปในห้องแล้ว
เข้าไปเลือกสติ๊กเกอร์ที่ https://developers.line.biz/en/docs/messaging-api/sticker-list/ แล้วเก็บ Package ID และ ID ไว้ ตัวอย่างเลือกสติ๊กเกอร์ Package ID: 446, ID: 1988
คำสั่ง LINE.send(); เพิ่มโค้ดส่วน option ดังนี้
ได้โค้ดโปรแกรมฉบับเต็มที่แก้ไขเพิ่ม option แล้วดังนี้
อัพโหลดโปรแกรมลงบอร์ด ESP32 จะพบว่ามีข้อความพร้อมสติ๊กเกอร์ขึ้นมาแล้ว
การส่งรูปด้วยลิ้ง จำเป็นจะต้องมีลิ้งของรูปก่อน โดยรูปที่ส่งจะต้องเป็นไฟล์ JPEG มีขนาดไม่เกิน 2048x2048 เท่านั้น
หากยังไม่มีลิ้งรูป สามารถสร้างลิ้งรูปได้โดยนำรูปที่มีคุณสมบัติตรงตามข้อกำหนด (JPEG มีขนาดไม่เกิน 2048x2048) ไปอัพโหลดในเว็บรับฝากรูป ก็จะได้ลิ้งรูปมาแล้ว ตัวอย่างการฝากรูปในเว็บ pic.in.th มีขั้นตอนดังนี้
1) เข้าไปที่ https://pic.in.th/?lang=th กดปุ่ม เริ่มอัพโหลด
เลือกไฟล์รูปที่ต้องการ แล้วกด Open
กดติ๊กถูก ฉันยอมรับเงื่อนไข (1) แล้วกดปุ่ม อัพโหลด (2)
จากนั้นลิ้งของรูปภาพจะปรากฏขึ้นมา ให้คัดลอกลิ้งเก็บไว้ใส่ลงในโค้ดต่อไป
คำสั่ง LINE.send(); เพิ่มโค้ดส่วน option ดังนี้
ได้โค้ดโปรแกรมฉบับเต็มที่แก้ไขเพิ่ม option แล้วดังนี้
อัพโหลดโปรแกรมลงบอร์ด ESP32 จะพบว่ามีข้อความพร้อมรูปภาพขึ้นมาแล้ว
อยู่ในระหว่างการพิจารณาพัฒนาความสามารถนี้เพิ่มเติม
การแจ้งเตือนบางอย่างหากแนบแผนที่ไปด้วย ก็จะทำให้เข้าใจสถานะการณ์ปัจจุบันมากขึ้น เช่น เครื่องตรวจจับไฟไหม้ หากส่งข้อความเตือนไฟไหม้พร้อมส่งแผนที่ ก็จะทำให้รู้ได้ทันทีว่าไฟไหม้ที่ใด หรือเครื่องปจ้งเตือนรถโดนขโมย หากส่งแผนที่ที่บอกที่อยู่ปัจจุบันของรถ ก็จะรู้ได้ทันทีว่าต้องไปตามรถที่ไหน เป็นต้น
ไลบรารี่ ArtronShop_LineNotify รองรับการส่งแผนที่ Google Map และ Longdo Map โดย Longdo Map สามารถใช้งานได้ทันที แต่ Google Map จำเป็นต้องใช้ API Key
การส่งแผนที่ จำเป็นต้องระบุพิกัดละติจูดและลองจิจูดที่จะปัดหมุนบนแผนที่ ซึ่งการหาพิกัดทำได้ดังนี้
เข้าไปที่ Google Map จากนั้นเลื่อนหาสถานที่ที่ต้องการ จากนั้นคลิกจุดที่ต้องการ จะมีเลขพิกัดขึ้นมาแล้ว
ตัวอย่างได้เลข 13.91024, 100.51108 สามารถตัดแบ่งได้ 13.91024 เป็นละติจูด และ 100.51108 เป็นลองจิจูด
คำสั่ง LINE.send(); เพิ่มโค้ดส่วน option ดังนี้
ได้โค้ดโปรแกรมฉบับเต็มที่แก้ไขเพิ่ม option แล้วดังนี้
อัพโหลดโปรแกรมลงบอร์ด ESP32 จะพบว่ามีข้อความพร้อมภาพแผนที่ขึ้นมาแล้ว
1 Token สามารถส่งข้อความได้ 1 ห้อง หากต้องการส่งหลายห้องพร้อมกัน ต้องใช้หลาย Token
การใช้หลาย Token ทำได้โดยใช้คำสั่ง LINE.setToken() กำหนด Token ใหม่ที่ต้องการก่อนเรียกใช้คำสั่ง LINE.send()
ตัวอย่างโค้ดโปรแกรมส่งหลาย Token
ผลที่ได้จะมีข้อความขึ้นมา 2 ข้อความแล้ว
ตัวอย่างใช้งานร่วมกับเซ็นเซอร์ตรวจจับความเคลื่อนไหว (PIR) เมื่อจับความเคลื่อนไหวได้จะส่งแจ้งเตือนเพียงครั้งเดียวจนกว่าจะไม่พบการเคลื่อนไหว เมื่อพบความเคลื่อนไหวอีกครั้งจึงส่งแจ้งเตือนอีกครั้ง
ตัวอย่างนี้ใช้ Keyestudio PIR Motion Sensor ซึ่งเป็นเซ็นเซอร์ที่มีความแม่นยำกว่าเซ็นเซอร์ PIR ทั่วไป โดยต่อเซ็นเซอร์เข้ากับ ESP32 ดังนี้
ใช้โปรแกรมต่อไปนี้ในการทดสอบ
ผลที่ได้ เมื่อเซ็นเซอร์ตรวจพบความเคลื่อนไหว ก็จะส่งแจ้งเตือนพร้อมแผนที่มาใน LINE แล้ว
WiFiManager เป็นไลบรารี่ที่ใช้ฝังหน้าเว็บตั้งค่า WiFi ลงไปใน ESP32 ให้สามารถตั้งค่า WiFi ของ ESP32 ผ่านหน้าเว็บได้ (แบบเดียวกับตั้งค่าเร้าเตอร์)
ติดตั้งไลบรารี่ WiFiManager ตามขั้นตอนดังนี้
1) เปิดโปรแกรม Arduino IDE ขึ้นมา แล้วกดเปิด Library Manager ขึ้นมา ค้นหา WiFiManager แล้วกด INSTALL
2) หลังติดตั้งเสร็จ จะมีข้อความ Successfully ขึ้นมา เป็นอันจบการติดตั้งไลบรารี่เพิ่ม
อัพโหลดโค้ดต่อไปนี้ลง ESP32 เพื่อทดสอบ
เปิด Serial Monitor ขึ้นมา หากเคยตั้งค่าเชื่อมต่อ WiFi ไว้แล้ว ตัว ESP32 จะข้าม WiFiManager ไปเลย แต่หากยังไม่เคยตั้งค่า จะมีข้อความ Starting Web Portal ขึ้น ดังรูป
ตัว WiFiManager จะสั่งให้ ESP32 ปล่อย WiFi ชื่อ ESP32_LINE ออกมา ให้ใช้โทรศัพมือถือเชื่อม WiFi ชื่อดังกล่าว
จากนั้นเปิดแอพฯ เบราว์เซอร์ แล้วเข้าไปที่ http://192.168.4.1 แล้วกดปุ่ม Configure WiFi
เลือกชื่อ WiFi ที่ต้องการให้ ESP32 ไปเกาะ (1) หรือกรอกชื่อ WiFi (2) กรอกรหัสผ่านของ WiFi (3) แล้วกดปุ่ม Save (4)
หากตั้งค่าเชื่อมต่อ WiFi สำเร้จ จะมีข้อความแจ้งดังรูป
ที่ Serial Monitor จะเห็นหมายเลข IP พร้อมข้อความ portal exiting ขึ้น เป็นอันจบการตั้งค่า WiFi
กดปุ่ม IO0 หรือ BOOT บนบอร์ด ESP32 แล้วรอซักครู่ ข้อความ Send notify successful จะแสดงขึ้นมา ที่แอพฯ LINE จะมีข้อความแจ้งเตือนเข้ามาแล้ว
หากอัพโหลดโปรแกรมแล้ว ใน Serial Monitor พบข้อความ Send notify fail. check your token (code: <รหัสผิดพลาด>) แสดงว่าการส่งข้อความแจ้งเตือนไม่สำเร็จ โดยเหตุผลที่ไม่สำเร็จตีความตามรหัสผิดพลาดได้ดังนี้
ปัจจุบันไลบรารี่ ArtronShop_LineNotify รองรับโมดูลแลน รุ่น W5500 โดยใช้ Arduino core for the ESP32 ตั้งแต่ V3 เป็นต้นไป โดยแก้ไขโค้ดส่วนที่เชื่อมต่อ WiFi เป็นโค้ดเชื่อมต่ออินเตอร์เน็ตผ่านแลนแทน (ไม่ต้องแก้ไลบรารี่ ArtronShop_LineNotify)
แนะนำให้ศึกษาโค้ดเชื่อมต่ออินเตอร์เน็ตผ่านสายแลนที่ ETH_W5500_Arduino_SPI.ino