Insteon Thermostat Monitoring & Control through ISY-994i

That’s odd, using set works fine for me. Glad you’ve got it working!

Yeah, very strange. I’m using the latest version of the ISY code (v 5.0.11) and also the latest version of Home Assistant (v 0.59.2). My CT101 zwave thermostat is connected to the ISY directly.

Not sure why there would be differences with you. Thanks for all your hard work figuring it all out, you saved me a lot of time. Like I said, I will post my solution and give you the credit. :slight_smile:

1 Like

Hey @DetroitEE: I’m currently working on making a lot of improvements to the ISY994 component. I’ve got a PR out right now that makes door and leak sensors work “natively” in Home Assistant, including their heartbeat feature.

Next up I’m going to make it properly detect the various Insteon device types without needing to resort to naming items specifically in the ISY994.

The thermostat is one that I’ve been curious about. I’ve been thinking about picking up the Insteon thermostat to replace my dumb thermostat, partially because it would give me an opportunity to make it work perfectly in Hass. In the meantime you and I could sync up and provide me with some details about how the thermostat is represented in the ISY so I can see how possible this would be. I’d love to get some example dumps of your /rest/nodes endpoint so I can see how thermostats are treated in there.

@OverloadUT I’d be happy to help out in any way I can to improve the ISY component.

Here’s the relevant endpoints from rest/nodes, there are 3 total: the thermostat itself, and two binary sensors that turn on when the thermostat is calling for heat/cool.

<node flag="128">
  <address>28 9C CC 1</address>
  <name>Thermostat</name>
  <type>5.11.13.0</type>
  <enabled>true</enabled>
  <deviceClass>1</deviceClass>
  <wattage>1000</wattage>
  <dcPeriod>60</dcPeriod>
  <startDelay>0</startDelay>
  <endDelay>0</endDelay>
  <pnode>28 9C CC 1</pnode>
  <ELK_ID>A05</ELK_ID>
  <property id="ST" value="136" formatted="68.00" uom="degrees"/>
  <property id="CLIMD" value="1" formatted="Heat" uom="n/a"/>
  <property id="CLISPC" value="154" formatted="77.00" uom="degrees"/>
  <property id="CLISPH" value="136" formatted="68.00" uom="degrees"/>
  <property id="CLIHUM" value="32" formatted="32.00" uom="%"/>
</node>
<node flag="0">
  <address>28 9C CC 2</address>
  <name>Thermostat - Cool Ctl</name>
  <type>5.11.13.0</type>
  <enabled>true</enabled>
  <deviceClass>1</deviceClass>
  <wattage>1000</wattage>
  <dcPeriod>60</dcPeriod>
  <startDelay>0</startDelay>
  <endDelay>0</endDelay>
  <pnode>28 9C CC 1</pnode>
  <ELK_ID>A06</ELK_ID>
  <property id="ST" value="0" formatted="Off" uom="%/on/off"/>
</node>
<node flag="0">
  <address>28 9C CC 3</address>
  <name>Thermostat - Heat Ctl</name>
  <type>5.11.13.0</type>
  <enabled>true</enabled>
  <deviceClass>1</deviceClass>
  <wattage>1000</wattage>
  <dcPeriod>60</dcPeriod>
  <startDelay>0</startDelay>
  <endDelay>0</endDelay>
  <pnode>28 9C CC 1</pnode>
  <ELK_ID>A07</ELK_ID>
  <property id="ST" value="0" formatted="Off" uom="%/on/off"/>
</node>

The commands as documented in the ISY REST api documentation all seem to work as expected, with the quirk that the insteon thermostat temperature and setpoints are all 2x their actual values in degrees F. The commands for setting the thermostat mode are documented in the OP. Note that I did not document the thermostat mode (CLIMD) setting for the “Fan”, “Program Auto”, “Program Heat”, and “Program Cool” modes, because I don’t see much point in them, but they should probably be included for the sake of completeness if you are going to add it to the component. Fan is 4, Program Auto is 5, Program Heat is 6, and Program Cool is 7. One other quirk that is not documented is that you can increment/decrement the setpoints by 1 by using the /node/cmd/BRT and /node/cmd/DIM commands.

Let me know if you need any more info.

1 Like

As promised, here is the link to my configuration.

Hey, I just wanted to follow up and thank you for the post. I need to finish my ISY994 refactor that will fix 5.0.10+ firmware support fist, and I plan on tackling the thermostat issue next. I’ll probably end up buying an Insteon thermostat, as soon as I can figure out how to make it work in a 2-wire system.

1 Like

I would probably go with sed instead of awk. In order to use awk you’re going to have to make an assumption that the XML will always come back in the same order, which I’m not sure I would trust. Doing the following works for me:

  • platform: command_line
    name: House Temp
    command: /usr/bin/curl -s --user ISYUser:ISYPass
    http://ISYAddress/rest/nodes/xx%20xx%20xx%20x/ST” 2>&1 | sed ‘s/^.formatted="//;s/".$//’
    value_template: ‘{{ value | round(1) }}’
    unit_of_measurement: °F
    scan_interval: 5

I will have to try that. Do you know if SED will work with HASSio?

Has anyone gotten the grep or sed command to work with HASSIO? Hassio doesn’t support the -P option with grep.

I have HASSIO running and I have Insteon Thermostat configured an ISY. I am able to get a response using the REST API using a curl, but I having issues with Regex portion.

This is an old thread, but for anyone still watching: I’m working on integrating the ISY Thermostats through the climate module: Insteon Thermostat 2441TH for ISY

Hello, just getting started with HASS, so my apologies for my ignorance. Went through guide but cannot get Zwave thermostat setup correct. Just to clarify, are the different code snippets above all going into Configuration.yaml, or different .yaml files? If so, do names matter etc? Thanks

I would recommend trying out the link in the post above yours, looks like they have developed a much cleaner way of integrating the Insteon thermostat.

1 Like

Thanks. Getting a handle of this slowly!

I am using the custom component to control my Insteon thermostat and lights. However I see the message “ISY could not update node x.x.x.x” in the logs a lot. It typically appears when I execute an HA script or scene.

I am running ISY version 4.73. What is everyone else running? Should I upgrade?

How many ISY devices are you trying to update with the scene/script? Are you using Insteon or Z-Wave? The ISY (and really, Insteon) doesn’t like a flood of commands at the same time. My recommendation is to create a Scene in the ISY with all of the ISY device changes from the HASS script and call that as part of your HASS scene/script in one shot. Triggering an Insteon scene uses much less Insteon network traffic because the scene links are stored in each device–meaning only 1 scene command has to be sent and each device reacts appropriately.

I have taken your suggested approach for creating a scene on the ISY and then use that switch in HA. I have an ISY and all of my devices are Insteon, no zwave going over the ISY.

I still notice when I change the temp using HA of my Insteon thermostat, I get the message

2:51 PM custom_components/isy994/climate.py (WARNING)
ISY could not update node: 34 D5 4E 1

The thermostat does update, just a little annoying that the log message happens.

OK. I will take a look at it and see if it’s doing the same thing on mine. I’m assuming that’s the thermostat node?

Yes the thermostat node.

This should be fixed in the latest version.

Yep, its fixed now.

Thanks