Climate Scheduler

Climate Scheduler Overview

Climate Scheduler has been named by an engineer so is mostly self explanatory, it’s a custom integration that allows you to create schedules for anything that presents a climate entity. The interesting part is you can create group entities together to apply the same schedule, and you create the schedule by dragging nodes around on a graph.

v1.14.11 now available, the big improvement is Workday Integration support! More info at the end of this post.

Key Features:

  • 24hr, weekday/weekend, and 7day schedules are available
  • Weekday/weekend now supports the Workday integration!
  • Each schedule can have multiple profiles, “home”, “at work”, and “vacation” are a few examples
  • Pretty much every aspect of the integration can be controlled using Actions for automations
  • Graph based UI so very user friendly for folks who want something easy to share with their household

Known Issues:

  • The UI is not yet optimised for mobile usage, desktop or tablets are recommended, the current dev focus is a UI overhaul though so stay tuned.
  • Some folks don’t see the card after installing, you need to make sure you’ve gone to Integrations → Add Integration, then add Climate Scheduler. If you don’t do this it won’t appear, installing via HACS doesn’t actually install it, it just makes it available to be added.

Installation:

  • Open HACS, search for Climate Scheduler, click install. You’ll need to reboot
  • After rebooting go to Settings → Integrations → Add Integration and then search for Climate Scheduler
  • Clear your browser cache
  • Add a panel (single card) to a new or existing dashboard and add Climate Scheduler Card

Quick Start:

Click on “Unmonitored” to see a list of all the climate entities in your HA instance, you can click “Monitor” to add the entity by itself or if you have groups created already “Add to group” will do just that.

At the top of each schedule you should see a few controls, you can enable/disable the schedule, choose which profile is active, copy/paste, or advance the schedule to the next node. This may be useful in case you come home early and the heating isn’t due to be on for a while. You can cancel the advance if needed too.

Each schedule presents with a graph, double clicking will add a node which you can drag around to set the time and temperature. If you click on the node you’ll see more settings which can be applied (below) such as HVAC settings or profiles, as well as “No change” which removes the temperature setpoint, this is useful for systems that don’t have temperature settings but rely on profiles instead.

The temperature for each member entity will also be displayed in the background, this can be disabled in the global settings for the integration at the bottom of the page.

For each schedule you have some options, these include the mode (24 hour, weekday/end, or 7 day) as well as creating or selecting a profile to edit. You can also copy or paste schedules to make it easier to duplicate then tweak for different areas.

At the bottom of each schedule you can see the member entities and have the option to remove them or move them to another group.

Latest Version: v1.14.11

Added

  • Workday Integration Support: Optional integration with Home Assistant’s Workday integration for 5/2 scheduling
    • Backend detection of Workday integration (checks for binary_sensor.workday_sensor)
    • User-configurable option to enable/disable Workday integration usage
    • Manual workday selection with 7 day checkboxes when Workday integration is disabled or unavailable
    • Settings stored persistently: use_workday_integration (boolean) and workdays (array)
    • UI automatically shows/hides day selector based on Workday availability and user preference
    • Frontend detection with connection wait logic to handle timing issues
    • New constants: SETTING_USE_WORKDAY, SETTING_WORKDAYS, DEFAULT_WORKDAYS
  • Orphaned Entity Cleanup: New service and UI button to cleanup orphaned entities
    • Service cleanup_orphaned_climate_entities scans and removes orphaned entities
    • Checks climate entities, sensor entities, and switch entities
    • Dry-run mode by default (delete=false) to preview orphaned entities
    • UI button in settings with scan-first workflow and confirmation dialog
    • Lists all orphaned entities before deletion
    • Identifies entities without matching groups or climate entities in storage

Changed

  • UI Layout Improvements: Settings text labels and descriptions can now use full width
    • Increased min-width from 220px to 280px on Graph Options and Temperature Precision sections
    • Added flex-wrap to allow responsive layout on smaller screens
    • Added max-width: 100% to Derivative Sensors and Workday Integration sections
    • Settings descriptions no longer constrained by fixed-width parent containers
  • Entity Filtering: Climate Scheduler’s own entities are now filtered from unmonitored entity list
    • Entities starting with climate.climate_scheduler_ are excluded from the list
    • Prevents confusion from seeing integration’s own proxy entities
  • Release Script Enhancement: .version file is now updated during release process
    • Added to git commits automatically
    • Included in dry-run output for verification

Fixed

  • Workday integration detection timing issue resolved with connection wait logic
  • Removed redundant status icon from Workday integration setting
  • Filtering Climate Scheduler entities from the Unmonitored list

You should be able to install it via HACS by the usual methods, more info at the link below:

5 Likes

Literally minutes later I spotted another post that introduced me to this add-on that I didn’t know existed. Ah well, I like my graphs. :sweat_smile:

1 Like

Great Job!
I really like the idea if using the mouse to set temperatures and times :+1:

The distinction between weekday/weekend (for me workday/holiday/weekend would be even better) would be at the top of my feature list :slight_smile:

Good thing, though, you used the caveat here:

The conversion between C and F doesn’t work smoothly yet - happy to work with you on figuring it out in case you need some help here:

And, although I live in Fahrenheit-Country now, I grew up in the Celsius World.
Sometimes, I’m still struggling with the conversion, which is evident, that the temperature in my car is set to Celsius, while everything else is in Fahrenheit :stuck_out_tongue:

P.S.:
Happy to copy this over to a Github issue, if that’s where you’d like to see it.

1 Like

I’ve pushed a fix for the unit issue, if you have a schedule set up already you’ll need to redo the schedules so that the new values are in the correct range. Fingers crossed it works!

Updated to include basic group support.

Known issues:

  • Not functioning in the Home Assistant mobile app
  • Node editor allows for changing of HVAC and other settings, they aren’t currently applied to the device, only temperature is currently controlled
  • Scheduled isn’t updating properly, it should list the current scheduled target temperature and Target will show the actual value that device is set to. This is for cases where someone wants a bit more or less heat than scheduled. The scheduler should respect the change until the next node is hit, more testing is needed.

Version 1.0.3 pushed, it fixes an issue where it wasn’t working in the mobile app.

Fixed a few bugs, now showing temperature history for grouped and single thermostats:

Just discovered that you’ posted some updates, sorry.
Didn’t get a notification as I was ‘Tracking’ not ‘Watching’ the thread.

I just installed V1.0.3 - will feed back ASAP :+1:

Oops - doesn’t load:
Component doesn’t load (V1.0.3) · Issue #1 · kneave/climate-scheduler

Let me know if you need any more info.

No worries, I’m posting them in general rather than for you specifically so if you don’t respond then all good. :slight_smile:

The build variable was something I was using in testing and removed, the file was still present for me so didn’t throw an error. Should now be resolved with v1.1.0 that I’ve just released.

Installed fine now and I started trying it out but ran into a few issues:

Some of the selections are not very ‘sticky’, e.g.

  1. If I set the HVAC Mode of a node to ‘Heat’, then select another node and come back to the 1st node, it shows HVAC Mode ‘Off’ again.
  2. If I switch off ‘Enabled’ for a climate entity, go to another climate entity and come back to the 1st one it’s enabled again. This means that the Climate Scheduler will take over my climate control no matter what I say, unless I ‘Ignore’ the climate entity - and then it needs a screen refresh to move it to the bottom ‘Ignored’ section again.

Other observances:

  1. I need to double-tap on the graph to add a new setpoint (instead of single-tapping as the instructions seem to indicate)
  2. Before I add a new node, the orange box - see below - should show the time and the temperature I’m about to select, not the actual temperature at that point in time.

Thanks for the feedback, adding the historic data has confused things more than a little for sure, I’ve been changing things quicker than I’ve been updating the instructions too for sure…

I’ll have a look at these as they’ve been on my list to fix too, with someone else hitting these issues it’s easier to convince myself it’s worth fixing!

I’ve added a settings pane where you can switch modes for the tooltips, between historic values and what’s currently under the mouse pointer. If in historic mode you should still see pointer values while dragging.

I’ve also hopefully fixed a bunch of issues with HVAC and similar settings, let me know if you have any issues with those.

I’ll give it another try :slight_smile:

1 Like

A lot of changes and because we haven’t had a weekend yet hasn’t been fully tested, but full 7 day scheduling is available!

Also added a big quality of life update in the shape of copy/paste for the schedules. You should be able to copy an existing one to newly created days to speed things up.

v1.3.0 has been released on github and should be available as an update in HACS too.

v1.4.0 released, the new feature is being able to drag a time period around so you can still have a period of the same length of heating/cooling but the start and end times change.

I have been using the scheduler for a few years now but I really like your graph idea and will try it out for sure. Thank you for your contributions!

1 Like

v1.5.0 released, added a custom card so that the integration can be included in tabbed dashboards

I’ve pushed a bugfix release, this improves performance and mitigates a possible security issue too:

Unfortunately, I can’t get it set up.

Here’s the log entry:

Logger: homeassistant.config_entries
Source: config_entries.py:761
First occurred: 13:46:33 (2 occurrences)
Last logged: 13:49:11

Error setting up entry Climate Scheduler for climate_scheduler
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 761, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/climate_scheduler/__init__.py", line 348, in async_setup_entry
    await _async_setup_common(hass)
  File "/config/custom_components/climate_scheduler/__init__.py", line 331, in _async_setup_common
    await async_register_panel(hass)
  File "/config/custom_components/climate_scheduler/__init__.py", line 387, in async_register_panel
    hass.http.register_static_path(
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'HomeAssistantHTTP' object has no attribute 'register_static_path'. Did you mean: 'async_register_static_paths'?

Version 1.5.0 seems to work fine, though.

Correction:
V1.5.0 does not store my schedule :frowning:
I can build it, click to another dashboard and come back and it’s still there.
But when I refresh my browser tab the climat entity has moved from ‘Active’ to ‘Ignored’ and the whole schedule is gone.

The installation issue should be resolved with 1.5.2 at least, no idea how that regression came back in as it was the reason for the 1.5.1 release :person_shrugging:

You’re right about the saving, and I’ve tracked it down (I hope), but I’ve also added a manual save button to remove any doubt.

It looks like the event handler for the auto-save wasn’t being properly applied to the graph, if you click on one node to make it active and then dragged another around it didn’t save. If you dragged the active node, or the line between two nodes, it saved as expected.

v1.5.3 is live, let me know if it fixes it.