Getting / Setting Insteon information from the Venstar T1700 thermostat
March 1, 2009 at 3:29 pm | In General, Hardware setup, Software Setup | 4 CommentsTags: cool on, fan off, Fan on, getting T1700 Insteon Data, heat on, Home Automation, Insteon, Insteon T1700, Insteon Thermostat, PLC, SDM, sdmserver, vb2008, X10
We’ll after receiving back some of my hard earned money thru 2008. I shelved out the $159 for the Insteon T1700 thermostat.
It can be found here.
The device is quite small, which is fine and thinner that my orginary Honeywell one which was a real plus. To install was also very simple.
And technical support was awesome!!! Who expects to call a company and receive a live person and be able to troubleshoot on the phone in less that 3 min. And to top it off the rep even called me back since he had to leave. At the end it was a simple dip switch due to my model. So if after you install it and when you turn on cool and heat comes out and vice-versa, just turn on dip switch two and your set! Thats Again Mike from Venstar!!!!
The only thing would be the ‘light’ on the side of the Insteon module. so in dark areas it does stand out.
Like mentioned above the device is very small and the insteon module even smaller.
For example check out the image in comparison to my hand
Setting Mode, Getting Temperature of Thermostat
Ok, enough Pictures and talk, lets see how to control this device.
First forget about sending ON/OFF commands, for me they didnt work, nor did they do anything. What we will be using is the 0×02 command instead of 0×11 for on or 0×13 for OFF. What I has able to find was the higher numbers after that worked. I’ll show you what
Ive got and show examples after. In my case I couldnt send request using the regular PLC commands so I ended using the low level calls using the sendhex function, that article can be found here
More ways to speak to your Insteon Devices
For the examples my PLC is # “0D 51 32” and my Thermostat is “01 02 03“.
0×6b – Bit 2 – Get Thermostat Mode (Returned is 00=off,01=Heat,02=Cool,03=Auto,04=Fan)
'Send Sm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6B 02") Sm.SendPLCHex("02 46 01 42 10 9F") ' Execute my command 'You should get the reponse on the Last Bit of your reponse. For example 04 01 02 03 0D 51 32 26 6B 02 So in this case 0x02 Means the device is on COOL.
0×6b – Bit 3 - Get Temperature (Returned is the temperature, you convert to decimal and divide by two)
'Send Sm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6B 03") Sm.SendPLCHex("02 46 01 42 10 9F") ' Execute my command 'You should get the reponse on the Last Bit of your reponse. For example 04 01 02 03 0D 51 32 26 6B 9A So in this case 0x9A Converted to decimal is 154 divide that by two and you get 77 degrees!!0x6b - Bit 4 - Set to Heat
'SendSm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6B 04")
Sm.SendPLCHex("02 46 01 42 10 9F") ' Execute my command
0x6b - Bit 5 - Set to Cool
'SendSm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6B 05")
Sm.SendPLCHex("02 46 01 42 10 9F") ' Execute my command
0×6b – Bit 6 – Set to Auto (To switch automatically from Cool to Heat depending on your settings)
'Send
Sm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6B 06")
Sm.SendPLCHex("02 46 01 42 10 9F") ' Execute my command
0×6b – Bit 7 - Fan on
'Send
Sm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6B 07")
Sm.SendPLCHex("02 46 01 42 10 9F") ' Execute my command
0×6b – Bit 8 – Fan off
'Send
Sm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6B 08")
Sm.SendPLCHex("02 46 01 42 10 9F") ' Execute my command
0×6b – Bit 9 – All Off
'Send
Sm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6B 09")
Sm.SendPLCHex("02 46 01 42 10 9F") ' Execute my command
Setting the Cool / Heat Thermostat Temperature
Here insteon of 0×6B we will be using the 0×6C for Cool and 0×6D for HEAT. So lets say you’ve set your device to Cool and want to lower it to 75 Degrees. Just like when we read the temperature, when we set it we need to multiply the requested value * 2 and convert it to HEX. In the sample below the variable Set_Temp holds what we want it to. The next statement converts it to HEX and *2 and presto!
'This is the temperature we want to set Cool to!
Set_Temp="75"
Dim Temp As String = Hex(Set_Temp * 2)
Sm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6C " + Temp)
Sm.SendPLCHex("02 46 01 42 10 9F")
'This is the temperature we want to set heat to!
Set_Temp="70"
Dim Temp As String = Hex(Set_Temp * 2)
Sm.SendPLCHex("02 40 01 A1 00 09 FD 9B 0D 51 32 01 02 03 05 6D " + Temp)
Sm.SendPLCHex("02 46 01 42 10 9F")
Hope this works for you and its working great for me. Each hour I poll the temperature and as part of that routine I poll my thermostat to keey the information up to date. I’ll post more as I find out!
4 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.



Thank you so much for publishing this!
I’ve been playing with Insteon controllers for a few months now. I have the thermostat controller and have been able to set the heat and cool points, but I hadn’t been able to find the status and mode (heat, cool, auto, etc) codes.
I’m planning to tie my control program for my thermostat into weather data from the web so that I can adjust settings intelligently to provide the most comfort at the least cost.
Did you poll through all the possible command strings to determine the commands?
Comment by Kevin — March 11, 2009 #
lol, Great that you can use them. Dont understand why they are so secret about it???.
What I did was that there is a open source program out-there called MisterHouse which has Insteon support. So looking at the source code which is written in PERL (Which is similar to PHP) I was able to find the strings I needed, then a some testing from a laptop and presto!. Also in the boards you can get some hint’s, that is where I found the weather is (*2).
Btw What are you using for weather?. I found that weatherbug has the best interface and its has plenty of Icons to download
Comment by lgarcia4617 — March 11, 2009 #
I actually haven’t quite decided which weather source and API to use. I had originally planned to put up a weather station at my house, but then I found out that we’re getting a TechShop ( http://techshopdurham.com/ ) nearby and spent all my extra money on a family membership.
I looked at MisterHouse briefly with the thought of doing exactly what you did, but found some other Insteon command info on the net and didn’t pursue it far enough.
The code I’m writing is actually all in Perl. My home server is running Ubuntu Linux and is always on, so I’m using a PLM rather than the PLC. Makes the command structure a bit different, but the important are the same.
I’ve been hacking out code for the last couple of hours — I can now control both hot and cold setpoints, get the temperature and toggle the fan — and I finally realized (from you post) that what I THOUGHT was a connectivity issue is actually just an error in specifying the number of hops allowed. I’ll implement the other pieces I need over the next couple of days. After that I’ll make calls to it from a secure web interface so that I can control everything easily from my iPhone (I can do it now via SSH, but that’s a pain!).
In any case, I’m glad I found your site — I’m eager to troll through it for more good stuff (and I can see there is a good deal of it here!).
Comment by Kevin — March 11, 2009 #
[...] an intelligent green system that responds to environmental conditions, but the path is clear. This page was a huge [...]
Pingback by One step at a time… » The Poptimistic Tiki-tastic Retro-Future Present — March 11, 2009 #