My Vent Dragons Broke, So I Gave Them An ESP32 And WLED Brain Transplant

Way back in 2022, I became aware of the existence of Vent Dragons. A living, breathing (okay, not fire breathing, but at least… they looked like they could) pair of dragons that live inside the kind of vent that you’ll find in many North American homes.

And, I’ll be honest, I suck when it comes to asking for gifts… or when people ask me “What would you like for your birthday?” The reason for that is long and convoluted, but the TLDR is that I experienced multiple bad things happening around my birthday growing up – including losing my Father to Glioblastoma and burying him the day before my 22nd birthday.

But those Vent Dragons? The beautiful art by David Lee Pancake? I fangirled about them. A lot. And I made it pretty obvious to my beloved that I would quite like one. So, that year, I got one.

It was beautifully made. There was a custom wooden backplate, containing the dragons (3D printed heads, hand painted, with little LEDs hidden in their eyes), a small battery pack, and a control circuit that allowed you to control the dragon’s eyes, how quickly they pulsed, and the pattern of their blinking, via an included off-the-shelf remote control. And for a few years, they worked as intended.

The Death

But one day, they died. They stopped responding. And eventually, I plucked up the courage to take a look. The battery pack had not only died, but it had leaked all over the electronics, turning the built in control circuitry into acid-eaten waste. And in trying to repair the original board, I actually managed to remove the hobby case it was in from the back of the Vent Dragon enclosure… which pulled off the hot glue that held it on, and some of the india-ink backing it was glued to. I also noticed that some of the original LEDs were burnt out.

I contemplated reaching out to the original artist. I’m sure he would have helped me replace the broken board. But I also wanted to know if it was possible to replace something with a battery with something that was powered from a different source. An ESP32 running WLED came to mind.

New Brains

For those unaware, WLED is a free, open-source software that you flash onto the readily-available, super-cheap ESP32 family of microcontrollers. ESP32 devices usually include a wifi chip, GPIO, and as long as they have a decent power supply, can happily run a small set of LEDs off their 3.3 or 5V rails. You can pick up a perfectly capable board for around $3–5 — cheaper still in multipacks, with prices only really climbing toward $40 once you get into the fancy variants with built-in screens, cameras, or long-range radios. And they’re tiny. Even the larger boards fit comfortably behind — or inside — something compact. Like a very nice piece of art that needs new brains.

A plan was hatched. I’d replace the original LED string lights inside each head with addressable, RGB-capable WS28xx-series LEDs. I’d wire them up to an ESP32, and I’d have control of each dragon’s eye color, blink rate, and more. And I’d use my home network to power it.

My house isn’t a standard house. I run my business from here and my wife telecommutes, so our entire house is actually flood wired. We have a server room (a converted upstairs hall closet) with a dedicated air conditioner, and a Ubiquiti network system with PoE and PoE+ throughout.

And my Vent Dragons lived in my office/edit room, high up on the wall, near the door. A perfect place for a new drop cable for PoE and Internet. PoE — Power Over Ethernet — pushes both network connectivity and DC power down a single cable, enough to run small things like cameras or WiFi access points. It’s a tidy way to get power to an awkward spot without trailing a separate cable back to the nearest wall wart.

I looked at a few options, but settled on a Waveshare ESP32-S3 Ethernet Development Board with optional PoE module. It had enough GPIO to work with WLED, and the PoE module provided enough current to drive the LEDs without requiring a separate supply. (WLED is a little picky about power supplies and usually, unless you’re powering a very short string of LEDs, you need a stand-alone supply.) And I rather naively thought I could get the Ethernet working for both data and power in WLED, since ESPHome supported it.

WLED did not. I tried for about two weeks, recompiling, trying to add drivers, tweaking. But compiling from source code has never been my strength, and I ended up cutting my losses. There was an out-of-the-box binary for the ESP32-S3 with 16 MB of RAM that worked with my unit. And the wifi chip on this particular unit is strong enough that I can use it without needing an external antenna.

For each dragon (I carefully removed them from the backing without damaging them), I replaced their eye LEDs with addressable LEDs and custom wiring. One WS28xx LED per eye. Because these LEDs are addressable (and only need 3 wires per LED), you can wire them in series — one after the other — so each dragon only had three wires coming out of it. Hot-glued in place, they looked amazing.

The Enclosure

That was on my bench, not in the Vent. I needed a mounting solution.

The original piece of art had an opaque plastic box hiding the electronics. I wanted something stealthier. So I broke out my calipers, Fusion 360, and started modeling. I hit another road block. The ESP32 fitted just fine on its own. With added pins soldered on, plugged into a piece of perfboard for breakout wiring… it didn’t fit lying flat against the backplate.

But it did fit on its side. JUST. Which is where the design came from. I settled on a black enclosure, long and thin, that was just large enough to hide the power electronics and cabling inside. I added vents (facing down) for ventilation, and a couple of posts for holding the sideways-mounted circuit board. And I designed it so that none of the Ethernet or ESP32 lights were visible. It just fit. But it fit. For mounting, I knew I’d have to modify the back of the vent, and I knew I’d need to make some holes (one of the scariest parts of the build), so I designed my vent enclosure to make use of heat-pressed inserts, with bolts passing through from the back of the enclosure.

And I added a nerdy inscription, because I don’t go anywhere without a D20.

Thurirl darastrix intus. Korth darastrix shar.

Protect the dragons within. Fear the dragons without.

Draconic · inscribed on the frame

WP 3D Thingviewer Lite need Javascript to work.
Please activate and reload the page.

The enclosure I designed even includes a drilling template, to help mark and cut the holes in the back of the vent — the scary part, made a little less scary.

The dragons looked great in a test fit, but what if we could make a “fire” effect? The way David had designed the vent dragons — with the dragons coming through them — lent itself to the idea that they were on a rampage, and perhaps, just perhaps, leaving smoldering flames in their wake.

I hatched another plan. What if we could make a diffuser to fit inside the enclosure that was opaque enough for LED light to shine through, but subtle enough it wouldn’t be visible as a light source? I wanted the feeling of flames licking at the back of the enclosure. Back to Fusion 360. And this time, I worked on a very simple hollow design that would take a WS28xx strip inside, with an open back on one side large enough to let the standard 3-wire cable pass through. And I printed it on my Bambu X1C, split between black for the backing and most of the sides, and white for the bottom front light strip and the tiniest sliver of each of the side strips.

WP 3D Thingviewer Lite need Javascript to work.
Please activate and reload the page.

Yeah, okay. I have a Bambu X1C. Just like those people rolling around in 2017 vintage Model 3s — “I got it before they went evil.” I’d never recommend anyone today buy a Bambu printer. The firm really is not your friend if you’re into right-to-repair or open source stuff. But I’ll also point out that my X1C was one of the first to run X1Plus (I opted into Bambu’s rootable-firmware path while that window was briefly open, knowing it waived my warranty). I also have it locked down in LAN mode. I have an X1Plus Expander, and I use Orca Slicer and Bambuddy… so the hardware is very much removed from the anti-open-source mothership.

A quick confession

Some notes on my really bad videos. Yes, I run a YouTube channel. Yes, we have really good 6K cameras. We have gimbals. We have low-light-capable cameras.

And yes — I filmed these on my iPhone, in poor light, and the eyes look terrible. But trust me: in the real world, they look amazing.

A few test prints later, and I had it dialed in. I had everything I needed! Some careful(ish) new holes made for the enlarged cables needed for each dragon and the fire, and I test-assembled. It looked great. But why stop there? Why not have it be audio reactive?

WLED, in its latest builds, can take a microphone attached to the ESP32 and have the lights react to detected sound. For a pair of dragons, that means controlling the eyes — either their blinking or their color. I ordered a small digital microphone, modified the enclosure to accommodate it, and soldered it in. The test fit worked well, and it was time to reassemble. I gave the backing a good fresh layer of india ink, purchased some fresh felt for the back, and carefully glued everything in place. With some fresh white screws in the frame, it looked just as it had when new — at least when turned off.

Mounting & Naming

Now to the mounting.

Because the dragons sit high up the wall, looking down on anyone in the room, I knew I wouldn’t be able to see the bottom of the ‘fire’ strip from above — only the sides. That’s one of the reasons I designed it the way I did. But I still needed to get power to it, via PoE. AND I needed to make sure the wiring was completely hidden by the frame.

Luckily, there’s a solution for that. A recessed single-gang wall box. Unlike standard ones, which sit flush on the wall, these recess the wall plate slightly, giving you the ability to hide it behind things. Since the chosen location was near a stud and within easy reach of the server room, I was able to add a new cable run from the office to the server room, dropping the cable down into the server closet and wiring up a new RJ45 in the rack. It was done.

The only thing left was naming the dragons, and setting up some controls. Two dragons, working in unison? Tiamat and Apsu — the primordial pair from Babylonian myth, whose mingling waters were said to birth the world. (Tiamat also moonlights as a rather famous dragon in certain tabletop circles, which sealed it.) WLED lets you configure multiple segments of LEDs, so I ended up with three: one for Tiamat’s eyes, one for Apsu’s eyes, and one for the fire effect. Within WLED, I configured the fire effect and a slow blink for each dragon. That’s how they started out — but I realized the sound-reactive mode was just too good. So now, they react to the sounds of the house, of the dogs, of music I’m listening to. And it is epic.

I intended to only use audio reactive as a joke. It’s become the go-to mode.

The finished restoration is, I hope, in the spirit of the original artist. I hope I’ve not detracted from the original. And I hope that this is just another way to give the dragons themselves a little bit of life.

… And because I’m that kind of person, here’s a build list.

The build list

The things I did to rebuild the dragons

Here’s everything that went into the rebuild. Where I could, I’ve linked the actual part — and pointed at open-source-friendly vendors who publish their schematics and stand up for right-to-repair. None of these are affiliate links, and none of them are Amazon.

Start here

The original Vent Dragons by David Lee Pancake

None of this exists without his art. If you only click one link, click this one — buy the original.

This was my own independent modification of a piece I owned — it isn’t endorsed by or affiliated with David Lee Pancake. The models you can spin in the viewers above are the enclosure I designed, not his artwork. And really: please buy from him. He made these dragons, and every bit of the charm that made me fall for them is his — all I did was change the lightbulbs. If (and only if) he’s happy for me to, I’ll share the enclosure files I made, open source, with full credit back to him.

The brains
Waveshare ESP32-S3-ETH board + the matching PoE module (select it as an option on the same page).16MB flash, W5500 Ethernet, switchable onboard/external antenna — the exact board I used.
The lights
A reel of WS2812B addressable strip.Snip single LEDs off it (one per eye) and use a short length for the fire diffuser — same strip throughout, just cut to suit.
The sound
INMP441 I²S MEMS microphone — the WLED-on-S3 favourite, and dirt cheap.Prefer a branded board? Adafruit’s SPH0645 I²S mic is the documented alternative (needs a small WLED tweak).
Enclosure hardware
M3 brass heat-set inserts + matching machine screws.From McMaster-Carr — the gold standard for fasteners in the US.
Network & power
A Cat6 keystone jack + bulk cable, and a recessed single-gang low-voltage box (Arlington TVBU505 is the classic).Keystones from Monoprice; the recessed box from any electrical supplier.
Finishing
India ink for the backing (Speedball Super Black is the classic), felt for the rear.Ink from Blick; felt from your local craft store.
The software
WLED, Autodesk Fusion, and Orca Slicer.All free. WLED and Orca are open source — the good kind of free.
The glue
Home Assistant ties the dragons into the rest of the house.Optional — the sound-reactive effects run on the ESP32 itself — but it’s how you fold them into automations and schedules. Open source, naturally.