Awesome - Thanks for the hard work
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:
- You use your app on your phone locally at home.
- You use your app and port forward your ports through your router to access remotely (essentially the same way this app works)
- 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
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!
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 ->