@ -10,12 +10,95 @@ This project implements a real-time temperature and humidity monitoring system u
## 🧠 System Architecture
The system is designed using a **layered architecture**, where each component has a specific responsibility. This separation improves maintainability and clarity.
---
### 🔹 1. Hardware Layer (Sensor)
The **HTU21D sensor** measures temperature and humidity and communicates using the **I2C protocol**.
* The Raspberry Pi acts as the **master**
* The sensor acts as the **slave**
* Data is transmitted over SDA (data) and SCL (clock)
---
### 🔹 2. Data Acquisition Layer (C Program)
A program written in C interacts directly with the I2C interface:
* Opens the I2C device (`/dev/i2c-1`)
* Sends commands to the sensor
* Reads raw data
* Converts it into human-readable values (°C and %)
👉 Output is formatted as a JSON file:
```json
{ "temperature": 23.9, "humidity": 57.4 }
```
HTU21D Sensor → I2C → C Program → JSON File → Nginx → Web Browser
---
### 🔹 3. Data Persistence Layer (JSON File)
The JSON file acts as an **intermediate data layer**:
* Stores the latest sensor reading
* Decouples backend (C) from frontend (JavaScript)
* Enables simple data exchange without a database
---
### 🔹 4. Web Server Layer (Nginx)
Nginx serves static files:
* HTML (interface)
* JavaScript (logic)
* JSON (sensor data)
👉 It acts as the **bridge between the system and the user’s browser**
---
### 🔹 5. Presentation Layer (Frontend)
The browser executes JavaScript:
* Uses `fetch()` to request the JSON file
* Updates the DOM dynamically
* Displays values in real time
---
### 🔄 Data Flow Summary
```text
Sensor → I2C → C Program → JSON → Nginx → Browser → User Interface