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
- Add the device in ESPHome (USB first, then OTA).
- Confirm I²C in the logs: AHT20 at
0x38. - 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_passwordinsecrets.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.