Enchanted Liquor Cabinet

Enchanted Liquor Cabinet

An ESPHome-powered lighting and audio makeover for a built-in liquor cabinet using WS2812B LEDs, reed switches, and an ESP32.


Enchanted Liquor Cabinet

This started as a project to replace the terrible lighting in a built‑in cabinet. I wanted even illumination across the whole cabinet, which meant placing lights throughout — and then things escalated quickly from there.

Repo: https://github.com/abnormalend/enchanted_liquor_cabinet

Videos

First working song

Other routines

Goals

  • Even, bright lighting across shelves and compartments.
  • Automatic on/off behavior tied to door state.
  • Fun: programmable animations and optional sound effects.
  • Integrate cleanly with Home Assistant via ESPHome.

Hardware

See the full BOM in hardware/README.md in the repo. Core components I used:

  • Two 16‑pixel WS2812B rings (accent lighting)
  • One 5m WS2812B LED strip, 60 LED/m (shelf lighting)
  • Four magnetic reed switches (door sensors)
  • DFPlayer mini + 3W 40mm speakers + PAM8403 amplifier (sound effects)
  • ESP32 dev board (WROOM‑32)
  • 5V power supply sized for your total LED load
  • Printed fittings and mounts (STLs in the repo)

Hardware README: https://raw.githubusercontent.com/abnormalend/enchanted_liquor_cabinet/HEAD/hardware/README.md

Wiring Notes

  • Power the WS2812B LEDs with a stable 5V supply. Inject power at both ends for long runs.
  • Common ground between the ESP32, LEDs, DFPlayer, and amplifier.
  • Level shifting for data can improve signal integrity on long runs; short runs often work direct from the ESP32.
  • Place reed switches so they reliably change state with door movement; debounce in software if needed.

ESPHome Overview

The project runs on ESPHome for easy configuration, OTA updates, and Home Assistant integration. Typical features to configure:

  • Binary sensors for each reed switch (cabinet doors)
  • Light outputs for the LED rings and the strip with preset effects
  • Automations to react to door open/close events (turn on lights, start animation, play sound)
  • Optional UART/serial control of the DFPlayer mini for audio cues

If you’re starting from scratch, the ESPHome docs have excellent examples for light:, binary_sensor:, and DFPlayer integrations.

Behavior

  • Doors open → lights fade in to a preset brightness and animation.
  • Doors closed → lights fade out after a short delay.
  • Optional: trigger a chime or ambient sound effect on first open.
  • Expose controls in Home Assistant to select scenes/animations.

Lessons Learned

  • Budget ample power and plan for power injection on longer LED runs.
  • Keep wiring tidy and serviceable; printed mounts help a lot.
  • Reed switch placement matters — test alignment before committing.
  • ESPHome makes iteration fast; split config logically to keep it readable.

What’s Next

  • Add more scene presets (holiday themes, ambient modes).
  • Smooth ambient audio loop with volume control.
  • Presence‑based dimming at night.
  • Optional override button inside the cabinet.