การส่งข้อความจาก ESP32 ไปยัง Telegram
ในยุคที่เทคโนโลยี IoT (Internet of Things) ได้รับความนิยมและมีการใช้งานอย่างแพร่หลาย ไม่ว่าจะในอุตสาหกรรม การเกษตร อาคารอัจฉริยะ รวมถึงงานวิจัยต่าง ๆ การสื่อสารระหว่างอุปกรณ์ IoT กับผู้ใช้งานหรือระบบอื่น ๆ ถือเป็นหัวใจสำคัญอย่างหนึ่ง หนึ่งในโปรโตคอลหรือแพลตฟอร์มที่นักพัฒนาและผู้สนใจ IoT นิยมใช้กันเพื่อส่งข้อมูลหรือตรวจสอบสถานะของอุปกรณ์ก็คือการส่งข้อความผ่านแพลตฟอร์มสื่อสารออนไลน์ เช่น Telegram, Line, Slack, หรือแพลตฟอร์มอื่น ๆ

เริ่มจากตรงไหนดีนะ ?
Telegram นับเป็นแพลตฟอร์มที่ค่อนข้างเป็นที่นิยมในกลุ่มนักพัฒนาสายเทคโนโลยีและ IoT เนื่องจาก Telegram มี Telegram Bot API ที่เอื้อให้เราสามารถเขียนโปรแกรมสื่อสารกับผู้ใช้งานหรือกลุ่มผู้ใช้งานได้อย่างอัตโนมัติ มีความปลอดภัยและมีความน่าเชื่อถือสูง อีกทั้งยังมีฟังก์ชันรองรับการแชร์ข้อมูลหลายประเภท ทำให้เมื่อต้องการพัฒนาโครงการที่ต้องการแจ้งเตือน แจ้งข้อมูล หรือรับส่งข้อความเชิงระบบ (System messages) สามารถทำได้อย่างสะดวก
ขณะเดียวกัน ESP32 เป็นไมโครคอนโทรลเลอร์ (Microcontroller) ที่ได้รับความนิยมอย่างสูงในโครงการ IoT ต่าง ๆ เพราะมีหน่วยประมวลผลที่เร็ว มีหน่วยความจำมากกว่าไมโครคอนโทรลเลอร์รุ่นก่อน ๆ และที่สำคัญคือมีโมดูล Wi-Fi และ Bluetooth ในตัว ทำให้การพัฒนาโปรเจกต์ IoT ที่ต้องเชื่อมต่ออินเทอร์เน็ตเป็นเรื่องง่ายและสะดวกมาก
การประยุกต์ใช้งาน ESP32 ในการส่งข้อความแจ้งเตือน (Notification) ไปยัง Telegram จึงเป็นวิธีที่นิยมและเป็นประโยชน์อย่างมาก ไม่ว่าจะใช้เพื่อแจ้งข้อมูลสถานะอุปกรณ์ สภาพอากาศ การตรวจจับความเคลื่อนไหว การรักษาความปลอดภัย หรือการใช้งานอื่น ๆ ที่ต้องการแจ้งเตือนแบบเรียลไทม์
ฮาร์ดแวร์ที่เหมาะสม.
ก่อนอื่นควรทำความเข้าใจก่อนว่าเหตุใด ESP32 ถึงได้รับความนิยมอย่างล้นหลามในวงการ IoT และ Maker ทั่วไปสามารถพัฒนาได้ง่ายทั้งการใช้งานในภาษา python หรือ c++ สามารถพัฒนาผ่านเครื่องมือ Arduino IDE ได้เลยโดยไม่ต้องมองหาเครื่องมือใหม่ๆ จากเหตุผลทั้งหมดนี้ ESP32 จึงกลายเป็นตัวเลือกอันดับต้น ๆ ของผู้ที่ต้องการสร้างระบบ IoT ได้อย่างรวดเร็วและมีประสิทธิภาพ
-
ประสิทธิภาพสูง
- ESP32 มี CPU แบบ Dual-core (Xtensa® 32-bit LX6) ที่ความถี่สัญญาณนาฬิกาสูงสุดถึง 240 MHz ทำให้สามารถประมวลผลได้หลากหลายทั้งงานเบาและงานที่ซับซ้อน
- หน่วยความจำ (RAM) สูงถึงประมาณ 512 KB และมี Flash memory ที่เพียงพอสำหรับโหลดโปรแกรมขนาดใหญ่กว่าไมโครคอนโทรลเลอร์ทั่วไป
-
การเชื่อมต่อ (Connectivity)
- รองรับ Wi-Fi มาตรฐาน 802.11 b/g/n ในตัว จึงเชื่อมต่ออินเทอร์เน็ตได้อย่างง่ายดาย
- รองรับ Bluetooth v4.2 และ Bluetooth Low Energy (BLE) ทำให้อุปกรณ์สื่อสารแบบไร้สายได้สะดวก
-
การสนับสนุนจากคอมมูนิตี้ (Community Support)
- เป็นที่นิยมมากในหมู่นักพัฒนา IoT และ Maker จึงมีตัวอย่างโค้ด ตัวอย่างโปรเจกต์ คู่มือ และไลบรารีต่าง ๆ ให้พร้อมใช้งานอย่างแพร่หลาย
- สามารถพัฒนาโปรแกรมได้ผ่านหลายแพลตฟอร์ม เช่น Arduino IDE, PlatformIO, ESP-IDF
-
ราคาประหยัดและติดตั้งง่าย
- บอร์ดพัฒนา ESP32 หาซื้อได้ง่ายในราคาย่อมเยา
- มีขนาดเล็ก พกพาสะดวก และการเขียนโปรแกรมไม่ยุ่งยากเหมือนสมัยก่อน
Application ที่เหมาะสม
จริงๆบทความนี้อาจจะไม่เกิดขึ้น หากเรายังใช้งานรูปแบบการส่งข้อความแบบเดิมๆของ line notify ซึ่งหากใครตามข่าวก็จะทราบว่า line notify กำลังจะยกเลิกให้บริการแบบฟรีแล้วเปลี่ยนเป็น API ตัวเสียค่าใช้จ่าย จึงเป็นส่วนที่ทำให้เราได้เปิดโอกาศหาเครื่องมือใหม่ๆ ที่สามารถส่งข้อความได้ระหว่างไมโครคอนโทรลเลอร์กับตัว application ในมือถือได้ ดังนั้น Telegram จึงเป็นแอปพลิเคชันสำหรับการส่งข้อความ (Messaging Application) ที่มีโครงสร้างภายในคล้ายคลึงกับแอปส่งข้อความอื่น ๆ อย่าง Line, WhatsApp, Signal, เป็นต้น แต่ Telegram มีจุดเด่นหลายอย่าง เช่น
-
รองรับ Bot (Telegram Bot API)
- Telegram เปิดให้สร้างบอท (Bot) ได้ง่าย ผ่านการสนทนากับ BotFather
- เมื่อได้ Token ของ Bot แล้ว เราสามารถสื่อสารกับ API ของ Telegram เพื่อรับหรือส่งข้อความต่าง ๆ โดยใช้โปรโตคอล HTTPS หรือ Webhook
-
ความปลอดภัย
- Telegram ใช้การเข้ารหัสปลายทาง (End-to-End Encryption) สำหรับการคุยแบบ Secret Chat (แม้ว่าการคุยธรรมดาจะไม่ E2EE เต็มรูปแบบ แต่โดยรวมยังได้รับการเข้ารหัสบนเซิร์ฟเวอร์ของ Telegram)
- เป็นหนึ่งในแอปส่งข้อความที่ได้รับความเชื่อถือด้านความปลอดภัย
-
โอเพ่นซอร์สบางส่วนและเปิดรับนักพัฒนา
- Telegram มี API และเอกสารรองรับการพัฒนาบอท หรือแม้แต่การสร้างแพลตฟอร์มเสริม
-
มีผู้ใช้งานมาก และใช้งานได้หลายแพลตฟอร์ม
- Telegram ถูกใช้อย่างแพร่หลายทั่วโลก
- รองรับการใช้งานผ่านแอปพลิเคชันบนสมาร์ตโฟน ทั้ง Android และ iOS
- รองรับการใช้งานบนคอมพิวเตอร์ผ่าน Windows, macOS, Linux และผ่าน Web
จากคุณสมบัติเหล่านี้ การนำ ESP32 มาส่งข้อความแจ้งเตือนหรือข้อมูลต่าง ๆ ไปยัง Telegram จึงสะดวก รวดเร็ว และมีความยืดหยุ่นสูง ไม่ว่าเราจะใช้ในงานด้านแจ้งเตือนสภาพอากาศ การตรวจจับความเคลื่อนไหว หรือแจ้งเตือนเหตุฉุกเฉิน การผสานกันระหว่าง ESP32 และ Telegram จะช่วยให้งานต่าง ๆ สำเร็จได้ง่ายขึ้น
ความสามารถ
ภาพรวมของการส่งข้อความผ่าน Telegram Bot API
การสื่อสารระหว่างอุปกรณ์หรือไมโครคอนโทรลเลอร์ เช่น ESP32 กับ Telegram จะเกิดขึ้นผ่าน Telegram Bot API เป็นหลัก โดยมีโครงสร้างพื้นฐานดังนี้
-
สร้าง Bot ใน Telegram
- เราต้องติดต่อกับ “BotFather” ซึ่งเป็นบอทพิเศษของ Telegram เพื่อขอสร้างบอทตัวใหม่
- เมื่อสร้างบอทเสร็จ BotFather จะมอบ Token กลับมาให้เรา ซึ่ง Token นี้ใช้เป็นกุญแจสำหรับการเรียกใช้งาน API
-
ระบุ Chat ID
- เพื่อส่งข้อความได้ เราต้องรู้ Chat ID หรือ Channel ID ของปลายทางที่ต้องการส่งข้อความ ไม่ว่าจะเป็นกลุ่ม (Group), ช่อง (Channel) หรือแม้แต่ผู้ใช้คนเดียว (หากผู้ใช้งานสั่ง Start บอท)
- วิธีการหา Chat ID นั้นอาจใช้การเขียนสคริปต์เล็ก ๆ หรือใช้บอทอื่น ๆ ที่มีหน้าที่บอก Chat ID
-
เรียกใช้ฟังก์ชันส่งข้อความของ Telegram Bot API
- โดยปกติ การส่งข้อความผ่าน Telegram Bot API จะทำผ่าน URL ที่ Telegram กำหนด เช่น
https://api.telegram.org/bot<YourBotToken>/sendMessage?chat_id=<ChatID>&text=<YourText>
- นอกจากการส่งข้อความเป็นตัวอักษรแบบง่าย ๆ แล้ว ยังมีฟังก์ชันอื่น เช่น ส่งรูปภาพ ส่งเอกสาร ส่งสติกเกอร์ หรือแม้แต่ส่งพิกัด GPS ได้
- โดยปกติ การส่งข้อความผ่าน Telegram Bot API จะทำผ่าน URL ที่ Telegram กำหนด เช่น
-
โครงสร้างพื้นฐานสำหรับการพัฒนาบน ESP32
- ESP32 จะใช้ Wi-Fi เพื่อเชื่อมต่อกับอินเทอร์เน็ต
- จากนั้นจะมีการเชื่อมต่อผ่านโปรโตคอล HTTP(S) ส่งคำสั่ง GET หรือ POST เพื่อสื่อสารกับ Telegram Bot API
วิธีการทำงานของ ESP32 เพื่อส่งข้อความ
เมื่อ ESP32 ต้องการส่งข้อความไปยัง Telegram แนวคิดในการทำงานขั้นพื้นฐานจะมีขั้นตอนดังนี้
- ESP32 เชื่อมต่ออินเทอร์เน็ตผ่าน Wi-Fi
- ใช้ชื่อเครือข่าย (SSID) และรหัสผ่าน (Password) ของเรา
- เมื่อเชื่อมต่อสำเร็จ จะได้รับ IP Address และสามารถส่งข้อมูลผ่านโปรโตคอล TCP/IP ได้
- ระบุ Token และ Chat ID
- เตรียม Token ที่ได้รับจาก BotFather
- เตรียม Chat ID ของปลายทางที่ต้องการส่งข้อความ
- เรียกใช้งานไลบรารีหรือฟังก์ชัน HTTP
- โดยใช้คำสั่ง URL หรือ HTTP POST เพื่อส่งข้อมูลไปที่
api.telegram.org
ตามรูปแบบที่กำหนด - หรืออาจเลือกใช้ไลบรารีเฉพาะของ Arduino/ESP32 เช่น
UniversalTelegramBot.h
ซึ่งช่วยอำนวยความสะดวกและจัดการกับการเชื่อมต่อ Telegram Bot ได้ง่ายยิ่งขึ้น
- โดยใช้คำสั่ง URL หรือ HTTP POST เพื่อส่งข้อมูลไปที่
- ส่งข้อความตามค่าที่ต้องการ
- ตัวอย่างเช่น “แจ้งเตือน: พบความเคลื่อนไหวในห้อง” หรือ “อุณหภูมิห้องขณะนี้ 30 องศาเซลเซียส” เป็นต้น
- เช็คผลการส่งข้อความ เช่น ถ้าส่งสำเร็จหรือเกิดข้อผิดพลาด
- นำข้อมูลตอบกลับ (Response) มาประมวลผลต่อถ้าจำเป็น
- ในบางกรณี เราอาจต้องการอ่านข้อความของผู้ใช้ที่ส่งถึงบอท หรือจับพฤติกรรมบางอย่างเพื่อให้ ESP32 ตอบสนอง
- สามารถตั้งโหมดรับข้อความ (Polling) หรือ Webhook ได้
วิธีการทำงาน (Implementation)
ในส่วนนี้ เราจะอธิบายถึงขั้นตอนสำคัญที่ต้องเตรียมและลงมือทำ เพื่อให้การเชื่อมต่อระหว่าง ESP32 และ Telegram สามารถเชื่อมต่อกันได้อย่างถูกต้อง แต่ก่อนอื่นเลยผู้เขียนจะข้ามขั้นตอนขั้นพื้นฐานไปบ้าง ตัวอย่างเช่นเมื่อเราต้องการเขียนโปรแกรมเชื่อมต่อบอร์ด esp32 ให้ใช้งานได้ เราจำเป็นจะต้องมีการติดตั้งบอร์ดให้เรียบร้อยก่อนการใช้งาน ซึ่งวิธีการในการติดตั้งการใช้งานบอร์ด esp32 สามารถหาได้ทั่วไปในอินเตอร์เน็ต รวมไปถึงวิธีในการเลือก port วิธีการเลือกชนิดบอร์ดให้ตรงกับฮาร์แวร์ของเราเอง(อันนี้สำคัญมากเพราะเท่าที่เคยเจอเลือกกันผิดเยอะมาก). ทั้งหมดเหล่านี้ผู้ใช้งานจะต้องเข้าใจ และสามารถทำได้ด้วยตนเองจึงจะไม่เกิดข้อผิดพลาดเล็กๆน้อยๆ
ตัวอย่างการเริ่มใช้งานบอร์ด esp32
เริ่มต้น ESP32 บน Arduino IDE
การสร้างบอทใน Telegram
- คุยกับ BotFather
- เปิดแอป Telegram หรือเข้าผ่าน Web
- ค้นหา
@BotFather
และเริ่มแชทกับมันโดยการกด start บริเวณด้านล่างเมนู - ใช้คำสั่ง
/newbot
เพื่อสร้างบอทตัวใหม่ - กรอกชื่อบอทและชื่อผู้ใช้งาน (username) ของบอท ตามที่ BotFather ขอ
- รับ Token
- เมื่อสร้างบอทเสร็จ BotFather จะส่งข้อความที่มี HTTP API Token ให้
- ให้คัดลอก Token นั้นเก็บไว้เป็นความลับ และใช้เฉพาะกับโปรเจกต์ของเรา
- เพิ่มบอทเข้ากลุ่มหรือส่งข้อความส่วนตัว
- หากต้องการส่งข้อความไปยังกลุ่ม ให้เพิ่มบอทของเราลงในกลุ่มนั้น และตรวจสอบว่าอนุญาตให้บอทส่งข้อความได้
- หรือหากต้องการส่งเป็นแชทส่วนตัว ก็ต้องเริ่มแชทกับบอทก่อน (กดปุ่ม Start)
การหา Chat ID
ก่อนจะเริ่มส่งข้อความด้วยโค้ด จำเป็นต้องทราบ Chat ID ของปลายทางเสียก่อน มีหลายวิธี:
- ใช้บอทสำเร็จรูป
- บอทบางตัวใน Telegram ออกแบบมาเพื่อบอก Chat ID เช่น
@userinfobot
หรือ@RawDataBot
หรือ@get_id_bot
หรือ@IDBot
- เพียงพิมพ์ข้อความหาพวกมัน หรือเพิ่มพวกมันในกลุ่มที่ต้องการ ก็จะบอก Chat ID ให้ทราบ
- บอทบางตัวใน Telegram ออกแบบมาเพื่อบอก Chat ID เช่น
- เขียนโค้ดสั้น ๆ เพื่อดึงข้อมูล
- เราสามารถเรียก Telegram API เอง เช่น
https://api.telegram.org/bot<YourBotToken>/getUpdates
- แล้วดู JSON ที่ส่งกลับมาว่า Chat ID คือเลขอะไร
- เราสามารถเรียก Telegram API เอง เช่น
การใช้ไลบรารี UniversalTelegramBot (ทางเลือกยอดนิยม)
ถึงแม้ว่าเราจะสามารถส่งข้อความผ่านการสร้าง URL แล้วใช้ WiFiClient
หรือ HTTPClient
ทำการ GET
หรือ POST
ได้โดยตรง แต่เพื่อความสะดวก สามารถใช้ไลบรารีอย่าง UniversalTelegramBot ซึ่งนิยมใช้มากใน Arduino/ESP32
- ติดตั้งไลบรารี
- ใน Arduino IDE ไปที่ Tools > Manage Libraries แล้วค้นหา “UniversalTelegramBot”
- ติดตั้งเวอร์ชันล่าสุด
- นำเข้าไลบรารีในสเก็ตช์
#include <WiFi.h> #include <WiFiClientSecure.h> #include <UniversalTelegramBot.h>
- ประกาศตัวแปร
const char* ssid = "YOUR_SSID"; const char* password = "YOUR_PASSWORD"; const char* botToken = "YOUR_BOT_TOKEN"; const long chatId = 123456789; // Chat ID ของเราหรือกลุ่ม WiFiClientSecure secured_client; UniversalTelegramBot bot(botToken, secured_client);
- ตั้งค่า Certificate (ถ้าจำเป็น)
- Telegram ใช้ HTTPS ดังนั้นต้องมีการตั้งค่า SSL Certificate
- ไลบรารีบางเวอร์ชันอาจไม่บังคับใช้ Certificate Verification เต็มรูปแบบ หรือใช้ “Insecure” Mode ก็ได้ (ขึ้นอยู่กับเวอร์ชัน)
- ถ้าจำเป็นอาจตั้งค่า
secured_client.setInsecure();
เพื่อข้ามการตรวจ SSL
- เชื่อมต่อ Wi-Fi
- ในฟังก์ชัน
setup()
เขียนโค้ดเชื่อมต่อ Wi-Fi ให้สำเร็จ
- ในฟังก์ชัน
- การส่งข้อความ
- ใช้ฟังก์ชัน
sendMessage
ของ UniversalTelegramBot ได้เลย เช่นbot.sendMessage(chatId, "Hello from ESP32", "");
- ใช้ฟังก์ชัน
- การรับข้อความ (ถ้าต้องการ)
- ไลบรารีนี้สนับสนุนการรับข้อความผ่านฟังก์ชัน
getUpdates
- จะเรียกการตรวจเช็คทุก ๆ x วินาที หากมีข้อความมาก็จะส่งข้อมูลมาให้เราประมวลผล
- ไลบรารีนี้สนับสนุนการรับข้อความผ่านฟังก์ชัน
ตัวอย่างการทำงาน (Example)
ในส่วนนี้จะมีตัวอย่างโค้ดแบบเต็ม ๆ สำหรับการส่งข้อความผ่าน ESP32 ไปยัง Telegram ผู้เขียนจะอธิบายทีละบรรทัดเพื่อให้เข้าใจได้ชัดเจนแน่นอนว่าการเรียกใช้งานนั้น เราสามารถทำได้ง่ายที่สุดคือการ เรียกใช้งานจากตัวอย่างของไรบรารี่เอง ซึ่งเราสามารถกดเปิดได้ทันที หรือหากไม่สะดวกให้ผู้อ่านทำการก๊อปโค้ดด้านล่างนี้เพื่อนำไปศึกษาต่อไป
ตัวอย่างรูป : แสดงหน้าแอป telegram บนมือถือที่แสดงข้อความ “ข้อความจาก Esp32 headwere” ที่ถูกสแปมมาจากการเขียนโค้ดใน arduino IDE ที่เป็นตัวอย่างจากไฟล์ Example ของตัวไรบรารี่เอง.

หมายเหตุ: ตัวอย่างนี้ใช้ Arduino IDE ร่วมกับไลบรารี UniversalTelegramBot โดยเปิดโหมด Insecure SSL เพื่อความสะดวกในการทดสอบ ซึ่งเป็นส่วนหนึ่งที่โค้ดจัดการการส่งข้อมูลที่มีการเข้ารหัสให้กับผู้ใช้งาน ดังนั้นการส่งข้อความผ่าน telegram จึงมีความปลอดภัยของข้อมูลระหว่างผู้ส่งและผู้รับ
ตัวอย่างโค้ดส่งข้อความเบื้องต้น
/***************************************************
ตัวอย่าง: ส่งข้อความจาก ESP32 ไปยัง Telegram
โดยใช้ UniversalTelegramBot (Insecure SSL)
****************************************************/
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
// ใส่ SSID และ Password ของ Wi-Fi ที่ต้องการเชื่อมต่อ
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
// ใส่ Token ของบอทที่ได้จาก BotFather
#define BOT_TOKEN "YOUR_BOT_TOKEN"
// กำหนด Chat ID ของปลายทางที่จะส่งข้อความ
// (ตัวเลขค่าเดียวถ้าส่งไปยังแชทส่วนตัว หรือเลขลบถ้าเป็นกลุ่ม)
#define CHAT_ID "123456789"
// ประกาศอ็อบเจกต์ WiFiClientSecure
WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
void setup() {
Serial.begin(115200);
// เชื่อมต่อ Wi-Fi
WiFi.begin(ssid, password);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("Wi-Fi connected.");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// ตั้งค่าความปลอดภัย (Insecure: ข้ามการตรวจสอบ SSL Certificate)
secured_client.setInsecure();
// ส่งข้อความทดลองไปยัง Telegram
String message = "สวัสดีจาก ESP32! นี่คือข้อความทดสอบ";
bot.sendMessage(CHAT_ID, message, "");
}
void loop() {
// ถ้าไม่ต้องการทำอะไรต่อเนื่อง ก็เว้นไว้
// หรือจะใช้รับข้อความ/ตรวจสอบข้อมูลเพิ่มเติมก็ตามโปรเจกต์
}
ตัวอย่างการประยุกต์ใช้งาน esp32 เพื่อส่งข้อมูลโดยใช้การอ่านค่าจากเซ็นเซอร์ DHT22

ต่อไปเป็นตัวอย่างการใช้งานร่วมกับเซนเซอร์ เช่น เซนเซอร์อุณหภูมิและความชื้น DHT22 (หรือ DHT11 ก็ได้ แต่ค่าอาจคลาดเคลื่อนเล็กน้อย) เราสามารถประยุกต์ใช้งานกับเซ็นเซอร์ตัวใดก็ได้ให้เหมาะสมกับอุปกรณ์ที่เรามีอยู่ หากผู้ใช้งานมีอุปกรณ์อื่นๆก็สามารถนำไปประยุกต์ใช้ได้ทั้งหมด ตัวเลือก DHT22 เป็นอุปกรณ์ยอดนิยม และหาได้ง่ายการทำงานไม่ซับซ้อน.
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include "DHT.h"
// กำหนดขา DHT ที่เชื่อมต่อ
#define DHTPIN 4
// เลือกรุ่นเซนเซอร์ DHT22 หรือ DHT11
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// ใส่ SSID และ Password ของ Wi-Fi
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
// ใส่ Token และ Chat ID
#define BOT_TOKEN "YOUR_BOT_TOKEN"
#define CHAT_ID "123456789"
WiFiClientSecure secured_client;
UniversalTelegramBot bot(BOT_TOKEN, secured_client);
unsigned long lastTime = 0;
unsigned long timerDelay = 30000; // 30 วินาที
void setup() {
Serial.begin(115200);
// เริ่มต้นเซนเซอร์
dht.begin();
// เชื่อมต่อ Wi-Fi
WiFi.begin(ssid, password);
Serial.print("Connecting to Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWi-Fi connected.");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// ตั้งค่า SSL เป็น Insecure
secured_client.setInsecure();
}
void loop() {
// ส่งข้อมูลทุก ๆ 30 วินาที
if (millis() - lastTime > timerDelay) {
lastTime = millis();
float h = dht.readHumidity();
float t = dht.readTemperature(); // องศาเซลเซียส
// ตรวจสอบว่าการอ่านค่าล้มเหลวหรือไม่
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// สร้างข้อความเพื่อส่งไปยัง Telegram
String message = "อุณหภูมิ: " + String(t) + " °C\n";
message += "ความชื้น: " + String(h) + " %";
// ส่งข้อความ
Serial.println("Sending message to Telegram...");
bot.sendMessage(CHAT_ID, message, "");
}
}
ข้อควรระวังและการประยุกต์ใช้
ข้อควรระวังในการใช้งาน ให้ผู้อ่านพิจารณาดังข้อย่อยต่อไปนี้ด้วยเพื่อไม่ให้เกิดความผิดพลาดในระหว่างการทำงานของตัวอุปกรณ์ หรืออาจจะเป็นเทคนิควิธีการเล็กๆน้อยๆ ที่อาจจะก่อให้เกิดปัญหาในอนาคต
- การเปิดเผย Token
- Token ที่ได้จาก BotFather ถือเป็น “รหัสลับ” สำหรับการเรียกใช้งาน API หากมีใครได้ไป จะสามารถส่งข้อความจากบอทของเราได้ทันที
- ควรเก็บเป็นความลับ ไม่แชร์ลง GitHub แบบสาธารณะ หรือกลุ่มสาธารณะ
- SSL Certificate
- ในกรณีที่ใส่
setInsecure()
เป็นการปิดการตรวจสอบ SSL Certificate ซึ่งอาจมีความเสี่ยงด้านความปลอดภัย - ในโปรเจกต์จริง ควรตั้งค่า certificate อย่างถูกต้อง หรือใช้งานไลบรารีที่รองรับการตรวจสอบ SSL
- ในกรณีที่ใส่
- ทรัพยากรของ ESP32
- ถึงแม้ ESP32 จะมีทรัพยากรเยอะ แต่เมื่อใช้การเชื่อมต่อ Wi-Fi และ SSL ก็สิ้นเปลืองหน่วยความจำและพลังงานมากกว่าปกติ
- ถ้าต้องการประมวลผลอื่น ๆ อย่างหนัก ควรคำนึงถึงข้อจำกัดของ RAM และ Flash
- อัตราการส่งข้อความ
- Telegram Bot มีการจำกัดอัตราการส่งข้อความ (Rate limit) ไม่ให้ส่งถี่เกินไป
- ถ้าต้องการส่งข้อความจำนวนมาก ต้องบริหารจัดการอย่างเหมาะสม เพื่อไม่ให้บอทถูกจำกัด
สรุปและการต่อยอด
ESP32 เป็นไมโครคอนโทรลเลอร์ที่มาพร้อม Wi-Fi และ Bluetooth ในตัว ทำให้การพัฒนาโปรเจกต์ IoT ที่ต้องเชื่อมต่ออินเทอร์เน็ตและสื่อสารผ่านแอปแชทเช่น Telegram เป็นเรื่องง่ายขึ้นมาก เราสามารถสร้างบอทใน Telegram แล้วดึง Token มาใช้ในโค้ดของ ESP32 เพื่อส่ง (หรือรับ) ข้อความจากผู้ใช้หรือกลุ่มผู้ใช้ได้ทันที การส่งข้อความผ่าน Telegram Bot API สามารถทำได้หลายรูปแบบ ทั้งการส่งข้อความธรรมดา ข้อความแบบมีปุ่มโต้ตอบ ส่งรูปภาพ ไฟล์ เสียง หรือแม้กระทั่งการสร้าง Inline Keyboard
ประโยชน์ของการผสาน ESP32 กับ Telegram:
- แจ้งเตือนเหตุการณ์จากอุปกรณ์ IoT ได้ตลอดเวลา
- สะดวกและปลอดภัย มีการจัดการ Token เพื่อรักษาความลับ
- ใช้งานได้หลากหลาย ทั้งงานทางบ้านและงานอุตสาหกรรม
- มีการรับ-ส่งข้อมูลแบบโต้ตอบ เรียลไทม์ ได้ทันที
ในมุมของการต่อยอด (Future Work) เราอาจพิจารณาเรื่องต่อไปนี้:
- เพิ่มความปลอดภัย
- ตั้งค่า SSL Certificate Verification เพื่อป้องกันการปลอมแปลง
- เก็บ Token และข้อมูลสำคัญไว้บน Flash แบบเข้ารหัส หรือในระบบ Cloud ที่ปลอดภัย
- สร้าง Dashboard
- นอกจากการแจ้งเตือนแบบเรียลไทม์ผ่าน Telegram อาจสร้าง Dashboard ด้วย Web Application หรือ Mobile Application เพื่อให้เห็นกราฟ สถิติ หรือบันทึกข้อมูลย้อนหลัง
- การเก็บข้อมูลใน Cloud
- หากต้องการเก็บประวัติข้อมูล (เช่น อุณหภูมิ หรือสถานะสวิตช์) ก็สามารถส่งต่อไปยังฐานข้อมูลใน Cloud (เช่น Firebase, AWS, หรือ MQTT Broker) แล้วใช้ Telegram เป็นช่องทางแจ้งเตือนอย่างเดียว
- ขยายระบบควบคุมจากระยะไกล
- ออกแบบให้บอทรองรับคำสั่งต่าง ๆ เช่น
/on
/off
หรือ/status
แล้วให้ ESP32 ประมวลผลคำสั่งนี้เพื่อควบคุมอุปกรณ์
- ออกแบบให้บอทรองรับคำสั่งต่าง ๆ เช่น
- รองรับข้อความภาษาไทยหรือหลายภาษา
- Telegram Bot API รองรับ Unicode ดังนั้นเราสามารถส่งข้อความภาษาไทยได้สบาย ๆ
- แต่ควรตรวจสอบ Encoding เวลาอ่าน-ส่งข้อมูล อาจใช้ UTF-8 เพื่อให้รองรับอักขระต่าง ๆ
- Integrate กับ Sensor หรือ Module อื่น ๆ อีกมาก
- เช่น กล้อง ESP32-CAM ถ่ายภาพแล้วส่งรูปผ่าน Telegram
- เชื่อมต่อ RFID หรือ Fingerprint sensor เพื่อแจ้งเตือนเหตุการณ์ผ่าน Telegram
สุดท้ายนี้ : การผสานการทำงานระหว่าง ESP32 กับ Telegram โดยใช้ Telegram Bot API เป็นอีกหนึ่งแนวทางการสร้าง โซลูชัน IoT ที่มีความยืดหยุ่นสูง และช่วยให้งานแจ้งเตือน แจ้งข้อมูล หรือแม้แต่ควบคุมอุปกรณ์จากระยะไกลเป็นไปได้อย่างมีประสิทธิภาพ โดยไม่จำเป็นต้องพัฒนาระบบแอปพลิเคชันส่งข้อความขึ้นมาเองใหม่ทั้งหมด หนึ่งในจุดเด่นที่สำคัญของ telegram คือการบริหารจัดการ Bot Token และ Chat ID ให้รัดกุม รวมถึงคำนึงถึงอัตราการส่งข้อความ และการเลือกใช้ไลบรารีหรือการตั้งค่า SSL เพื่อความปลอดภัย หากนำไปใช้ในโครงการจริง ควรพิจารณาเรื่องความเสถียรของระบบ การจัดการข้อผิดพลาด (Error handling) และการอัปเดต Firmware ของ ESP32 ได้จากระยะไกล (OTA Update) ด้วย
โดยสรุปแล้ว หากท่านได้ทำตามบทความนี้และใช้ตัวอย่างโค้ดประกอบ ก็จะเห็นได้ว่า “การส่งข้อความแจ้งเตือนจาก ESP32 ไปยัง Telegram” เป็นกระบวนการที่ไม่ซับซ้อนมาก แต่จะเปิดโอกาสให้เราได้สร้างแอปพลิเคชัน IoT ที่ทรงพลังและต่อยอดได้ในอีกหลากหลายโครงการ ทำให้ชีวิตสะดวกปลอดภัย ตอบสนองความต้องการในยุคดิจิทัลอย่างสมบูรณ์
(ข้อมูลอ้างอิงเพิ่มเติม)
- เว็บไซต์ทางการของ Arduino สำหรับดาวน์โหลด Arduino IDE
- เอกสาร UniversalTelegramBot ใน GitHub
- ESP32 Forum สำหรับถามตอบปัญหาเฉพาะทาง
- Telegram Bot API เอกสารอย่างเป็นทางการของ Telegram