Phyto-Hydrometric Feeder Dashboard
Full-Stack Web Dev · IoT

Phyto-Hydrometric Feeder

Django React ESP32 WebSockets Sensor Fusion REST API
2s Sensor Refresh Rate
3+ Sensor Types Fused
ESP32 Core Controller

Project Overview

The Phyto-Hydrometric Feeder is an automated hydroponic system that maintains optimal plant growth conditions without manual intervention. It continuously monitors water levels, humidity, and temperature — triggering pump actions automatically when thresholds are crossed.

The project is a full end-to-end build: from the embedded firmware on the ESP32 to a polished web dashboard that provides real-time monitoring and manual overrides from any device on the network.

Web Dashboard UI

I developed a responsive web interface served directly from the ESP32. It uses the Fetch API to auto-refresh sensor data every 2 seconds and provides manual override buttons for the water pumps. The dark-mode interface is intentionally lightweight — suitable for rendering from a microcontroller's limited memory.

Frontend · Fetch Polling JavaScript
function updateData() {
    fetch('/data')
        .then(response => response.json())
        .then(data => {
            document.getElementById('temp').innerText
                = data.temperature + ' °C';
            document.getElementById('humidity').innerText
                = data.humidity + ' %';
            document.getElementById('waterLevel').innerText
                = data.waterLevel + ' cm';
        });
}
setInterval(updateData, 2000);

Hardware & Control Logic

The core logic runs on an ESP32, which polls an ultrasonic distance sensor to measure the water tank depth. When the level drops below a calculated threshold, it triggers a relay to activate the dosage pump for a precise duration — then verifies the refill before stopping.

ESP32 · Pump Control C++
void checkWaterLevel() {
    float distance = getUltrasonicDistance();
    if (distance > THRESHOLD_EMPTY) {
        digitalWrite(PUMP_RELAY, HIGH);
        server.send(200, "text/plain", "Pump Activated");
        delay(PUMP_DURATION_MS);
        digitalWrite(PUMP_RELAY, LOW);
    }
}

Interested in a similar IoT dashboard for your project?

Get in Touch ← All Projects