Integrating LED Stack Lights with Home Assistant: A Practical DIY Tutorial

Ever walked into a garage and felt the buzz of a blinking tower light, only to wish it could tell you when the dryer finished or when the front door opened? That little glow can do a lot more than just look cool. With Home Assistant, you can turn a simple LED stack light into a smart signal hub for any event in your house. I tried it last month, and the result was a garage that talks back to me in colors. Here’s how you can pull the same trick together without a PhD in electronics.

What You Need

Before we dive in, gather the basics. Keeping the list short helps you stay focused and avoid last‑minute trips to the hardware store.

  • LED stack light – a 5‑ or 7‑segment tower with built‑in MOSFET drivers is ideal. I use a 12 V, 5‑segment model from a local industrial supplier.
  • Power supply – 12 V DC, 2 A is more than enough for most lights. A wall‑wart with a proper plug keeps things tidy.
  • ESPHome‑compatible board – the ESP‑01 or ESP‑8266 NodeMCU works great. It will talk to Home Assistant over Wi‑Fi.
  • Jumper wires – a few male‑to‑female and male‑to‑male leads for the connections.
  • Soldering iron and solder – a quick solder makes the connection reliable.
  • Home Assistant instance – running on a Raspberry Pi, a VM, or a spare laptop. I run mine on a Pi 4 with the default Docker add‑on.
  • Optional: enclosure – a small project box to keep the ESP and wires safe from dust.

Choosing the Right Stack Light

Not all tower lights are created equal. Some come with built‑in controllers that expect a 0‑10 V analog signal. Others, like the one I use, have separate MOSFET channels that can be switched on or off with a simple 3.3 V logic level. The latter is perfect for ESP‑based projects because you can drive each segment directly from a GPIO pin.

If you already have a light from a factory floor, check the datasheet for “digital input” or “open collector” pins. Those are the ones you’ll want. If you’re buying new, look for “DIY friendly” or “Arduino compatible” in the description.

Wiring the Light to the ESP

Step 1 – Power the Light

Connect the 12 V positive from the power supply to the “V+” terminal on the stack light. Then connect the “GND” terminal to the power supply’s ground. This powers the LEDs but does not yet turn any segment on.

Step 2 – Connect the ESP Ground

Tie the ESP board’s ground pin to the same ground line you just used for the light. A common ground is essential; otherwise the ESP’s signals will float and the light won’t respond.

Step 3 – Hook Up the Control Pins

Each segment on the tower has a control wire (often labeled CH1, CH2, etc.). Connect each of these to a separate GPIO pin on the ESP. I used pins D1 through D5 on a NodeMCU because they are easy to reach. If you have more segments, just pick more free pins.

Step 4 – Add a Pull‑Down Resistor (Optional)

If the light’s control pins are “open collector,” you might want a 10 kΩ pull‑down resistor on each line to keep the segment off when the ESP is not driving it. Most modern lights have built‑in pull‑downs, so you can skip this step unless you see flickering.

Flashing ESPHome

Home Assistant loves ESPHome because it turns a tiny board into a plug‑and‑play device. Here’s a quick rundown:

  1. Install ESPHome – In Home Assistant, go to “Add‑On Store” and install the ESPHome add‑on.
  2. Create a new device – Click “New Device,” give it a name like “garage_light,” and select “ESP8266.”
  3. Edit the YAML – Replace the default config with something like:
esphome:
  name: garage_light
  platform: ESP8266
  board: nodemcuv2

wifi:
  ssid: "YOUR_SSID"
  password: "YOUR_PASSWORD"

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: "YOUR_API_PASSWORD"

ota:
  password: "YOUR_OTA_PASSWORD"

output:
  - platform: gpio
    pin: D1
    id: seg1
  - platform: gpio
    pin: D2
    id: seg2
  - platform: gpio
    pin: D3
    id: seg3
  - platform: gpio
    pin: D4
    id: seg4
  - platform: gpio
    pin: D5
    id: seg5

light:
  - platform: binary
    name: "Garage Stack Light"
    output: seg1
    id: light_seg1
  - platform: binary
    name: "Garage Stack Light 2"
    output: seg2
    id: light_seg2
  - platform: binary
    name: "Garage Stack Light 3"
    output: seg3
    id: light_seg3
  - platform: binary
    name: "Garage Stack Light 4"
    output: seg4
    id: light_seg4
  - platform: binary
    name: "Garage Stack Light 5"
    output: seg5
    id: light_seg5
  1. Upload the firmware – Connect the ESP to your computer via USB, click “Install” and choose “Plug into this computer.” ESPHome will compile and flash the code.
  2. Add to Home Assistant – After flashing, Home Assistant will discover the new device automatically. You’ll see five new “binary lights” in the UI, each representing a segment.

Making the Light Do Something Useful

Now that Home Assistant can turn each segment on or off, you can create automations. Here are a few ideas I tried:

Dryer Done Indicator

automation:
  - alias: Dryer Finished
    trigger:
      - platform: state
        entity_id: sensor.dryer_status
        to: "off"
    action:
      - service: light.turn_on
        target:
          entity_id: light.garage_stack_light_1
      - delay: "00:00:10"
      - service: light.turn_off
        target:
          entity_id: light.garage_stack_light_1

When the dryer sensor flips to “off,” the top segment flashes green for ten seconds. I love the subtle reminder that my laundry is ready without a beeping alarm.

Front Door Alert

automation:
  - alias: Front Door Open
    trigger:
      - platform: state
        entity_id: binary_sensor.front_door
        to: "on"
    action:
      - service: light.turn_on
        target:
          entity_id: light.garage_stack_light_2

A red segment lights up whenever the front door opens after 10 pm. It’s a quiet way to know if a late visitor shows up.

Night Mode

You can also use the stack light as a low‑key night lamp. Set a schedule that turns on a soft blue segment from 11 pm to 6 am, giving the garage a gentle glow without waking anyone.

automation:
  - alias: Night Light On
    trigger:
      - platform: time
        at: "23:00:00"
    action:
      - service: light.turn_on
        target:
          entity_id: light.garage_stack_light_3
  - alias: Night Light Off
    trigger:
      - platform: time
        at: "06:00:00"
    action:
      - service: light.turn_off
        target:
          entity_id: light.garage_stack_light_3

Tips for a Smooth Build

  • Label your wires – A piece of masking tape with “CH1” or “CH2” saves a lot of head‑scratching later.
  • Secure the ESP – Mount it inside a small project box and drill a hole for the antenna. It keeps dust out and the board from getting knocked around.
  • Test each segment – Before wiring everything together, use a simple “GPIO toggle” script in ESPHome to verify each pin lights its segment.
  • Mind the voltage – Never feed 12 V into a GPIO pin. The MOSFET drivers on the tower light handle the high voltage; the ESP only sees 3.3 V logic.

Wrapping Up

Turning a plain LED stack light into a smart signal device is surprisingly easy once you have the right board and a bit of patience with solder. The biggest payoff is the visual feedback that blends right into the industrial look of a garage or workshop. No more noisy buzzers or flashing phone screens – just a tower of light that tells you exactly what’s happening at home.

Give it a try, tweak the colors, add more sensors, and you’ll find the tower light becomes a silent partner in your daily routine. The Stack Light Chronicles community loves seeing creative setups, so keep experimenting and let the lights guide you.

Reactions