[Release] Insteon HTTP switch/dimmer

[Updated] October 6, 2018

I have wonderful news for Hubitat owners with Insteon devices. Thanks to the efforts of @ogiewon with the development of HTTP Momentary Switch, @cwwilson08 has modified it for use with the Insteonlocal plugin for Homebridge!

By setting "use_express": "true" in the Insteonlocal section of the Homebridge config.json file, Homebridge will accept HTTP GET request and turn on or turn off Insteon lights with no need to send to the cloud and no requirement to sync HomeKit automations to virtual switches for lights.

[Update] 10-2-2018

Scott Kuester, the creator of the Insteonlocal plugin for Homebridge, has created a stand-alone Express Server for those that do not want or need Homebridge. You can find it in his repo, but it is not published on NPM yet, so you will need to first install Node.js, download the zip of Insteon-Server from Scott's github repository, move the expanded files to the node_modules directory and the type npm -g install. Once that's done, you need to run npm -g install home-controller and npm -g install express to get the required dependencies. Lastly, run it by typing node insteonserver.js


Difference between this driver and the express server, versus the Instoen direct driver

•Use this driver with Express Server, for input from Insteon sensors.
•Use this driver if you have Insteon Keypads (currently only supported via Homebridge)

•If you only need to control Insteon lights, outlets, relays, micro dimmers and switches, and don't need to interact with the device directly (e.g. you don't need changes to the device to refresh the state in Hubitat) then you should use the Insteon direct PLM driver


Ramp Rate - The built-in device Ramp Rates are now supported for individual devices, but user definable Ramp Rates are not supported from the driver. Therefore, the Fade box in the driver does not serve any purpose and may be left blank.

Refresh - User selectable refresh has been removed due to unexpected issue with Rule Machine delay settings and slow device behavior when more than one device at a time was using the built-in refresh. If you need Hubitat to reflect changes made to a device such as a wall switch or micro module, you should create a Rule Machine trigger based on periodic. Multiple devices using this HTTP driver for express server can be refreshed at once without issue. Changes to the driver in Hubitat will update instantly, but changes at the devices outside of Hubitat, such as dimmer adjustment, Micro Module latching or momentary modes, or response to Insteon Load Sensing feature found in LampLinc plug-in modules and wall outlets will not be updated in Hubitat unless refresh is used.

Future goals include, support for:

• IOLinc devices
• Insteon Scene Control


Here's how to get started:

  1. Install Homebridge on a RPi or old computer and then install the Insteonlocal plugin. A stand-alone Express Server that does not requre homebridge is also available. See update note above.
  2. Add "use_express": "true" to your Homebridge config.json file. It should be just before the line "server_port": "3000",
  3. Add the Hubitat "Insteon HTTP switch/dimmer" driver code (copy from above)
  4. Enter the IP of your Homebridge computer in the driver (not the IP of your Insteon hub)
  5. Enter the port number from your config.json file. This is the port number of the Insteonlocal Express Server (not the port number of your Insteon hub). Default is port 3000.
  6. Enter the IP address of your Insteon hub. This is required to allow smooth dimming when using the Express Server that does not otherwise support it.
  7. Enter the port number of your Insteon hub. Default port is 25105
  8. Enter the Insteon ID (Do not include decimal points or spaces) of your switch, bulb, dimmer, lamp module, etc. You can find these in the Insteon app under Settings > Devices (Note IO Link and Insteon scenes are not supported at this time)
    Your Insteon lights should now be controllable from the driver.
  9. Enter a value in the top field and click "Set Level" to manually set Brightness level. Brightness may also be changed via Rule Machine, Alexa Skill or anything that supports changes to brightness levels in Hubitat.

Thanks go to @ogiewon and @cwwilson08 for the great work in putting this driver together and a big thanks to Scott Kuester for creating the Insteonlocal driver for Homebridge and the stand-alone Insteon Express Server


Glad to hear you've got it working!

1 Like

Couldn’t have done it without you. Thanks again Dan!

1 Like

I think we can handle all of these things....

1 Like

How/where is this accomplished? I've installed node.js, can't find a node_modules under root or local user.

I do see it under /usr/local/lib/node_modules, but putting the files there and running npm -g install just gives errors.

Installing home-controller and express did put them under /usr/local/lib/node_modules though.

Did you change directory to /usr/local/lib/node_modules?

Also, you may need sudo npm -g install

[Edit] Even easier. Scott has now published it on NPM. You should be able to just do npm -g install insteon-server

Hi all -

I still haven't set up my Hubitat hub ( been dealing with Cancer still)

I downloaded the homebridge and installed the insteon plugin from within homebridge GUI.

I see I need to manually modify the config.json file I guess then how do I add this into Hubitat?

Also what features of the keypad does this expose? Can we do "Scenes"?

Sorry to hear is it not in remission yet. I wish you strength in your fight.

We don't have Scene support yet, but you can build them in HE. I believe SCOTT KUESTER added a way to do it to the insteon local plugin. I went back to the stand alone express server, which does everything I need as an Insteon owner (I don't have their keypads), but does not have the overhead of Homebridge. Plus Homebridge is causing issues on my Hub lately, so it's disable on my hub now. I'm exploring options and there are beta fixes that may help with that.

We're working on a new version of the driver that works with Scott's modification to the Express Server. It uses Webhooks for status, and that should allow us to use contact and motion sensors. We're getting response, but have errors to work out still. @cwwilson08 is the brains behind the code. I'm just the tester becuase Chris doesn't own the hardware. Anyway, if we can get this input, we should be able to eventually get keyboards working too, but I'll need to borrow one or get help from another Insteon user for testing.

As far as ON/OFF and Dimming, Inteon on the stand alone Express Server, is rock solid. I trust is as much as any directly connected device.

I can link to the info where Scott talks about the keypads and scenes. Since I'm not a user of either of those Insteon features/devices, I have not explored it. Scott's pretty good and responding to problem reports on GitHub and you can reach him via ST forum too via @kuestess

I dont have keypads either...

What is the best way to do this?

I have a server so I cab run homebridge easily but prefer not to if I dont have to.

It's an update I added to the OP. I believe Scott has added it to NPM now, so you should be able to just type npm -g install insteon-server

Since you already have Homebridge installed, you will have Node.js and that's all you need. You can uninstall it from your Node server if you want or just don't run it. If it complains about any dependencies, you may need to still install them as noted in the quote above, but I believe Scott said he was going to include them with the release on NPM. The event listener he added for the contacts (still unfinished on our side), does require and additional dependency, and I'm not certain that was added to NPM. The instruction above will add all the required dependencies though.

To run it you may need to change directory to where it's installed. You may be able to just type node, then the directory path followed by insteonserver.js

So it would look something like this (obviously the directory path will be different depending on what OS you installed Node on.

node /usr/local/lib/node_modules/insteon-server/insteonserver.js

For some reason in my install, that has never worked. Doesn't really matter to me, since other that Google Assistant Relay, I don't run anything else there currently. It's just always running in a shell. There's no feedback like there is with Homebridge, but you don't need it.

When it's running correctly, this is all I see in the shell.


Just checking in since it's been some time since this thread was last touched. Is this still the only/preferred method for controlling Insteon through hubitat? I got the insteonserver running on my raspberry pi and added the device to Hubitat but I can't seem to get the dimmer function working. I am able to turn the light on and off but using the dimmer slider does nothing. Has anyone else run into the same issue or have any advice on what to check to troubleshoot? Thanks in advance,


Have you entered the username and password for both the Insteon server and the Insteon hub?

There is a new driver. I have not posted an update and instructions, but the new driver (parent and child) is in Chris’ repo along with the existing drivers posted above.

Yes. I updated config.json with the hub username, password, ip addy and port. And I have added the Express Server ip & port along with the Insteon hub's ip/port/username/pw and the device's Insteon id in the device preferences.

As previously mentioned, I can turn the light on/off via Hubitat, just can't do any dimming. I'll see if I can find the new driver and see if that changes anything.

Ok, I figured it out. It wasn't clear in the version of the driver I'm using that the Insteon device id (for the dimmer) needs to be entered WITHOUT any periods. I noticed that there was a comment in the Insteondirect drivers that mentioned that so I removed the periods and it worked!

Thanks @SmartHomePrimer for the hint to look at Chris' repositories.

1 Like

Thanks. I'll update the instructions. Good catch.

We had a problem with getting dimming to work properly with "insteonlocal", as it was at the time Chris wrote the driver, which runs as a plugin to Homebridge. and created it as a hybrid, connecting both directly to the hub for smooth dimming and fast-off, and to the Insteonlocal plugin for on/off and status if I remember correctly. Since there was a lot of overhead in Homebridge at the time, that tended to be slow and not fire on occasion, or it wouldn't refresh properly sometimes. So we asked Scott Kuester if he would separate them out and he kindly did. Worked amazing. Then Chris asked about web sockets for instant refresh, so he added that too. That's where we are currently. Now working on 8 button keypad.

This setup has been super fast and reliable for me. The Insteon-Server application as you can see now is nothing difficult for a Pi to run. I run on a Macbook Pro with other stuff, so lots of HP there to spare. I don't have a massive number of Insteon products, 12 in total. Small house. I've shared it back into Homebridge using the driver from @dan.t and it's super responsive. No refresh problems anymore. Much better than when it was integrated into the Homebridge plugin

If you run the newer Insteon parent and child driver Chris wrote, once all your devices are saved in your config.json file, you just click Initialize in the parent, and it will auto create all the children. You also won't have to enter their deviceIDs as you do in the older driver linked to in this post.

Without knowing how many Insteon devices you have, if you're a long time Insteon user, you know how great they are. No worrying about losing pairing like Zigbee and Z-Wave. The dual mesh is very reliable, so it's just amazing with the compatibility and strength of Rule Machine 4. I'm able to integrate a massive amount of devices with the tools available from Hubitat and the community here.

1 Like

Oh and welcome to the Hubitat Community! I think you'll have fun with the hub. It's a work in progress, but pretty damn stable if you pick your devices right. Insteon and Caséta Picos are two excellent choices in my opinion. Both very stable.

Thanks! I'm trying to migrate from openHAB, but I'm finding that there's minimal support for my devices. I've had Insteon devices for years now and I love how solid and reliable they are. I just wish there was broader support amongst HA platforms. I currently have about 25 Insteon devices, including on/off switches, dimmers, dimmable outlets, motion sensors, leak sensors and an I/O link. I have everything working great in openHAB but I have heard great things about Hubitat so I figured I'd give it a try and see how it compares.

I'm going to have to figure out how to modify the driver and insteonserver to integrate the other devices or else this hub will be of no use to me. I also have about 40 Wireless Sensor Tags (including temp/humidity tags, motion sensors and open close sensors) that aren't supported by Hubitat so that will be a whole separate struggle.

Anyway, thanks for the welcome. I hope to be able to contribute as well.


All of these work with the latest driver. Dimmable outlets are not tested, but they should function just fine if you call them lightbulbs in the config.json file. All my dimmable devices, lightbulb or not, are set to "deviceType": "lightbulb", and then just "dimmable": "no", or "dimmable": "yes", Device types would be "contact" for door/window sensors (which should include the hidden contacts), "leaksensor", and "motionsensor". We would really appreciate knowing how well, or if it works properly with the dimmable outlet, as my outlet is on/off only. Shouldn't be any different than the 600W dimmers and plug-in dimmer modules we've tested on. I have an Insteon leak sensor, and although my IO isn't in use at the moment, it works. Motion sensors are also untested, but they are supported, so we would love that feedback as well.

Well that’s great news then. Can you post a link to the newest driver?

Download the Hubitat app