Cyber Security
NetLens: A Passive Network Traffic Analyser and Visibility Dashboard for a College Computer Lab
Flows, top talkers and scan indicators for the lab's own network — headers only, no blocking, full history
- Python
- Scapy
- MySQL
- +2
ESP32 nodes on MQTT watch a +2 to +8 °C vaccine refrigerator, log every reading to MySQL and raise excursion alerts before doses are lost
Mapped to your syllabusVTU 2022 Scheme (OBE/CBCS) · BCS685 Major Project Phase-I · Semester 6Cold-Chain Temperature Monitoring is an end-to-end IoT system that keeps watch over vaccine storage where a few warm hours silently destroy doses. In a typical primary health centre (PHC), vaccines sit in an ice-lined refrigerator (ILR) that must stay between +2 °C and +8 °C; a broken compressor or an overnight power cut can push it out of range, and the standard twice-a-day manual thermometer reading discovers the damage only after the doses are compromised.
Our system places ESP32 nodes with waterproof DS18B20 probes inside the ILR and in a vaccine-carrier demonstration box. Every 30 seconds each node publishes a reading over MQTT to an Eclipse Mosquitto broker; nodes buffer readings in flash when the network is down and backfill with their original timestamps on reconnect, so no gap is silently papered over. A Python ingestion service subscribes to the broker and writes every reading into MySQL. An alert engine applies the WHO range rules — instantaneous breach, breach persisting beyond a grace window, plus a rolling z-score check that flags slow sensor drift a fixed threshold misses — and drives a buzzer on the node, a banner on the dashboard and a webhook stub for an SMS gateway. A Flask + Chart.js dashboard shows live temperatures, device heartbeats and an exportable excursion log for the district immunisation officer.
The build costs under ₹3,000 per node and reuses skills the VTU CS syllabus already teaches, making it a strong, demonstrable major project.
Syllabus alignment
Vaccines stored at a PHC must remain between +2 °C and +8 °C, but compliance is checked only twice a day by reading a thermometer and writing it in a register. An excursion caused by a failed compressor, an evening power cut or a door left ajar is therefore discovered late — often after the doses have lost potency — and there is no record to show how long the excursion lasted or which other doses were affected. Health workers are blamed for failures they cannot see, and the district office has no data to prioritise which ILRs need repair or replacement.
There is a need for a low-cost, continuously logging temperature-monitoring and alerting system — sensor nodes on an MQTT backbone, a durable database store, rule-based and statistical excursion detection, and a dashboard with an auditable excursion log — that a PHC can afford, that keeps working through network outages by buffering and backfilling readings, and that gives both the PHC staff and the district immunisation officer timely, evidenced alerts instead of a next-morning surprise.
Vaccines are biological products that lose potency once warmed. The national immunisation programme keeps them in a strict +2 °C to +8 °C cold chain from manufacturer to arm, yet the last mile — the PHC ILR and the vaccine carrier — is monitored mostly by hand: a health worker reads a thermometer twice a day and writes it in a register. Excursions that happen between readings, or overnight, are simply not recorded. This project builds a low-cost MQTT-based monitoring and alerting system that closes that gap with continuous, timestamped, auditable data.
The WHO's immunisation supply-chain guidance treats temperature monitoring as core cold-chain infrastructure, and India's Universal Immunisation Programme runs one of the largest such chains in the world. The failure mode is mundane: compressors fail, power fails, doors are left open. The technology to catch these failures early is now cheap — an ESP32, a DS18B20 probe and a Wi-Fi connection cost less than a thermal box of Hepatitis B vaccine.
devices, readings, excursions, acknowledgements) with indexed time-series queries.In scope
Out of scope
The project follows an iterative-incremental SDLC with four working increments, each ending in a demonstrable, testable slice — appropriate because the alert rules and dashboard can only be designed sensibly once real node data flows.
| Phase | Weeks | Activities | Deliverable |
|---|---|---|---|
| 1. Requirements & design | 1–2 | PHC workflow study (secondary sources), sensor/broker selection, schema and topic design, Phase-I report | Design doc + BCS685 report |
| 2. Node + ingestion increment | 3–5 | Node firmware (read → publish → buffer), Mosquitto setup, ingestion service, MySQL schema | One node streaming into MySQL |
| 3. Alerting increment | 6–9 | Threshold + persistence rules, rolling z-score engine, excursion lifecycle, buzzer/webhook actions | Alert engine with test suite |
| 4. Dashboard & hardening | 10–12 | Flask/Chart.js UI, heartbeat page, CSV export, outage/backfill tests, soak test (7 days) | Complete system v1.0 |
| 5. Evaluation & reporting | 13–14 | Full test-matrix execution, demo script, final report and PPT | Phase-II submission |
Testing approach: unit tests for the alert rules (synthetic series); integration tests that publish fake MQTT readings and assert DB rows; scenario tests — warm-water bath for a fast breach, door-open test for a slow drift, Wi-Fi/Broker cut for store-and-forward; a 7-day soak test on the mini-fridge to quantify packet loss and timestamp continuity; every test recorded in a matrix (ID, input, expected, actual, status).
The system is a four-tier publish–subscribe architecture with durable storage and a rules engine:
device_id, ts, temp_c, seq) and publish to topic coldchain/<device_id>/readings with QoS 1; a last-will message on coldchain/<device_id>/status marks a crashed node offline.coldchain/#, validates each payload against the schema, de-duplicates by sequence number, and writes to MySQL. The same process hosts the alert engine: WHO threshold rules with a 5-minute persistence window, plus a rolling 24 h mean/σ z-score that flags slow drift; alerts update the excursions table and fan out to buzzer (MQTT command topic), dashboard banner and webhook stub.flowchart LR
DS["DS18B20 probes (1-Wire)"] --> N["ESP32 node<br/>30 s cycle, flash buffer"]
N -->|"MQTT QoS 1<br/>coldchain/id/readings"| B["Eclipse Mosquitto broker"]
N -.->|"last-will status"| B
B --> ING["Python ingestion service"]
ING --> DB[("MySQL: devices, readings,<br/>excursions, acknowledgements")]
ING --> AE["Alert engine: WHO rules +<br/>rolling 24 h z-score"]
AE -->|"command topic"| BUZ["Node buzzer"]
AE --> WEB["Webhook stub (SMS gateway)"]
DB --> API["Flask JSON API"]
API --> UI["Chart.js dashboard +<br/>excursion log + CSV export"]flowchart TD
OK["Normal: 2-8 °C"] -->|"reading outside range"| PEND["Breach pending"]
PEND -->|"back inside within 5 min"| OK
PEND -->|"breach persists > 5 min"| OPEN["Excursion OPEN + buzzer + banner"]
OPEN -->|"staff acknowledges with remark"| ACK["Acknowledged"]
ACK -->|"temperature back in range 10 min"| CLOSED["Closed: duration, min/max logged"]Key design decisions: QoS 1 gives at-least-once delivery so the sequence-number de-duplication is what guarantees correctness; buffer-and-backfill preserves the true reading timestamps instead of shifting them to reconnect time; and both rule and statistical layers are kept because fast breaches (power cut) and slow breaches (worn gasket) have different signatures.
Module 01
ESP32 firmware in C: DS18B20 read cycle on the 1-Wire bus with CRC check, JSON payload construction, MQTT publishing at QoS 1 with unique device ID, automatic Wi-Fi and broker reconnection with exponential backoff, flash-resident ring buffer holding up to 48 hours of readings when offline, and timestamp-preserving backfill plus last-will status publishing on reconnect.
Module 02
Mosquitto deployment with password-file authentication and persistence; Python ingestion service (paho-mqtt) subscribing to coldchain/#, validating payloads against a schema, de-duplicating by device sequence number, and writing readings into the MySQL time-series table with indexes tuned for range queries; heartbeat tracking that records last-seen time per device.
Module 03
Rule layer implementing the WHO +2 to +8 °C band with a five-minute persistence grace window to reject door-opening blips; analytics layer computing a rolling 24-hour mean and standard deviation per device and raising a drift alert at |z| > 3; excursion lifecycle state machine (open → acknowledged → closed) with min/max/duration capture, buzzer command publishing and webhook stub delivery.
Module 04
Normalised MySQL schema (devices, readings, excursions, acknowledgements) with range-partition-friendly indexes; Flask JSON API and Chart.js dashboard with live temperature view, excursion table with acknowledge-with-remark action, device heartbeat page and CSV export for the district officer; documentation pages covering setup, calibration checks against a reference thermometer, and the test matrix.
Slide 1
Cold-Chain Temperature Monitoring & Alerting
Slide 2
The Cold-Chain Problem
Slide 3
Problem Statement
Slide 4
Proposed System
Slide 5
Why MQTT?
Slide 6
System Architecture
Slide 7
Node Design & Store-and-Forward
Slide 8
Alert Logic
Slide 9
Database Design
Slide 10
Demo & Test Results
Slide 11
Conclusion & Future Scope
Bullets, speaker notes and the .pptx · ₹2,000
Read each answer, close it, and say it in your own words. Your viva will ask. Now you'll know.
MQTT is a lightweight publish–subscribe protocol over persistent TCP. Our nodes publish readings to a topic and the backend subscribes, so nodes never need the server's address or availability. Compared with HTTP polling, MQTT keeps the connection open (less energy and latency), supports QoS levels for delivery guarantees, retained messages for instant device status and a last-will that automatically marks a crashed node offline — none of which HTTP gives us.
QoS 0 is fire-and-forget, QoS 1 guarantees at-least-once delivery using PUBACK retransmission, and QoS 2 gives exactly-once with a four-way handshake. We used QoS 1 because it guarantees delivery without the QoS 2 overhead, and we handle its duplicate side-effect ourselves by de-duplicating readings on the sequence number each node attaches, so at-least-once becomes effectively exactly-once in the database.
Vaccines must be stored between plus two and plus eight degrees Celsius. In our alert engine this band appears as the primary rule: any reading outside it starts a breach-pending timer, and if the breach persists beyond a five-minute grace window the excursion is opened and the buzzer and dashboard alerts fire. The grace window stops door-opening blips from creating false excursions.
+12 more questions, with answers
Unlocks with the project · ₹2,000
Unlock for ₹2,000What to change before it goes anywhere near a submission. Skipping it is how the demo fails live.
Unlocks with the project · ₹2,000
Unlock for ₹2,000How to study it, adapt it and walk your examiner through it, step by step.
Unlocks with the project · ₹2,000
Unlock for ₹2,000OnlyProjects. (2026). Cold-Chain Temperature Monitoring and Excursion-Alert System for PHC Vaccine Storage: B.Tech / B.E. Internet of Things project bundle [Educational resource]. https://onlyprojects.online/projects/btech-iot-cold-chain-temperature-monitor-mqtt-alerts
Keep browsing
Same degree, same syllabus slot, different idea. Pick the one your guide will actually approve.
Cyber Security
Flows, top talkers and scan indicators for the lab's own network — headers only, no blocking, full history
Mechanical Engineering
A human-powered spiked-roller dehusker for small coconut growers around Pollachi — designed, fabricated and tested for ₹ under 20,000
Aerospace / Aeronautical
Build a subsonic test tunnel on a student budget, then trace lift and drag on a 3D-printed NACA 0012 against theory
Agricultural Engineering
Irrigates vegetable beds by soil-moisture thresholds instead of habit, and proves every litre with a flow meter
Artificial Intelligence & Machine Learning
Forecasts kharif yield for Karnataka districts from six decades of ICRISAT district data and tells extension officers which crops look safe this season
Artificial Intelligence & Machine Learning
Screens CPCB river-water samples into quality bands, flags stations that fail bathing criteria and predicts likely BOD exceedance when lab results are missing