Home Automation

Like a lot of projects I do, I get most of the way through it before I think about writing anything down. This is no exception, and I covered a lot of ground on this one, so this will be a story in more than one part.

Home Automation. These words never had a lot of value to me, mostly because I do not trust the ecosystem behind things like Alexa; they feel like advertising spyware. I also work in IT, so I am skeptical about new technology that often seems like a solution in search of a problem.

However, I had a mighty need to track my heat pump thermostat. The folks who installed the heat pump two years ago made a pretty serious mistake, and until a couple months ago my winter power usage was almost three times more than it should have been for a brand new unit. The problem is solved now, but I still wanted to track it so I knew what ‘normal’ was.

My heat pump isn’t like most, its more of a commercial style unit, which means those fancy Nest thermostats wont work with it. Instead I have a modern but dumb Honeywell thermostat, and the helpful gentleman that fixed my heating issue also told me that I could buy a wi-fi gateway for it. Ah ha! I bought and connected it, but it only gets current information, there is no history or other tools. Its more of a phone app remote control.

Enter Home Assistant. This is an open source home automation server that is a control hub for your smart home. It seemed like the right solution to my problem of being able to poll the thermostat and put the history into some charts. My stretch goal was to somehow include the data from my power company too. They have an API, and show the data I want on their web site, so in theory it would be possible.

I decided I could build Home Assistant as a VM in Proxmox, which I had recently upgraded from 7 to 8. I used these instructions from the Home Assistant community forum and had it up and running very quickly. Because I already had a working Proxmox server, I just jumped to step 3 – a bash one liner. That was it!

Once I logged into Home Assistant I was able to add the Honeywell thermostat as an integration, and from there I was easily able to add it to the dashboard. Early success! It turns out another integration called OPower already worked with my energy provider, so by simply adding the integration I was immediately able to get history data from them as well. Fantastic!

I spent some time building charts for weather as well to correlate the data visually, and installed a couple of prominent tools like HACS, Studio Code Server, and Terminal to make my administration life easier. The ‘mini-graph-card’ is especially great for building nice looking charts quickly. However, while the thermostat integration exposed the sensors I needed, it still didn’t accumulate the history data well. I needed to go deeper…

So far I had avoided any config file changes, but to really turn Home Assistant into the tool I needed, I was going to have to get my hands dirty. Using Studio Code Server, I added some ‘history_stats’ stanzas to my configuration.yml file to create the binary sensors I needed to track the ‘heat on’ time. Now I could create a chart that showed when the heat came on over time, and accumulate those stats into a bar chart for total runtime per day. Success! My original goals for this project had been met, but it seemed like there was so much more I could do with Home Assistant, now that I had spent some time with it…

2 Replies to “Home Automation”

    1. lily says:

      Sorry, it wasn’t relevant to the story.
      My heat pump is a ‘package’ style, all the fans and equipment are outside in a big box, and the ductwork in the house goes out to it. The installers left a huge gap where the ducting connected to the intake side of the heat pump, so it was pulling cold outside air in constantly instead of the relatively warm air from the return.
      Last winter the Aux Heat would come on anytime the temps were below 40-ish. So far this winter it has not come on once!

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *