[RELEASE] Insteon Hub 2244 and 2245 Dimmer and On/Off Plugs/Switches/Bulbs

Awesome - Thanks for the hard work

1 Like

Any update?

The 2245 is not playing nicely with retrieving status.

The only other way to do it is to pull the status and then retrieve the file /buffstatus.xml and then parse out the status from that, but the problem is, it only holds a specific amount of data. If you pull like 10 devices within the same timeframe, you may only retrieve the status from the first 6 devices and the additional 4 may not retrieve status.

I believe via the Insteon API you can do similar things, but I’m not sure which hubs are compatible with it.

I’ll keep doing research in my spare time to find another solution for retrieving status.

thanks… this is still a massive improvement over what was previously available.

Would a workaround be possible to say 8% or less reports as off?

I have set up a local instance of the InsteonHubStatus.php and modified the URL in the getStatus function.

In order to get my Insteon devices to operate properly, I had to give them my public IP.

In my limited knowledge of how the smart things system works, it looks like the information to and from the Insteon hub is being sent in clear text over the web. Is that the case?

Is there a way to keep this traffic contained to my LAN?

That’s correct, your information is being sent unencrypted through the web to your public IP.

So the way Insteon works in it’s current state… You have a few options of control:

  1. You use your app on your phone locally at home.
  2. You use your app and port forward your ports through your router to access remotely (essentially the same way this app works)
  3. You use connect.insteon.com which will only work if you’re at home or your router is port forwarded.

Insteon does have a tokenized login available, but it’s not something you can readily obtain and will still require your ports to be forwarded for control.

There IS a way to talk to the Insteon Hub locally without going over the public internet, however, you won’t be able to retrieve the device status. I’ve experimented with this through the following command:

sendHubCommand(new physicalgraph.device.HubAction(""“GET /3?0262${settings.deviceid}0F${num}${level}=I=3 HTTP/1.1\r\nHOST: IP:PORT\r\nAuthorization: Basic B64STRING\r\n\r\n”"", physicalgraph.device.Protocol.LAN, “${deviceNetworkId}”))

This works just fine for local control. However, like I mentioned above, you will not be able to retrieve the status of the devices, only control them. There are some janky workarounds to get SmartThings to work with Insteon, but this works pretty well for me currently. I have about 8 Insteon Dimmers, 2 Insteon On/Off switches, and 2 Insteon Bulbs. I’m able to easily control and retrieve status of them just like a Z-Wave switch.

Thanks for the clarification. I guess I always assumed that the traffic between my phone and the Insteon hub was encrypted.

I do like the ability of having feedback from my Insteon devices in the SmartThings world, so I will think about how I want to proceed.

Thanks for making these device handlers.

Thank you,

I’m also seeing this 8% issue from sx.xml. Looking forward to seeing if someone finds a workaround or new firmware gets pushed. Following this as well as looking for solutions, I’ll update if I do!

Insteon is no longer using sx.xml from what I can tell. I was able to monitor some traffic coming from the app, and it is now reaching out to an amazon endpoint located at https://ps.pndsn.com/v2/ . It has quite a few parameters being passed along as well, such as an auth token, extended device id and uuid, an instance id.

I’m able to get traffic a response from that API by sending along the auth token I was able to capture. Not sure if this is a static token or something that gets created dynamically.

So in short, I’m not sure that it is easy to reach the new endpoint and get authentication without manually decrypting the requests coming from the app. I’m guessing we won’t be able to get Insteon device status any time soon.

Hey Mitch,

Good research. I’m still doing some investigative work on the 2245 in my spare time… Insteon REALLLY doesn’t want to approve me for their API access for some reason. I’ve applied 4 times and contacted their support. Quite a disappointment.

From what I can gather, the 2245 is using the buffer file to store the latest pulled status. The only problem with using this file to pull the status of a device is that it can only store the last pulled status of a certain amount of devices. I think it limits to 255 characters? So if every device output contains 8-10 characters, I can only obtain the last 20-30 device statuses. If someone has more than that amount of Insteon devices, it will never determine the correct device status.

Still looking around for a solution. Being able to control these legacy devices really saved me a lot of money. Didn’t want to throw away $600 worth of insteon products and replace with Z-Wave if I didn’t have to. Was hoping just some simple control will do the same for the community :slight_smile:

Looking forward to getting more stuff added asap.

I started sending them an API request once a day for about a week and they finally sent me one. My description for what I’d do with it: Create an app to RULE THE WORLD!

And…it worked!

1 Like

Very good to hear - Can’t wait to see what you can accomplish.

My biggest sad panda moment… finding out that the Insteon multi-button switches don’t send the other button info via API… so no way to use them as macros for other devices.

Hi I’m new to Smarthings I have a ton of Insteon devices that I’m trying to integrate with Smart Things HUB. I found this blog and have a couple of questions.

First, do I need to create a new device type for each one of my Insteon devices? Or do I just add the Insteon HUB as a device type?

Second, the instruction have you 6) Fill in the hub IP, hub Port, Device ID, hub Username, hub Password
IS the HUB IP the public or local address?

Third, I’m to update the hub IP, hub Port, Device ID, hub Username, hub Password So for this one do I simply replace what’s between the “XX” with my information

input(“deviceid”, “text”, title: “Device ID”, description: “Your Insteon device. Do not include periods example: FF1122.”)
input(“host”, “text”, title: “URL”, description: "The URL of your Hub (without http:// example: my.hub.com ")
input(“port”, “text”, title: “Port”, description: “The hub port.”)
input(“username”, “text”, title: “Username”, description: “The hub username (found in app)”)
input(“password”, “text”, title: “Password”, description: “The hub password (found in app)”)

forth, What is the HOST, and where do I find this information?

Thanks in advance for your reply…I’m new at this…

Regards,
Gil

Yes, by copy/pasting the code into your graph.api account

This will be your public IP address and the port you’ve opened on your firewall.

Yes that’s correct.

thanks for the prompt reply…

Further clarification to first question…So do I need to create device type for each one of my Insteon devices?

Further clarification to third question #1 … For the input “HOST” what would my URL be for the Insteon Hub…Is this the public ip address. I don’t believe it resolves to and DNS name…(.com, etc)

Further clarification to third question #2

input(“host”, “text”, title: “URL”, description: "The URL of your Hub (without http:// example: my.hub.com ")

Also, just to be certain… I’m to replace all information within “XX” with my details… example below

Template - input(“deviceid”, “text”, title: “Device ID”, description: “Your Insteon device. Do not include periods example: FF1122.”)
My Information - input(“E33785”, “Family Room Dimmer”, title: “E33785”, description: “Family Room Dimmer”)

Thanks,

It would be either your IP (x.x.x.x) or a DNS or DynamicDNS you create (yourhouse.com).

Yes and no. You don’t modify the code here at all. You install it into your smartthings portal and then from the portal or the app you define this information. I recommend using the portal. You would create a new device, fill in the details about the device, then edit the preferences for the device and fill in all the insteon details.

Follow this:

i’m struggling here…would it be possible for you to call me… my number is 610-299-2687

i’ve setup the port forwarding
i’ve created a device handler with your code
i’ve created a device and selected
select type = insteon dimmer switch and plug

but I see no where at add insteon details… help please

i found the preferences and plugged in the Insteon information… however the control of this device still isn’t working

I highly recommend not posting your phone number publicly.

Go to the live log and see if there’s any errors when you try and do various actions.

7:20:43 PM: error java.lang.reflect.UndeclaredThrowableException @ line 130

Line 130 reads

httpGet(“http://${settings.username}:${settings.password}@${settings.host}:${settings.port}//3?0262${settings.deviceid}0F${num}${level}=I=3”) {response ->