Fully fledged Staircase implementation

I have fitted WS2812B LED’s (~800 pcs) and an ESP32 at my stairs, totally happy with the result and the way WLED handles the lights and effects. To me, the use of WLED came after playing around with ESPhome which didn’t bring a satisfying result. Within ESPhome, handling 800 LED’s in segments leads to glitches etc. which could apparently not be overcome.

Edit 13-4-2021:

To make the staircase fully fledged, @Realrolfje and I have worked on a usermod (well, he did the code) which meanwhile has become part of the WLED master branche, enabling easy re-use for those who are interested.

The usermod is named Animated Staircase and comes with the following prime features:

  • Light up the steps one by one in your walking direction, leading the way.
  • Switch off the steps after you, in the direction of the last detected movement.
  • Able to handle multiple people on the stairs gracefully.
  • Enables control by the WLED API, such as:
    • Enabling / Disabling of the usermod (we call it "Party mode :wink: )
    • Light up speed
    • Stairs on/off time
    • Distance settings (for the ultrasonic sensors)
    • Remote sensor support, such as those that are already in your home automation

Detailed explanation and multiple examples can be found in the usermod readme:

An even further detailed readme is under preparation.

On the ToDo list:

  • Smooth Fade / Transitions on the segments (generic WLED wish)
  • Some Stairs specific effects
  • Fix possible ultrasonic sensor glitch with ESP32 WROOM32 DEV board (to be checked)
Like my project:
  • Fantastic
  • Allright
  • Not so cool
  • This sucks

0 voters

Here the results, effects just for fun - you will most likely choose for a fixed illumination in white :wink:

Switch on/off step by step (smooth transition desired):

The segmented rainbow, seen from the top:

Eye-friendly effect, great overnight:

Thunderflash, only the sound is missing (Aircoookie, hint :wink: )

Stairs on fire:


Something more relaxed:

This is how the stairs looks usually at home, to keep my wife happy…


Finally some images of the stairs details as I received many question on the how’s and the what’s…

This is how each step looks from the bottom. The wiring enters the back of the stairs via a small hole. Note that I have used relatively thin wires for the supply, since they are utmost short and connected to AWG14 / 2.5mm^2 cables. The “data out” from the step is guided through the transparent silicone tubing through the same hole and goes to the next step.

Work in progress. At the top, I use a PIR sensor since people “walk by” sideways, which ensures reliable detection. I did modifications on the delay time and range for this.

Some detail of the ultrasonic sensor. Originally, a PIR was mounted but didn’t give satisfactory results when people approach from the front.

This is how the wiring looks at the back of the stairs. Thin cabling from the steps, thick cabling for the supply alongside the vertical stand-up.

Last but not least: the ESP32, power supply and ultrasonic sensor on the top.


This is awesome and it looks GREAT! If only I had more than 3 stairs at any one place in my house…lol

Each step is a separate “segment”?

I guess, it also will look nice on small steps :slight_smile:

Indeed, I have defined 14 segments with a variable number of LED’s per step. This has been implemented in WLED very well, since many effects simply calculate the speed as a function of LED’s. This results in the great alignment in light effects vertically.

Of course I could (for example) also run a rainbow or alike without segments. With the right settings, the rainbow ramps up (or down) over the whole staircase:

Problem then is, that I cannot lit step by step of course. This is also nice, but I just like the segmented one better…


Holy crap, that last waterfall effect just blew me away.

How did you go about hiding all the wires?

WOW. Can you describe how you solved this? i also want to implement this Staircase light.

Im new to all this WLED and dont know exactly where to start.
I flashed my ESP with the WLED and my LED Stripes works perfectly with the normal effects. But how do i make e staircase effekt like your?


I hope AirCookie will see this. We need PIR support in the code… :smiley:

1 Like

@gol706: The backside of the stairs is accessible, so that was an easy one, a lot of work though.

@Maveric2005: the variable length per step and subsequent number of LEDs is already solved in the WLED distribution as is. Simply add a segment per step and define the start and stop LED. WLED does the rest for you.

There is now a full featured Staircase usermod that is based on my stairs. It is still in development and a merge request in the WLED branche is upcoming. It features automatic scroll up/down on/off cycles per step with the aid of segments and adds full support for either PIR sensors and alternatively HC-SR04 ultrasonic sensors. The advantage of those is that you can define very accurate the distance to activate the stairs, which is much better than e PIR can ever do, but bothare supported. It also supports the JSON API that enables to adapt settings such as speed, distance etc.


  • Segment fade on/off
  • implement a segment on/off wipe from the centre of each step
1 Like

best pa1okz. I also implemented strips underneath my stairs, very nice! Do you use a NodeMCU or another device? I tried to adjust the number of segments and compiled WLED again but after a while the software crashes. If you use a NodeMCU, can you share your .bin file? Thanks in advance

NodeMCU exists in both ESP8266 as well as ESP32. I use ESP32 NodeMCU since 8266 can only handle up to 12 segments and I have 14 steps.

One thing I don’t understand: You first adjust segments and then compile WLED? Why? This is possible from the UI and can be done after flashing. Some hints:

  • Is the max current in the led config configured according to your power supply specs?
  • Did you monitor the voltage on the NodeMCU, hence, does the voltage not drop too much when intensity is high?
  • Does it really crash or does it fallback to the fallback Wifi setting due to bad signal strenght?

I never had a WLED crash.

sorry, i was not very clear.

I changed the number of segments in fx.h to 15 because i also have 14 steps. After the compile i flashed the nodemcu esp 8266 succesfully and WLED starts normally. When i define my 14 segments and define my presets i get a error and all the effects are gone. After a restart WLED starts up normally and WLED works again. When i try something to change in the presents i get the error again.

I will try to reproduce the error again tomorrow because the stair is now working again on my other NodeMCU with the predefined compile as downloaded form Aircookie.

Yup, you have to switch to ESP32. The limit was set to 12 for a reason…

thanks for your advice. Is this a good option? or can you send me the link were you bought the esp32?

There are endless variants. I think most are fine

Meanwhile, the usermod has matured nicely and is ready to be part of the WLED branche. Rolf has therefore submitted a pull request for merge. Hopefully it is added soon, making it easier to use…

Usermod now merged, see top of this thread…

1 Like