# ngubg/esp32-s3-industrial-cold-chain-asset-data-logger architecture

> Architecture diagram of the GitHub repository ngubg/esp32-s3-industrial-cold-chain-asset-data-logger, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger
- Repository: https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger

## Overview

This is ESP32-S3 firmware for cold-chain and mobile-asset monitoring: it samples environmental data, retains records offline, and synchronizes them when connectivity returns. The README describes a four-task FreeRTOS design with queues, secure MQTT telemetry, OTA, and health monitoring. Sampled source files are empty, so the relationships below reflect the README’s documented architecture rather than verified implementations; optional or requirement-only capabilities are shown separately.

Main entry points: [`cold-chain-logger/main/app_main.c`](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/app_main.c) (Task and queue setup), [`cold-chain-logger/main/storage_task.c`](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/storage_task.c) (Storage task), [`cold-chain-logger/main/network_task.c`](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/network_task.c) (Network task), [`cold-chain-logger/main/health_task.c`](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/health_task.c) (Health task)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_orchestration["Task orchestration"]
  node_app["Task and queue setup<br/>[app_main.c]"]
end

subgraph group_data["Sensing and storage"]
  node_sensor["Sensor task<br/>[sensor_task.c]"]
  node_storage["Storage task<br/>[storage_task.c]"]
  node_littlefs[("LittleFS records")]
end

subgraph group_connectivity["Network services"]
  node_network["Network task<br/>[network_task.c]"]
  node_mqtt{{"MQTT TLS broker"}}
  node_ota{{"HTTPS OTA service"}}
end

subgraph group_health["Device health"]
  node_health["Health task<br/>[health_task.c]"]
  node_battery{{"Battery monitor"}}
  node_watchdog["Watchdog"]
end

node_sensor_device(("I2C sensor"))
node_backend{{"Backend / dashboard"}}

node_app -->|"starts task"| node_sensor
node_app -->|"starts task"| node_storage
node_app -->|"starts task"| node_network
node_app -->|"starts task"| node_health
node_sensor_device -->|"provides readings"| node_sensor
node_sensor -->|"queues records"| node_storage
node_storage -->|"stores offline"| node_littlefs
node_storage -->|"queues records"| node_network
node_network -->|"publishes TLS"| node_mqtt
node_mqtt -->|"delivers telemetry"| node_backend
node_network -.->|"checks for updates"| node_ota
node_health -->|"reads voltage"| node_battery
node_health -->|"feeds"| node_watchdog

click node_sensor "https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/sensor_task.c"
click node_storage "https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/storage_task.c"
click node_network "https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/network_task.c"
click node_health "https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/health_task.c"
click node_app "https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/app_main.c"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app toneBlue
class node_sensor,node_storage,node_littlefs toneAmber
class node_network,node_mqtt,node_ota toneMint
class node_health,node_battery,node_watchdog toneRose
class node_sensor_device,node_backend toneIndigo
```

## Components

### Task orchestration

- [Task and queue setup](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/app_main.c): `cold-chain-logger/main/app_main.c`

### Sensing and storage

- [Sensor task](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/sensor_task.c): `cold-chain-logger/main/sensor_task.c`
- [Storage task](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/storage_task.c): `cold-chain-logger/main/storage_task.c`
- **LittleFS records**

### Network services

- [Network task](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/network_task.c): `cold-chain-logger/main/network_task.c`
- **MQTT TLS broker**
- **HTTPS OTA service**

### Device health

- [Health task](https://github.com/ngubg/esp32-s3-industrial-cold-chain-asset-data-logger/blob/main/cold-chain-logger/main/health_task.c): `cold-chain-logger/main/health_task.c`
- **Battery monitor**
- **Watchdog**

### Other components

- **I2C sensor**
- **Backend / dashboard**

## Connections

- Task and queue setup → Sensor task: starts task
- Task and queue setup → Storage task: starts task
- Task and queue setup → Network task: starts task
- Task and queue setup → Health task: starts task
- I2C sensor → Sensor task: provides readings
- Sensor task → Storage task: queues records
- Storage task → LittleFS records: stores offline
- Storage task → Network task: queues records
- Network task → MQTT TLS broker: publishes TLS
- MQTT TLS broker → Backend / dashboard: delivers telemetry
- Network task → HTTPS OTA service: checks for updates
- Health task → Battery monitor: reads voltage
- Health task → Watchdog: feeds
