gitwtfhub

wtf is esp32_environmentalnode?

d7main/esp32_environmentalnode — explained in plain English

Analysis updated 2026-05-18

5CAudience · developerComplexity · 4/5Setup · hard

TL;DR

Firmware for a tiny, battery-powered device that monitors soil moisture, temperature, and humidity, sending alerts to Telegram, Discord, or a custom webhook when the soil gets too dry.

Mindmap

mindmap
  root((repo))
    What it does
      Monitors soil moisture
      Sends dry soil alerts
      Sleeps to save battery
    Sensors
      Capacitive soil probe
      BMP280 temp and pressure
      DHT22 temp and humidity
    Alerts
      Telegram bot
      Discord webhook
      Custom JSON webhook
    Setup
      Web portal config
      Hold BOOT button
      Calibrate with air and water
    Hardware
      ESP32-C3 Super Mini
      2MB flash
      GPIO pin assignments
    Audience
      Tinkerers and hobbyists
      Smart garden builders

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Build a smart garden monitor that texts you on Telegram when your plants need watering.

REASON 2

Set up a custom webhook to log temperature, humidity, and soil voltage data to your own server.

REASON 3

Create a multi-channel alert system using Discord and Telegram to monitor soil in remote planters.

REASON 4

Monitor environmental conditions in a greenhouse using battery-powered sensors that wake up on a timer.

What's in the stack?

CESP-IDFESP32-C3

How it stacks up

d7main/esp32_environmentalnodeblackcoffee2/promedanusha2345/adrc-betaflight
Stars555
LanguageCCC
Setup difficultyhardmoderatehard
Complexity4/54/54/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · hard Time to first run · 1h+

Requires installing the ESP-IDF toolchain and physically wiring multiple sensors to an ESP32-C3 microcontroller.

The explanation does not mention a license, so the terms of use are unknown.

Wtf does this do

This project is firmware for a small, low-power device that monitors environmental conditions and sends alerts when soil moisture drops below a chosen level. It runs on an ESP32-C3, a tiny microcontroller, and is built using the native ESP-IDF toolchain rather than the Arduino framework. The device spends most of its time asleep, wakes up on a timer (by default every 30 minutes), reads its sensors, checks whether the soil is too dry, sends notifications if needed, then goes back to sleep to conserve battery. The sensors it supports are a capacitive soil moisture probe, a BMP280 for temperature and barometric pressure, and a DHT22 for temperature and humidity. The soil moisture reading is calculated as a percentage using two calibration points you set yourself: one taken with the sensor in dry air, and one with the tip submerged in water. Those calibration values, along with your Wi-Fi credentials, alert settings, and threshold percentage, are saved in nonvolatile storage so they persist across reboots and power loss. Alerts can go out over three independent channels: a Telegram bot, a Discord webhook, or a custom webhook that receives a JSON payload with full sensor data. Each channel operates on its own, so if one fails the others still send. The custom webhook posts temperature, humidity, soil voltage, and a message. All requests use a 6-second timeout. Configuration is handled through a web portal that the device hosts on demand. You hold the BOOT button for at least 3 seconds, the device creates a temporary Wi-Fi network, and you connect with a phone or laptop to fill out a form at a local address. On first boot the device launches this portal automatically since no settings exist yet. While the portal is open, live sensor readings refresh every 7 seconds so you can check values and run calibration in real time. The project targets the ESP32-C3 Super Mini dev board with 2 MB of flash. GPIO assignments for the sensors, button, and power gate are defined in a config header, with a note that GPIO2 is a strapping pin tied to boot mode and should be handled carefully. The full README is longer than what was shown.

Yoink these prompts

Prompt 1
I have an ESP32-C3 Super Mini and capacitive soil moisture, BMP280, and DHT22 sensors. Write a step-by-step guide for how to flash this firmware and wire the sensors using the GPIO assignments in the config header.
Prompt 2
Help me calibrate my soil moisture sensor. I have the raw voltage reading with the sensor in dry air and the reading with the tip submerged in water. How do I convert these into a moisture percentage using the two-point calibration formula?
Prompt 3
Create a Python Flask server that can receive the custom JSON webhook payload from this project. It should parse temperature, humidity, soil voltage, and the message, then print them to the console.
Prompt 4
I want to change the wake-up interval from the default 30 minutes to 1 hour, and set my soil moisture alert threshold to 25 percent. Where in the config header or web portal do I make these changes?

Frequently asked questions

wtf is esp32_environmentalnode?

Firmware for a tiny, battery-powered device that monitors soil moisture, temperature, and humidity, sending alerts to Telegram, Discord, or a custom webhook when the soil gets too dry.

What language is esp32_environmentalnode written in?

Mainly C. The stack also includes C, ESP-IDF, ESP32-C3.

What license does esp32_environmentalnode use?

The explanation does not mention a license, so the terms of use are unknown.

How hard is esp32_environmentalnode to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is esp32_environmentalnode for?

Mainly developer.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.