Building a Custom Smart Home Interface with ESP32

Hello everyone, I wanted to share my recent project where I built a custom smart home interface using an ESP32. The goal was to create something that looked less like technology and more like a seamless part of my kitchen. Here’s what I did:

Hardware Setup
I used an ESP32 to control 6 LEDs and six-cent coins as touch sensors, all mounted behind a piece of wood. Each LED and coin combo is positioned over a small hole to make the touch positions visible while keeping the light clean. The ESP32 is programmed with ESPHome, which has been a fantastic tool for this project.

Features

  1. Washer Status (LED 1)

    • Shows yellow when running, green when done (door closed).
    • Stays off from 11 PM to 6 AM.
  2. Evening Lighting (LED 2)

    • Indicates evening lighting is active.
    • Touching it toggles the scene, turning off existing lights in the living room and garage.
  3. Garbage Reminder (LED 3)

    • Lights up at 4 PM if garbage collection is tomorrow.
    • Touching it turns it off until the next reminder at 4 AM.
  4. Front Door Status (LED 4)

    • Shows red when open.
    • Touching it unlocks the door if not locked.
  5. Garage Door (LED 5)

    • Red when open.
    • Touching it toggles the door and updates the LED based on the sensor.
  6. Driveway Gate (LED 6)

    • Red when open.
    • Touching it toggles the gate and updates the LED accordingly.

Setup and Configuration
I programmed the ESP32 using ESPHome and configured each LED and touch sensor individually. The YAML file for the ESP32 setup is included below if anyone is interested in replicating this project.

yaml
esphome:
name: kuechenbrett
friendly_name: Küchenbrett
ESP32:
board: esp32dev
framework:
type: arduino
logger:
api:
ota:
platform:
esphome
password: “"
wifi:
ssid: "
"
password: "
"
ap:
ssid: “Kuechenbrett Fallback”
password: "
*”
captive_portal:
esp32_touch:
setup_mode: false
light:
- platform: neopixelbus
id: ledstrip
name: “ESP32 LED & Touch – Streifen”
pin: GPIO16
num_leds: 6
type: GRB
variant: WS2812
method:
type: esp32_rmt
channel: 0
effects:
- addressable_rainbow
- addressable_scan
binary_sensor:
- platform: esp32_touch
name: “Touch 1”
pin: T0
threshold: 900
filters:
- delayed_on: 30ms
- delayed_off: 120ms
# Similar configurations for Touch 2-6

Challenges and Solutions
One of the main challenges was ensuring the touch sensors worked reliably. I had to adjust the threshold values and add filters to prevent false triggers. The woodwork was also a bit tricky, but the end result looks clean and integrates well with my kitchen.

I’m really happy with how this project turned out. It’s functional, looks great, and has made my daily interactions with smart home devices much more intuitive. If anyone has questions or suggestions, I’d love to hear them!

Cheers,
[Your Name]