# minhduck19/esp32_wifi_csi_project architecture

> Architecture diagram of the GitHub repository minhduck19/esp32_wifi_csi_project, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/minhduck19/esp32_wifi_csi_project
- Repository: https://github.com/minhduck19/esp32_wifi_csi_project

## Overview

This repository is a small ESP32 Wi-Fi CSI activity-recognition prototype. Its main analysis workflow generates mock CSI data, filters it, extracts sliding-window features, then trains and evaluates classifiers. Separate scripts read raw CSI from a serial port and publish simulated activity states to MQTT; the excerpts do not show these scripts connected to the analysis pipeline or a dashboard.

Main entry points: [`csi_pipeline.py`](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py) (Pipeline Runner), [`mqtt.py`](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/mqtt.py) (State Publisher), [`serial_reader.py`](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/serial_reader.py) (Serial Reader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_analysis["CSI Analysis"]
  node_runner["Pipeline Runner<br/>[csi_pipeline.py]"]
  node_mock["Mock CSI Generator<br/>[csi_pipeline.py]"]
  node_filter["Signal Filtering<br/>[csi_pipeline.py]"]
  node_features["Window Features<br/>[csi_pipeline.py]"]
  node_models["Model Evaluation<br/>[csi_pipeline.py]"]
end

subgraph group_device["Device Input"]
  node_serial["Serial Reader<br/>[serial_reader.py]"]
end

subgraph group_messaging["MQTT Messaging"]
  node_publisher["State Publisher<br/>[mqtt.py]"]
end

node_board(("ESP32 RX Board"))
node_broker{{"MQTT Broker"}}

node_runner -->|"generates data"| node_mock
node_runner -->|"filters data"| node_filter
node_runner -->|"extracts features"| node_features
node_runner -->|"evaluates models"| node_models
node_board -->|"streams CSI"| node_serial
node_publisher -->|"publishes state"| node_broker

click node_runner "https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py"
click node_mock "https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py"
click node_filter "https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py"
click node_features "https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py"
click node_models "https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py"
click node_serial "https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/serial_reader.py"
click node_publisher "https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/mqtt.py"

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_runner,node_mock,node_filter,node_features,node_models toneBlue
class node_serial toneAmber
class node_publisher toneMint
class node_board,node_broker toneIndigo
```

## Components

### CSI Analysis

- [Pipeline Runner](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py): `csi_pipeline.py`
- [Mock CSI Generator](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py): `csi_pipeline.py`
- [Signal Filtering](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py): `csi_pipeline.py`
- [Window Features](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py): `csi_pipeline.py`
- [Model Evaluation](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/csi_pipeline.py): `csi_pipeline.py`

### Device Input

- [Serial Reader](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/serial_reader.py): `serial_reader.py`

### MQTT Messaging

- [State Publisher](https://github.com/minhduck19/esp32_wifi_csi_project/blob/main/mqtt.py): `mqtt.py`

### Other components

- **ESP32 RX Board**
- **MQTT Broker**

## Connections

- Pipeline Runner → Mock CSI Generator: generates data (evidence: `csi_pipeline.py`)
- Pipeline Runner → Signal Filtering: filters data (evidence: `csi_pipeline.py`)
- Pipeline Runner → Window Features: extracts features (evidence: `csi_pipeline.py`)
- Pipeline Runner → Model Evaluation: evaluates models (evidence: `csi_pipeline.py`)
- ESP32 RX Board → Serial Reader: streams CSI (evidence: `serial_reader.py`)
- State Publisher → MQTT Broker: publishes state (evidence: `mqtt.py`)
