DIY Smart Accent Lighting
Not every smart home project needs to solve a problem. Sometimes, you just want to make something that looks awesome.
That’s what this project was about - adding a bit of Fast & Furious flair under the couch using addressable LEDs and a bit of open-source magic from WLED. It’s cheap, wireless, and a great intro to the world of DIY smart lighting.
Why WLED?
If you’ve been around the maker or Home Assistant space, you’ve probably come across WLED before.
It’s one of those rare open-source projects that’s simple to set up but ridiculously powerful once you start exploring. You can control everything from basic colour changes to complex animations, sync it with your smart home, and automate it to react to music or even what’s playing on your TV.
For me, this project was partly an excuse to learn more about WLED before using it in some bigger upcoming builds.
Hardware
I went with WS2805 RGB-CCT addressable LED tape, which gives you full RGB colour plus proper warm and cool white LEDs for better everyday lighting. It costs around $10 per metre and sticks straight to the underside of the couch.
Power comes from a Ugreen 25,000 mAh power bank, mounted with a custom 3D-printed quick-release bracket I designed in Fusion 360 (the files are up on Printables if you want to try it yourself). That means no cables across the floor — just pop out the battery to charge it when it runs low.
For control, I used a small WLED-compatible controller from IOTorero (via Athom). It runs straight off USB-PD, costs about $25, and does everything I need — Wi-Fi control, Home Assistant integration, and a built-in mic for sound-reactive effects.
All up, the hardware comes in around $55 — which is roughly half what you’d spend on a Govee or Philips Hue equivalent.
Setup and Automations
I flashed the controller with the latest WLED firmware and connected it to Wi-Fi. Once that’s done, setup takes just a few minutes — choose your LED type, set the voltage, and you’re good to go.
The real fun starts when you connect it to Home Assistant.
Mine automatically reacts to what’s playing through Plex — Star Wars triggers lightsaber-style effects, Jurassic Park fades between red and yellow, and Frozen has a blue/light blue aurora effect.
It’s one of those automations that doesn’t need to exist, but makes the room feel alive. When you pause, the lights fade back up so you can grab snacks. When the movie ends, they slowly fade out again.
If you’re interested, here is my YAML for the movie title triggered presets. The ‘fade out after a little while’ is handled by a separate automation that also handles the room lights.
alias: Couch Lighting Effects description: "Recals WLED presets based on keywords in movie titles" triggers: - trigger: state entity_id: - media_player.living_room_tv_android to: playing for: hours: 0 minutes: 0 seconds: 2 conditions: [] actions: - alias: Choose Couch Preset choose: - conditions: - condition: template value_template: |2- {{ states.media_player.plex_living_room_tv.attributes.media_title is string and 'frozen' in states.media_player.plex_living_room_tv.attributes.media_title | lower and states.media_player.plex_living_room_tv.state == 'playing' }} alias: If title contains 'Frozen' sequence: - device_id: 4f27c6d9dc22cafcc06d54375b382b2c domain: select entity_id: 45afabd616931b50f7aa499937a1ec33 type: select_option option: Frozen - conditions: - alias: If title contains 'Shrek' condition: template value_template: |2- {{ states.media_player.plex_living_room_tv.attributes.media_title is string and 'Shrek' in states.media_player.plex_living_room_tv.attributes.media_title | lower and states.media_player.plex_living_room_tv.state == 'playing' }} sequence: - device_id: 4f27c6d9dc22cafcc06d54375b382b2c domain: select entity_id: 45afabd616931b50f7aa499937a1ec33 type: select_option option: Shrek - conditions: - alias: If title contains 'Shrek' condition: template value_template: |2- {{ states.media_player.plex_living_room_tv.attributes.media_title is string and 'Bluey' in states.media_player.plex_living_room_tv.attributes.media_title | lower and states.media_player.plex_living_room_tv.state == 'playing' }} sequence: - device_id: 4f27c6d9dc22cafcc06d54375b382b2c domain: select entity_id: 45afabd616931b50f7aa499937a1ec33 type: select_option option: Frozen alias: If title contains 'Bluey' default: - device_id: 4f27c6d9dc22cafcc06d54375b382b2c domain: select entity_id: 45afabd616931b50f7aa499937a1ec33 type: select_option option: Warm alias: Otherwise - Warm White mode: single
The only hiccup I ran into was power draw. Even when “off,” the LED strip was still sipping power from the battery. The fix was adding a small MOSFET relay board so WLED could fully cut power when idle. It’s a tiny change that has greatly increased battery life (multiple weeks of regular use now)
I’ve recommended a different controller below with a built in relay so you don’t encounter the same issue!
Links to Products & Software
Here’s everything I used:
WLED Controller - This is the one I used, but you’d be better off with one that has a relay on board.
Mosfet Module - This is what I had on hand - massive overkill
Final Thoughts
This is one of those “gateway” projects that’s perfect if you’re just starting with smart lighting or WLED. It looks great, teaches you the basics of addressable LEDs, and can easily grow into something bigger — under-bed lighting, display shelves, or even a DIY Ambilight setup.
I’ll be using WLED for a lot of projects in 2026 - so keep an eye out for those!