Like many, I enjoyed using Google Home, Amazon Echo, and Apple’s Siri to work with some off-the-shelf devices. But when I noticed the lack of deeper control and the cloud's dependency, I hoped for more flexibility and local reliability. That’s what Home Assistant and ESPHome taught me, together, to build my own devices without breaking the bank.
ESPHome and the developer community work hard to make that possible, and there’s a healthy list of devices known to work with ESPHome. Even with basic sensors, ESPHome projects have helped build inexpensive devices instead of splurging. Whether it was making a local voice assistant or setting up a vibration sensor, I learned a lot with each project. Here are some ESPHome projects that made my smart home actually feel smart and let me craft more complex automations.
State detection for a washing machine
A simple vibration sensor tells when the cycle ends
Integrating a vibration sensor with large appliances like washing machines not only made my life easier, but also made my home smart. It was straightforward to make a sensor report when the laundry cycle was complete. But ESPHome’s customizable firmware lets me add a 2-minute delay for the sensor in the YAML file. So, it detects pauses or inactivity between the rinse and spin cycles. My colleague Adam Conway pulled a neat trick by adding a vibration sensor to his desk. He slaps (don’t know how gently) his desk to start the PC. I want to install one on my door to notify me when someone knocks, especially when I am on a call or listening to music on my headphones.
Water leak detection
Usable to detect water levels too
Detecting water leaks has helped take quick action whenever the water level sensor detects rising moisture and water near the washing machine. And I’ve also placed a sensor in the yard to alert in case of waterlogging, and its ESPHome code makes it easy to log, automate, and report. Getting continuous reading accumulates a lot of data, which gets difficult to discern. Besides, I’ve installed a sensor in our water level tank to notify me when it reaches a sufficient level. With ESPHome, I added a filter to average the last 5–10 readings and get a more reliable value, especially against water ripples in the tank. Thanks to ESPHome, the water level depth detection sensor also doubles up as a water leak sensor.
Presence Detection
Using a simple Zigbee motion sensor
I stopped using my phone solely for presence detection and switched to a PiR motion sensor with an ESP32-C6. The presence detection-based automations no longer stress my phone. After pairing it with the ESP32-C6 board, defining the GPIO PIN, and adding a device class, it is all it needs. Owing to the nature of the PiR Sensor, I defined a delay on/off in YAML inside ESPHome that records full motion for 60 seconds, then waits 60 milliseconds before turning on to avoid reporting false interference. To make it easier on my Wi-Fi network, I’ve integrated it with Zigbee, and it now works with the Zigbee Coordinator dongle to operate on the Zigbee mesh.
Bluetooth Proxy
Bringing those legacy devices to life
Turning an ESP32 device into a Bluetooth proxy makes it act as a bridge, connecting a wide range of Bluetooth devices to Home Assistant. That’s how I use the M5Stack Atom Echo as a voice satellite and also handle Bluetooth Proxy duties with some extra code in ESPHome. Also, I’ve added caching attributes to speed up repeat active connections and limited the number of connection slots available per proxy. That said, the Atom Echo costs $15 a pop. So, I turned a few ESP32 boards into a Bluetooth proxy while they handled other sensors as well. These Bluetooth proxies have been massively helpful for integrating all kinds of Bluetooth devices, including my electric toothbrush, into Home Assistant.
Building a custom smart speaker
Make it work locally without cloud support
Repurposing an old speaker to make a local Google Assistant speaker is one of those challenging projects that is rewarding. Cloning an existing project and flashing a ready ESPHome firmware on an ESP32-based ReSpeaker Lite let me create a local assistant. From an alarm to a media player, you get a fast, adequate local assistant. However, I have my eyes on making an Amazon Echo replacement as well, but that requires using a slightly expensive ESP32 board with four-array microphones. The real fun started when I built a private voice assistant using a local LLM. So this local smart speaker helps me with trivia, jokes, and also weather reports.
Control panel with a cheap yellow display
A physical smart home dashboard
Using Home Assistant’s dashboard on a tablet or an old smartphone is quite convenient, but it's an overkill. Ever since I learned about the ESP32-based Cheap Yellow Display, it’s been my go-to peripheral for a smart home dashboard. However, getting LVGL to work with ESPHome was quite an effort. Since it got working, I haven’t tinkered with it. From this physical smart home dashboard, I can control media playback and control the lights in my house.
ePaper Dashboard for weather, tasks, and art
Showcase text and pictures easily
An ePaper smart display is one of my most treasured inclusions in my smart home, and ESPHome takes it to another level. I programmed the ESP32-powered ePaper display to enter deeper sleep when not needed. That way, it conserves power and extends the battery life. I mostly use it to display artwork on weekends. On weekdays, it often serves as a helpful dashboard, displaying essential tasks for the day, other details, and weather information.
A gateway to a self-built smart haven
ESPHome has been wonderful ever since I decided to try out DIY smart home automation with Home Assistant. It continues to evolve with several improvements and features. Community contributions often get the wheels rolling for novices and even experienced folks to try a fun project. Most importantly, it doesn’t cost much to build your own device, and you get to learn a lot in the process.
