Multi-branch Cold-Storage Monitoring
Giám sát Kho Lạnh Đa Chi nhánh
Monitor 64 cold rooms across 12 provinces — SMS/Zalo alerts on threshold breach, logs to InfluxDB.
Problem
A pharma distributor needed continuous temperature traceability per GSP for Ministry-of-Health audits. 64 cold rooms across 12 provinces; the prior paper-thermometer process couldn't pass audit.
Architecture
Pt100 (4-wire) → MAX31865 ADC → ESP32 (dual-core, OTA) → MQTT 5.0 over TLS → VPS Go service → InfluxDB 2.x → Grafana dashboard. Watermarked Grafana panels for audit trail. Multi-channel alerts: Twilio SMS (when data network drops) + Zalo OA (primary).
Stack & rationale
- Pt100 over DS18B20: ±0.15 °C accuracy; pharma needs ±0.5 °C.
- InfluxDB 2.x: native timeseries, auto-downsampling, fast queries.
- MQTT 5.0: stronger keepalive, retained messages restore state quickly.
Results (12 months)
| Metric | Value |
|---|---|
| Rooms monitored | 64 |
| Data points / day | 9.2 M |
| Real / false alerts | 18 / 2 |
| GSP audit | passed first try |
| Avg gateway uptime | 99.4% |
Lessons
Multi-channel alerts (SMS fallback) save you when the VPS or network is down. Hardware MUST have watchdogs (ESP32 task watchdog) — Python code crashes are routine.