🌐 Project 10 Cloud Dashboard

GHG Monitoring Station & Power Source Switch • UNISA HRELE80 • live over MQTT

Connecting to broker...

🌡 Ambient Temp
--°C
DHT11 • Heat idx: --°C
💧 Humidity
--%
DHT11 sensor
🌡 Probe Temp
--°C
DS18B20 waterproof
🌿 Air Quality
--
MQ-135 • -- ppm
🌱 Soil Moisture
--%
--
🌀 Fan Speed
--%
--
👀 Motion (PIR)
--
Light: --
IP: --
Uptime: --

📊 Data Export

Download the readings received by this browser this session (this page doesn't have access to the board's own on-device log).

0 readings logged this session
🏘 Municipality
--V
Status: --
☀ PV (Solar)
--V
Status: --
🔌 Active Source
--
Stable
⌛ Last Switch
--
Confirm delay: --ms
IP: --
Uptime: --

📊 Data Export

Download the readings received by this browser this session.

0 readings logged this session

🌀 Fan Control

Speed: --% • Mode: --

🔔 Buzzer

Send a test beep

💡 Enclosure Light

Status: -- • PIR: --

When ON, motion (PIR) fades the light in/out automatically on the board itself.

Sent as MQTT commands to ghg/monitor/cmd, the same channel the board already listens on.

⚠ Automatic switching, no manual override

Switching stays fully automatic on the board, by design, since Part 2's output powers Part 1 and must stay safe. There's no relay override here or on the local dashboard. Tune the voltage thresholds and timing from the Settings tab instead.

Sent as an MQTT settings command to ghg/monitor/cmd; the board saves it to flash the same way the local dashboard does.

OFF must stay below ON to prevent relay chatter.

Sent as an MQTT settings command to power/switch/cmd. This only adjusts timing/thresholds, it can never command a relay directly.

Hello! I can see live data from both the GHG Monitoring Station and the Power Source Switch. Set a Gemini API key below, then ask me about either system.
Same key already used on both boards' local dashboards works here too. Stored only in this browser.

📧 Contact & Alerts

Send a message about either system, powered by Formspree.

Same URL already used on both boards' local dashboards. Stored only in this browser.

🌐 Project 10

UNISA HRELE80 Honours. Two ESP32 boards working together: the GHG Monitoring Station (Part 1) reads ambient and soil conditions, air quality and solar current/voltage, and drives a cooling fan, PIR-triggered enclosure light and buzzer. The Power Source Switch (Part 2) automatically switches between Municipality and Solar power so Part 1 stays continuously powered. This page mirrors both boards' local dashboards, live over MQTT, so the system can be viewed and controlled from anywhere, not just the local network.

🌱 Part 1: GHG Monitoring Station

An ESP32-WROOM-32 reads a DHT11 (ambient temperature/humidity), a DS18B20 waterproof probe, an MQ-135 air-quality proxy sensor, a resistive soil-moisture probe, and an ACS712 current sensor plus a 0-25V voltage sensor for monitoring the solar input. A PIR sensor triggers the enclosure light, fading it in and holding it on while motion continues, then fading it out a configurable number of seconds after motion stops. A temperature-controlled fan and an alert buzzer are both driven through TIP120 low-side stages. Status is shown on a 20x4 I2C LCD and published to MQTT every 5 seconds.

ESP32-WROOM-32 WiFi MQTT/TLS Gemini AI

⚡ Part 2: Power Source Switch

A separate ESP32 senses the Municipality and PV supply lines through 22k-over-10k voltage dividers and automatically switches two relays so exactly one source feeds Part 1 at any time: Municipality whenever it's present, PV only when Municipality is down, and Municipality as the default if both are absent. To keep switching stable, the board applies hysteresis (separate ON/OFF voltage thresholds), exponential-moving-average smoothing on the readings, and a time-based confirmation delay before a candidate source is actually switched to, three layers added specifically after bench testing exposed relay chatter under noisy and slowly-drifting real-world readings.

ESP32-WROOM-32 WiFi MQTT/TLS Relay + BC547B driver

🔌 How this page works

This page connects directly from your browser to the same HiveMQ Cloud broker both boards use, over MQTT/WebSocket (port 8884). Dashboard tiles update from each board's published state topic. Controls and Settings publish MQTT commands to each board's command topic, the same mechanism the local dashboards already use, so nothing here bypasses the board's own logic. Power Switch stays automatic-only everywhere, on purpose, there is no relay override anywhere in this project.

📡 MQTT Topics

ghg/monitor/statePart 1 → broker, every 5s
ghg/monitor/cmdbroker → Part 1, fan/buzzer/light/settings
power/switch/statePart 2 → broker, every 5s
power/switch/cmdbroker → Part 2, settings only