โปรเจคนับคนเข้าออกแจ้งเตือน telegram #โปรเจค #arduinop
ถ้าใครกำลังทำโปรเจกต์ “นับคนเข้า-ออกแล้วแจ้งเตือน Telegram” แบบที่ในรูปขึ้นข้อความประมาณ “เข้า: 3 คน / ออก: 1 คน / คนในห้อง: 2” (พร้อมอุณหภูมิ 25.x°C) อันนี้คือสิ่งที่ผมสรุปเพิ่มจากที่ลองทำเอง เพื่อให้ใช้งานได้เสถียรและคนค้นหาจาก Google แล้วทำตามได้ง่ายขึ้น 1) เตรียม Arduino IDE + ติดตั้ง ESP32 board manager ผมเจอบ่อยว่าลงบอร์ดไม่ครบแล้วคอมไพล์ไม่ผ่าน ให้ไปที่ Preferences > Additional Boards Manager URLs แล้วใส่ลิงก์ของ Espressif จากนั้นเปิด Boards Manager ค้นหา “esp32” แล้วติดตั้งให้เรียบร้อย เลือกบอร์ดให้ตรงรุ่น (เช่น ESP32 Dev Module) ก่อนอัปโหลดทุกครั้ง 2) สร้าง Telegram Bot และเตรียม Token/Chat ID ขั้นตอนที่ทำแล้วเวิร์กคือคุยกับ @BotFather เพื่อสร้างบอท จากนั้นได้ token มาเก็บไว้ในโค้ด (แนะนำอย่าเอา token ไปโพสต์สาธารณะ) ส่วน Chat ID ให้ทดสอบส่งข้อความเข้าบอทก่อน แล้วค่อยดึง chat id จาก getUpdates หรือใช้บอทช่วยเช็ก chat id ก็ได้ 3) โครงสร้างข้อความแจ้งเตือนให้คนอ่านง่าย ผมตั้งรูปแบบข้อความให้เหมือนบันทึกสถานะ เช่น - “ESP32 People Counter เริ่มทำงานแล้ว” ตอนบูต - “เข้า: 1 คน | คนในห้อง: 2” - “ออก: 1 คน | คนในห้อง: 1” - “อุณหภูมิ: 25.8 C” (ถ้ามีเซนเซอร์อุณหภูมิ) ข้อดีคือเปิด Telegram มาเห็นแล้วรู้ทันทีว่าตอนนี้เหลือกี่คนในห้อง 4) ทำให้แจ้งเตือน “ตอนเปลี่ยนแปลง” เท่านั้น (ลดสแปม) ทริคที่ช่วยมากคือเก็บค่าก่อนหน้าไว้ เช่น prevCount แล้วส่งข้อความเฉพาะตอน currentCount != prevCount พร้อมอัปเดต prevCount หลังส่งเสร็จ แบบนี้จะได้แจ้งเตือนเฉพาะเหตุการณ์ ไม่ยิงถี่ๆ ทุกลูป 5) แก้ปัญหา Wi‑Fi/Telegram หลุด ของผมเคยค้างช่วงเน็ตแกว่ง วิธีที่ช่วยคือ - เช็ก Wi‑Fi.status() ถ้าหลุดให้ reconnect - ตั้ง timeout/หน่วงเวลาเล็กน้อยหลังส่งข้อความ - ถ้าส่งไม่ผ่านให้ retry 1–2 ครั้งพอ ไม่งั้นระบบจะหน่วง 6) ไอเดียต่อยอดสำหรับงาน/การบ้านที่ต้อง “แบ่งปันใน Telegram” ถ้าใช้ทำงานกลุ่มหรือส่งให้ครูดู แนะนำเพิ่มข้อความสรุปรายวัน เช่น “วันนี้เข้า 12 ครั้ง ออก 12 ครั้ง” หรือทำปุ่มคำสั่งในบอท (/status) เพื่อเรียกดู “คนในห้องตอนนี้” ได้ทันที จะดูเป็นโปรเจกต์สมบูรณ์ขึ้นมาก ถ้าคุณมีค่าจากจอที่ขึ้น “คนในห้อง: 0/1/2” และข้อความ “แจ้งเตือนจำนวนคนในห้องเปลี่ยนแปลง” อยู่แล้ว แนะนำปรับรูปแบบแจ้งเตือนตามนี้ แล้วทดสอบสถานการณ์จริง (เดินเข้าออกหลายครั้ง) เพื่อเช็กว่าไม่นับเกิน/ไม่นับขาด และข้อความใน Telegram อ่านรู้เรื่องทุกครั้ง