While setting up Christmas decorations this past weekend, one of the kids[1] suggested we connect the lights in a set of village buildings to Siri. My instinct was to grab a few more Z-Wave outlet plugs from Amazon, but I remembered having an outlet controller stashed away somewhere that I’d used for a similar purpose a few years back.

IP Power 9258

The IP Power 9258 is an ugly little ethernet-connected box for controlling four separate outlets over a TCP/IP network. It has an embedded HTTP server that hosts a few configuration web pages and an incredibly simple device control endpoint.

When I was building software for embedded devices years ago, our team had a bunch of these for resetting devices remotely. I picked one up at some point and have used it with my own home-grown automation over the years, which I’ve stopped using in favor of homebridge. Its per-outlet price is about on par with modern plug-in modules, but obviously suffers from a lack of wireless connectivity. Nonetheless, I already have one, so getting it added to HomeKit made for a great Saturday afternoon project.

Homebridge Plugin

The catalog of Homebridge plugins is very impressive, so I wasn’t terribly surprised to find an existing plugin for the IP Power device. Unfortunately, I wasn’t able to get it working. The implementation is far more complex than what I’d expected, so I set out to build a simpler version.

I’m not the world’s most experienced Javascript developer, but I managed to get my own implementation working in an hour or so. After a modest bit of testing, I moved the box out of my office and in to place with the Christmas village.

Here’s a quick demo of each outlet being controlled individually from Apple’s Home app.

I also created a couple scenes for turning all of the Christmas lights on and off. In this video, you can hear each relay being activated serially as the scene is executed.

After I’d worked out most of the issues, I published the module to npm. Check out homebridge-ippower on npm or the source on GitHub. It’s pretty quick and dirty, but is working pretty well for our little Christmas display.


  1. Ok, it was actually me. ↩︎