← All writingMaking

ESP32s around the house

A handful of small ESP32 boards run a lot of the house. Buttons, shades, lights, a mirror remote and soon the minisplit.

Ryan Cwynar2 min read

I have a lot of ESP32 boards in the house right now. Most of them run ESPHome. They all talk to one gateway on a home server, so each board stays small and dumb.

Office button panel

Three touch pads on a classic ESP32. One turns on the projector, one toggles the LED strip, one runs the ceiling fan. A single tap on the fan is medium speed. A double tap is off.

The board doesn't know anything about those devices. It sends the gateway a device name and an action. The gateway already knew how to drive all three, so nothing changed on the server side.

The first board died about an hour after it worked. It started boot looping, then the flash chip stopped answering. Another board from the same batch had already died on a different project. The replacement has been fine.

Shades and IR

Two ESP32-C3 boards handle the shades. The motors take 433 MHz commands, so I captured the remote codes and replay them. The captures are the source of truth. A small Python generator turns them into ESPHome configs and I never edit the YAML by hand.

One of those boards also has an IR LED pointed at the bedroom minisplit. It replays captured remote frames for power, mode and temperature. If the board is unreachable there's a cloud fallback.

433 and IR are both one way. Nothing comes back. That's fine for a shade. It's less fine for an air conditioner.

Mirror remote

The bathroom mirror light has a small battery remote. It's an ESP32-C3 that sleeps until a button press, then broadcasts a short BLE advertisement with a code and a sequence number. It never connects to anything.

Two different listeners hear it and forward it to the gateway. The gateway drops the duplicate by sequence number. Either listener can go down and the remote still works.

LED strips

The LED strips run WLED. A custom build on two of them hung for hours at a time, so I moved them back to a stable release. That broke the LED output until I rebuilt it for the pin the controller actually uses.

Each strip is also paired over ESP-NOW with the ceiling fan controller in the same room. If a strip stops answering on WiFi, the gateway asks the fan to send it the command directly. That covers most hangs without a power cycle.

Next

The minisplit is next. The indoor unit has a wired remote port. With a LIN transceiver between it and an ESP32 I can read real state off the unit instead of guessing. Waiting on a replacement board for that one too.

  • #making
  • #esp32
  • #home automation
Ryan CwynarFull-stack developer and AI automation consultant, writing from Medellín. If this was useful, I also build this kind of thing for clients.Work with me →