A professional Industrial IoT environmental monitoring system for an ESDM factory with 20 rooms, featuring real-time temperature and humidity tracking.
| Component | Description |
|---|---|
| Firmware | Arduino/C++ sketch for ESP32 + SHT85 sensor |
| Dashboard | Standalone HTML/JS web dashboard (zero build step) |
| Protocol | MQTT with Last Will & Testament (LWT) |
| Rooms | 20 independently monitored zones |
- MCU: 20Γ ESP32 DevKit v1
- Sensor: Sensirion SHT85 (I2C) β Β±0.1Β°C / Β±1.5% RH accuracy
- Protocol: MQTT over Wi-Fi
- Publish Rate: Every 5 seconds per node
- 20 Room Cards in a responsive grid layout
- Live Temperature & Humidity with sparkline trend graphs
- Connection Status β animated green (online) / red (offline) indicators
- Alert Coloring β cards pulse red when temp > 30Β°C or humidity > 60%
- System Overview Header β average temp, average humidity, online count, alert count
Click any header stat badge to view:
- Avg Temp β All rooms sorted by temperature (alerts in red at top)
- Avg Humidity β All rooms sorted by humidity (alerts in red at top)
- Online β Offline rooms in red at top, online in green below
- Alerts β Only rooms with active alerts
Click any room card for a full-screen view with:
- Large current temperature & humidity readings
- Historical charts with time-range tabs:
1HR,24HR,1W,1M,1Y,3Y,ALL - Interactive tooltips β hover to see exact value + timestamp
- X-axis time labels and Y-axis value labels
- Realistic simulated data with daily & seasonal cycles
| Action | Method |
|---|---|
| Switch rooms | β β arrow keys or on-screen buttons |
| Go home | Backspace, Escape, Home button, or trackpad back gesture |
| Browser back | Full History API support |
# Just open in your browser β no server needed!
open dashboard/index.htmlThe dashboard runs with simulated MQTT data out of the box for demo purposes.
-
Install Libraries (Arduino Library Manager):
PubSubClientβ MQTT clientArduinoJsonβ JSON serializationarduino-shtβ Sensirion SHT sensor driver
-
Configure β edit these constants in
esp32_sht85_mqtt.ino:static const char* WIFI_SSID = "YOUR_WIFI_SSID"; static const char* WIFI_PASSWORD = "YOUR_WIFI_PASSWORD"; static const char* MQTT_BROKER = "192.168.1.100"; static const char* ROOM_ID = "Room_1"; // Change per node
-
Flash via Arduino IDE or PlatformIO to each ESP32.
Topic: factory/env/Room_X
Online Message (published every 5s):
{
"room": "Room_1",
"temp": 24.50,
"hum": 45.20,
"status": "online"
}Last Will & Testament (auto-published on disconnect):
{
"room": "Room_1",
"status": "offline"
}IIoT-Environmental-Monitor/
βββ dashboard/
β βββ index.html # Web dashboard (HTML + Tailwind CSS)
β βββ app.js # Application logic & chart rendering
βββ firmware/
β βββ esp32_sht85_mqtt.ino # ESP32 Arduino sketch
βββ README.md
| Layer | Technology |
|---|---|
| Frontend | HTML5, Vanilla JS, Tailwind CSS v3 (CDN) |
| Icons | Lucide Icons (CDN) |
| Fonts | Inter (Google Fonts) |
| Charts | Custom SVG sparklines & interactive charts |
| Firmware | Arduino/C++ (ESP32) |
| Sensor | Sensirion SHT85 via I2C |
| Protocol | MQTT (PubSubClient) |
| Serialization | ArduinoJson |
This project is licensed under the MIT License.
Built for Industrial IoT Excellence π