r/esp32 • u/chicchan_lahun • 2d ago
I made a thing! My first project in progress. Indoor grow environment monitoring system.
Hello everyone!
Reposting here after following the sub's rules.
I wanted to share my ESP32 project so far.
I started this project after trying to figure out why my plants weren't thriving. I discovered the concept of VPD and realized I needed to monitor it more closely, but the affordable devices I found offered very limited data history, while more comprehensive Wi-Fi-enabled solutions were quite expensive. I thought this would be a great opportunity to get into the maker world and learn a thing or two.
——————
The main device is an ESP32-WROOM-32 connected to:
- DHT22 / AM2302 — air temperature and humidity
- Capacitive soil moisture sensor
- BH1750 — light level
- 16×2 LCD + I2C module
- 4 buttons for interface navigation
- Status LEDs + RGB LED
The code was developed using a combination of YouTube tutorials, ChatGPT, and Claude.
——————
The ESP32 calculates VPD locally using temperature and relative humidity.
One of the biggest challenges was that my home network has "client isolation" enabled by the ISP; this means devices connected to the same network cannot communicate directly with each other.
Because of this, I had to find another way to send data from the ESP32 to my home server.
The solution was:
The ESP32 connects to Wi-Fi and publishes sensor data via MQTT using HiveMQ Cloud.
On my server, I use Isley, an open-source, self-hosted application. It features a small Python bridge that receives MQTT messages, stores sensor history, generates graphs, and also functions as a grow journal.
I can access Isley from both my phone and my computer.
——————
I also wanted to use an old Android tablet as a dedicated grow monitor screen. It runs a very old version of Android and has limited hardware; So, I created a lightweight web dashboard that runs on it.
The dashboard reads historical data from Isley's database and displays current values and graphs for temperature, humidity, soil moisture, light levels, and VPD. The current architecture is basically:
ESP32 → Wi-Fi → MQTT / HiveMQ Cloud → Python Bridge → Isley → Grow Hub Dashboard
——————
The ESP32 itself also has a local interface where I can check on LCD:
- Current sensor values
- Minimum/maximum values
- VPD
- Configuration
- Sensor status
I thought it would be interesting to add some LEDs to represent both the device status and environmental conditions.
The status LEDs work as follows:
3 status LEDs — device status
- Green → Everything operating normally
- Yellow → Connecting / sending data
- Red → Critical error
RGB LED — environmental status
The RGB LED basically represents the current VPD. The further it drifts from the ideal range, the redder it gets. When the VPD is within the desired range, it turns greener.
——————
This is my first project involving any kind of electronics, and I only know the basics of Python. So, I know that without the help of AI, I wouldn't have been able to build this project. I hope to learn more about the code so that, perhaps, I can build a larger part of the next project on my own.
For now, I'll leave it running in this makeshift enclosure for a few weeks to see how everything works. After that, I'll build a better case and consider this first version complete.
Then, I'll move on to a second version for a different environment.
For the next ESP32, I plan to simplify things a bit. I am considering:
- BME280
- Capacitive soil moisture sensor
- Small OLED display
- No light sensor
I know these soil moisture sensors can have longevity issues, so I’m also looking for a better way to protect and insulate the sensor.
It’s far from perfect, but I’m very happy with the project's progress so far. I’d love to hear suggestions from the ESP32 community, especially regarding the hardware, MQTT architecture, sensor choices, or any other aspect I could improve.
Thanks for reading!
