ESPHomeESP32DIY

$5 ESP32-C6 climate sensor

A tiny Wi-Fi temperature/humidity sensor for any room: ESP32-C6 Super Mini + AHT20 over I²C, flashed with ESPHome and auto-discovered by Home Assistant.

Difficulty · BeginnerSetup · 30–60 minutesHA · current stable (native API)ESPHome · current stable
Get the pack · from $9LEMON SQUEEZY PLACEHOLDERHave us set it up

Some hardware links on this page are affiliate links. We may earn a commission if you buy through them, at no extra cost to you. See the affiliate disclosure.

A battery of cheap climate sensors beats one expensive hub sensor in the wrong corner of the house. This pack is a single-board recipe: ESP32-C6 Super Mini, AHT20 on I²C, ESPHome native API, Home Assistant discovery.

Wi-Fi credentials stay in your ESPHome secrets file. Never paste SSIDs, PSKs, API keys, or OTA passwords into a published YAML.

What you get working

A named temperature and humidity entity per board, plus optional signal-strength and uptime. Drop one in a closet, a crawl, a studio — anywhere you want a number, not a brand-name thermostat.

Wiring (generic Super Mini)

Use 3.3 V, not 5 V, on the AHT20.

AHT20 ESP32-C6 Super Mini
VIN 3V3
GND GND
SDA GPIO0
SCL GPIO1

GPIO8 / GPIO9 and the USB-JTAG pins are easy to steal by accident on this board — the pack lists the ones to leave alone. Do not power the module from VIN if you are also on USB-C; pick one rail.

I²C address is usually 0x38. Some “AHT20” listings are AHT10-compatible; ESPHome’s aht10 platform with variant: AHT20 covers both if the address is right.

Snippet

i2c:
  sda: GPIO0
  scl: GPIO1

sensor:
  - platform: aht10
    variant: AHT20
    temperature:
      name: "Room Temperature"
    humidity:
      name: "Room Humidity"

The pack YAML uses !secret for Wi-Fi and API encryption. Substitute your own secrets locally.

Flash and adopt

  1. Add the device in ESPHome (USB first, then OTA).
  2. Confirm I²C in the logs: AHT20 at 0x38.
  3. Let Home Assistant discover it over the native API. Rename the entity to a generic room name you will not mind publishing later.

Troubleshooting

  • 0x38 not found. Swap SDA/SCL, check 3.3 V, try 4.7 kΩ pull-ups if the module does not include them.
  • Wild readings. The board is sitting on a USB charger that is heating the AHT20. Relocate or add the printed case so the sensor sniffs room air, not the regulator.
  • Board not joining Wi-Fi. 2.4 GHz only; C6 will not see a 5 GHz SSID. Keep the SSID out of git — wifi_ssid / wifi_password in secrets.yaml.
  • API encryption mismatch. Delete the stale device in HA and re-adopt after you rotate the key.

Enclosure

The STL in the pack is a simple snap case with a vent over the AHT20. Print in PETG if the sensor lives in a garage or porch; PLA is fine indoors.

Changelog

v1.0 · DATE: First publish.