Skip to main content
Home Automation

Home Assistant – Programmable Thermostat GUI

By October 30, 2021January 7th, 2023No Comments

So, after converting my thermostat over to Z-Wave earlier today, I was trying to determine how to best setup heating/cooling schedules for my thermostat.

Home assistant does not have a native GUI for handling this, and most are using automations to change the setpoints.

For me, automations is a pretty messy way of handling this, and I wanted something a tad easier, that I can easily understand from a glance.

I also looked through HACS for a gui- based programmable thermostat integration or card, and came up empty handed.

I decided to use the scheduler card to handle this for me. I already use this component for many one-off schedules, as it is easy to maintain, and has a simple interface to add/remove schedules, with conditions.

Setting up the “dashboard”

Because, I enjoy having groups of things seperate, I was happy to see I could make a seperate dashboard, to only display the climate-related schedules. This allows me to keep things such as, timers for my holiday lighting, seperate from my HVAC schedules.

The first action after creating the dashboard, set in panel mode, with only the scheduler component- was to create the “HEATING” schedule.

My heating schedule is pretty simple. M-F, I want the heat set to 70F at 6am, so when the wife&kids are getting ready for school, its warm. After 6:45am, the heat turns down to 67, and remains there until 10pm when it turns down to 64.

Remember- My Fireplace Automation will keep the living areas a couple degrees warmer than my thermostat setpoint as long as somebody is in there.

Step 1. Add an item:

But, only on workdays, at 6am

Next- click options.

I set a single condition, so the schedule will only apply if the thermostat is already in “HEAT” mode. I also gave it a name, which should allow me to easily sort through multiple schedules if needed. I did set the tag field as well to facilitate easier searching

I repeated this process 3 more times until I had the following schedules set:

  1. M-F, 6am: 70F
  2. M-F, 7am: 67F
  3. S-S, 7am: 67F
  4. DAILY 10pm, 62F

So far, this is the most maintainable looking option I have seen in Home Assistant….. Let me add the cooling schedules

For the cooling conditions, I basically followed the same steps, but, instead made a condition saying the thermostat must be in cooling mode:

After adding the rest of the entries, I had this:

Its “OK”, but, thankfully, the maintainer of this solution is a pretty great guy, and has options which can help us.

Looking at the Display Options for the card, we can tweak the information displayed. In my case- I showed the name from earlier, and then its default attribute.

My final configuration looks like this:

type: custom:scheduler-card
include:
  - binary_sensor.hvac_presence_detection
  - climate
time_step: 30
title: true
tags:
  - HVAC
discover_existing: false
display_options:
  primary_info:
    - "{name}: {action}"

Here is the final result:

Notes

While, this method is not at all perfect (I really think we need a programmable thermostat GUI directly in home assistant), this is the best method I could find at this time, that does not involve a ton of templating or yaml sensors.

This method is completely self-contained in the GUI, and can be easily updated at any time, without much skill level. As well, its pretty easy to add additional setpoints if required. You can also toggle any setpoint on or off with a single click.

I do wish there was an option with the scheduler card to allow sorting, ideally by the name field, as this could group the heat/cool/auto schedules together. I did create a new Feature Request to see if we can have this added in the future.

Hopefully, this post inspires you to go out an automate!

Also, do check out the scheduler card, if you are not using it, you should check it out!

https://github.com/nielsfaber/scheduler-card