ปัญหาเดิม
อุปกรณ์ IoT ส่งแต่ยอดสะสม ซึ่งเอาไปใช้ต่อยาก ธุรกิจต้องการ log รายช่วงเวลาตามวันทำงานของโรงงาน
สิ่งที่สร้าง
บริการ Python ใน Docker ที่ฟัง MQTT แปลงยอดสะสมเป็นยอดต่อช่วง 10 นาที เทียบแผนใน ERP และส่งแจ้งเตือนผ่าน n8n ข้อมูลนี้เป็นฐานของกราฟยอดต่อชั่วโมงในแดชบอร์ด
ฟีเจอร์หลัก
- เริ่มบันทึกเมื่อยอดขยับจริงเท่านั้น
- ตรวจจับการรีเซ็ตตัวนับของเครื่อง แล้วขึ้นล็อตใหม่
- หยุดเมื่อถึงยอดตามแผนใน ERP หรือไม่ขยับนาน 60 นาที
- รีสตาร์ตแล้วโหลดสถานะล่าสุดจากฐานข้อมูล
- ประกาศรายการไลน์ที่ทำงานอยู่กลับไปที่ MQTT ให้ระบบอื่นใช้
- แจ้งเตือนผ่าน n8n
เบื้องหลังทางเทคนิค
- แยกค่าแรกจริงออกจาก noise: ค่าแรกต้องเท่ากับยอดสะสม ส่วนตัวนับที่ลดลงหมายถึงรีเซ็ต
- paho-mqtt รันใน thread แยก ใช้ lock คุม buffer แล้ว flush เป็นช่วง 10 นาที
- วันทำงานตัดรอบ 08:00 และแก้ปัญหา TLS ตอนต่อ SQL Server จากใน container