งานที่ 10

 

NodeMCU ESP8266 ESP32 IoT 30 วัน 30 โปรเจค วันที่ 5 ส่ง notification จาก ESP32 เข้ามือถือ

3 ปีที่ผ่านมา
 
โดย เจ้าของร้าน

NodeMCU ESP8266 ESP32 IoT 30 วัน 30 โปรเจค
บทความในชุดนี้เป็นบทความต่อเนื่องที่จะให้ผู้อ่านได้ทดลองเรียนรู้ IoT ไปพร้อมๆกันการทำ Project วันล่ะโปรเจคไปเรื่อยๆ โดยเรียนรู้จากการได้ทดลองทำจริง (learning on the job) เขียนโปรแกรม ต่อวงจร ง่ายๆไม่ยุ่งยาก สามารถนำไปประยุกต์ใช้งานต่อได้ โดยเนื้อหาจะมีเรื่อยๆจนครบ 30 บทความ เหมาะสำหรับคนที่อยากเรียนรู้ IoT ด้วยตนเอง สามารถติดตามรายละเอียดได้จากหน้าร้านและทาง Fanpage Facebook fb.com/mosfex นะครับ

หลังจากที่เมื่อวานเราติดตั้ง ESP32 กันแล้ว วันนี้มาทดลองเขียนต่อสักหน่อย โดยเราจะมาใช้ตัว ESP32 ส่ง Notification เข้าเครื่องโทรศัพท์มือถือผ่าน Firebase Cloud Messaging (FCM) กันสักหน่อย โดยการทำก็ง่ายแสนง่ายไม่เปิด 5 นาทีก็ได้ล่ะ แถมยังเอาไปประยุกต์ใช้งานได้หลากหลายอีกด้วยเช่น ใช้ส่งการแจ้งเตือนการบุกรุก แจ้งเตือนไฟไหม้ หรือน้ำท่วมได้ทันทีเลยแหละ
โดยปกติการส่ง Notification นั้นจะทำได้เราก็ต้องเขียน App เพื่อรับข้อมูลเข้ามาแล้วก็แสดง noti ออกไป แต่กว่าเราจะเขียนได้ก็ยุ่งยากเหลือเกิน แต่วันนี้เราจะใช้ opensource ตัวนึงที่มีชื่อว่า FCM Toolbox เอาไว้เป็นตัวแสดง Notification ให้เราแทน โดยที่เราไม่ต้องแตะโค้ดฝั่ง Android เลย ใครที่สนใจอยากพัฒนาต่อก็สามารถเข้าไปดูได้ที่
https://github.com/SimonMarquis/FCM-toolbox
ทีนี้การใช้งานของเขาก็มีข้อเสียเหมือนกันนะ เพราะข้อมูล notification ต่างๆจะเข้าสู่ database ของเขาด้วยดังนั้นถ้าจะใช้ควรใช้ในงานที่ไม่ต้องการความปลอดภัยมากนัก ถ้าต้องการประยุกต์ใช้งานจริงๆควรสร้าง FCM และ Android App เองนะ ^^
เอาหล่ะมาเริ่มกันเลย
ของที่เราต้องใช้มีแค่ ESP32 ตัวเดียวเลย สามารถสั่งซื้อได้ที่นี่เลย

















มาอธิบายโค้ดกันสักหน่อย ที่ function sendNotification จะมี parameter สองตัวคือ title กับ message ที่เราต้องการส่งข้อความนั่นเอง (ที่จริงควรมี token device กัย auth key ด้วย แต่ช่างมันเหอะ 55++)
พอเริ่ม function เราจะสร้าง HTTPClient ขึ้นมา เพื่อเชื่อมต่อไปยัง FCM พร้อมทั้งใส่ header ที่จำเป็นคือ Authorization กับ Content-type นั่นเอง
int sendNotification(String title,String message)
{
HTTPClient http;
http.begin("http://fcm.googleapis.com/fcm/send");
http.addHeader("Authorization",key);
http.addHeader("Content-Type","application/json");

พอตั้งค่าเสร็จแล้วต่อมาก็ถึงเวลา setup payload ที่จะส่งไป ก็ตาม format ของ json เลยซึ่งจริงๆแล้วเราสามารถส่ง notification อย่างอื่นไปได้เหมือนกันเช่น app link raw เป็นต้น แต่ตอนนี้เราจะส่งแบบเป็นข้อความก็พอ จากนั้นคำสั่ง http.POST(...) ก็จะทำการส่งข้อมูลเราเข้า fcm ทันที พร้อมกันกับเครื่อง Android ที่จะได้รับ notification นั้นด้วย

String data = String("{\"to\":\"")+device+"\",\"time_to_live\":60,\"priority\":\"high\",\"data\":{\"text\":{\"title\":\""+title+"\",\"message\":\""+message+"\",\"clipboard\":false}}}";
int httpCode = http.POST(data);



วันนี้ก็น่าจะมีประมาณเท่านี้ สามารถเอาโค้ดไปประยุกต์ใช้งานได้เลย อย่าลืมกด Like fanpage ให้ด้วยนะ ^^ 

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ESP8266 ควบคุมเว็ป(NodeMCU ESP8266 เชื่อมต่อ DHT11 เซ็นเซอร์วัดอุณหภูมิและความชื้น แสดงค่าผ่าน wifi web server)