Cold_Chain_Monitoring_System

ColdTrack Architecture Documentation

System Overview

ColdTrack is a five-layer IoT architecture designed for real-time RSV vaccine cold chain monitoring with sub-1.5 second alert latency and multi-dimensional freeze damage assessment.

Architecture Layers

Layer 1: Device Layer (Edge)

Components:

Responsibilities:

Communication Protocol:

Message Format:

{
  "device_id": "CT-001",
  "temperature": 5.23,
  "humidity": 65.4,
  "battery": 87.2,
  "latitude": 51.5074,
  "longitude": -0.1278,
  "rssi": -67,
  "timestamp": 1706875200,
  "message_id": 1706875200000
}

Layer 2: Connectivity Layer (AWS IoT Core)

Components:

Responsibilities:

Security:

IoT Rule Configuration:

SELECT * FROM 'coldtrack/sensors/+/data'

Actions:

  1. Lambda function invocation
  2. (Future) S3 archival
  3. (Future) SNS notifications

Layer 3: Processing Layer (AWS Lambda)

Lambda Functions:

1. Data Processor (ColdTrack-Process)

Responsibilities:

Environment Variables:

INFLUX_URL=http://your-influxdb:8086
INFLUX_TOKEN=your-token
INFLUX_ORG=coldtrack
INFLUX_BUCKET=sensors
TEMP_MIN=2.0
TEMP_MAX=8.0
FREEZE_ALERT_THRESHOLD=0.0

2. Alert Handler (Future)

3. Freeze Scorer (Future)


Layer 4: Storage Layer (InfluxDB)

Database: InfluxDB 2.x (Time-Series Database)

Data Model:

Measurement: sensor_data

Tags:

Fields:

Timestamp: Unix epoch (seconds)

Retention Policy:

Continuous Queries:

// Hourly averages
from(bucket: "sensors")
  |> range(start: -24h)
  |> filter(fn: (r) => r._measurement == "sensor_data")
  |> aggregateWindow(every: 1h, fn: mean)
  |> to(bucket: "sensors_hourly")

// Freeze event detection
from(bucket: "sensors")
  |> range(start: -1h)
  |> filter(fn: (r) => r._field == "temperature")
  |> filter(fn: (r) => r._value < 2.0)
  |> to(bucket: "freeze_events")

Layer 5: Visualization Layer (Grafana)

Dashboards:

1. Main Dashboard

2. Freeze Analysis Dashboard (Future)

3. Fleet Management Dashboard (Future)

Alert Rules:

Alert: Critical Freeze
Condition: temperature < 0°C
Frequency: Every 1 minute
Notification: Email + SMS

Data Flow

1. ESP32 reads sensors (60s interval)
     ↓
2. Device publishes MQTT message to AWS IoT Core
     ↓ (< 500ms)
3. IoT Rule triggers Lambda function
     ↓ (< 200ms)
4. Lambda validates & writes to InfluxDB
     ↓ (< 300ms)
5. Lambda checks alert thresholds
     ↓ (< 100ms)
6. Alert handler sends notifications (if triggered)
     ↓
7. Grafana displays real-time data (10s refresh)

Total latency: < 1.5 seconds

Performance Targets

Metric Target Actual
Alert Latency < 1.5s TBD
Message Delivery Rate > 99.8% TBD
Battery Life > 3 years TBD
Data Loss < 0.1% TBD
Cost per Unit ~£3 TBD

Scalability

Current Capacity:

Target Capacity:

Scaling Strategy:


Security

Device Security

Cloud Security

Data Privacy


Monitoring & Observability

CloudWatch Metrics:

CloudWatch Alarms:

Logging:


Disaster Recovery

Backup Strategy:

Recovery Time Objective (RTO): 1 hour Recovery Point Objective (RPO): 24 hours


Cost Analysis

Monthly AWS Costs (1 device)

Service Usage Cost
IoT Core 43,200 messages/month ~£0.10
Lambda 43,200 invocations ~£0.01
CloudWatch Logs & metrics ~£0.50
Total   ~£0.61/month

Hardware Costs (per unit)

Component Cost
ESP32-WROOM-32 £3.50
TMP112 £1.20
DS18B20 £0.80
NEO-6M GPS £5.00
RC522 RFID £1.50
SIM800L £3.00
Battery & misc £2.00
Total ~£17.00

Note: Target £3/unit achievable with bulk ordering


Future Enhancements

Phase 2 (February 2026)

Phase 3 (March 2026)

Phase 4 (April 2026)


References