A custom Home Assistant integration that provides intelligent 24-hour, weekday/weekend, and 7-day scheduling for climate entities (thermostats, HVAC systems, and heaters) with an intuitive touch-friendly graph interface.
- π± User Friendly Interface - Touch-friendly graph editor works seamlessly on tablets and desktop browsers.
- β° 15-Minute Precision - Schedule temperature changes at 15-minute intervals throughout the day
- π Visual Graph Editor - Interactive SVG graph with draggable nodes, segment dragging, and copy/paste controls for fast schedule reuse
- π Temperature History Overlay - Actual room temperature for the current day is drawn as a secondary line so you can compare target vs. measured
- π Multi-Entity & Group Support - Manage and sync schedules for individual climate entities and pre-defined groups
- π Immediate Apply - Saving a schedule forces the coordinator to rerun so the active period changes without waiting for the next cycle
- πΎ Persistent Storage - Schedules are stored in
.storage/climate_scheduler_dataand survive Home Assistant restarts - βοΈ Advanced Climate Controls - Set HVAC mode, fan mode, swing mode, preset, and enabled state per schedule node
- π‘οΈ Unit Awareness - Automatically uses your Home Assistant temperature unit (Β°C or Β°F)
- π― Fine-Grained Control - Toggle schedules on/off without losing configuration and clear them when you want a fresh start
- π§© UI-Based Setup (Config Flow) - Add via Settings β Devices & Services β Add Integration; YAML is optional and auto-imported if present
- π Multiple Schedule Profiles - Create multiple schedule profiles (e.g., Winter, Summer, Vacation) and switch between them using automations
- π "No Change" Temperature - Set nodes to not change temperature while still modifying HVAC modes, fan settings, or other controls
- π Automation Events - Fire events when nodes activate, enabling custom automations based on schedule changes
- Actions Reference - Complete list of all services/actions for use in automations and scripts
- Automation Events - Fire events when nodes activate for custom automations
- Development Guide - Information for developers and contributors
- Editing the graph on the mobile app doesn't seem to work, as a workaround you can tap on a node and edit using the UI below the graph.
- Sometimes auto-save doesn't function consistently, you may need to refresh the page to see the new values in the graph or to try updating the schedule again.
Note: The frontend UI is now integrated with this component and no longer as a separate card. This makes it considerably easier to install and much easier to develop.
Recommended Method (UI):
- Go to any dashboard
- Click "Edit Dashboard" (three dots β Edit Dashboard)
- Click "Add Card"
- Search for "Climate Scheduler" or use "Custom: Climate Scheduler Card"
- Click to add it
- Optionally set the view to "Panel" mode for a full-page experience
Note: If you encounter issues with the card not appearing, see the Card Troubleshooting Guide.
Quick Setup: For a dedicated dashboard, create a new dashboard and add the Climate Scheduler card with panel mode enabled for the best experience.
Alternative (YAML):
Add the card manually with YAML (Manual card):
type: custom:climate-scheduler-cardFor panel mode in a view:
views:
- title: Scheduler
panel: true
cards:
- type: custom:climate-scheduler-card- Check the climate entities you want to schedule (they move to "Active")
- Click on an entity or group to open the inline schedule editor
- Tap or double-tap lines on the graph to add nodes at desired times
- Drag nodes horizontally/vertically for time and temperature adjustments
- Drag the horizontal segment between two nodes to slide that entire heating/cooling period while keeping the duration fixed
- Use the Copy button to copy the currently visible day's pattern, then Paste it onto another day or entity
- Tap a node to open its settings panel for HVAC/fan/swing/preset options
- Set temperature to null/empty for "no change" - this allows changing modes without modifying the temperature setpoint
- Changes auto-save and immediately trigger the coordinator so active periods update right away
- Use the three-dot menu to refresh entities, enable/disable schedules, or sync groups
- Toggle Enabled to activate/deactivate a schedule without losing configuration
- Use Clear Schedule to remove a schedule entirely (confirmation required)
Check the "No Change" checkbox below the temperature input to modify HVAC settings without changing the current temperature setpoint:
How to Use:
- Tap a node to open its settings panel
- Check the "No Change" checkbox below the temperature field
- The temperature input will become disabled (visible but grayed out)
- Only HVAC mode, fan mode, swing mode, and preset mode changes will be applied when this node activates
Use Cases:
- Turn off at night: Create a 23:00 node, check "No Change", and set
hvac_mode: offto turn off heating without changing the setpoint - Mode switching: Change from heat to cool mode during seasonal transitions without adjusting temperature
- Fan adjustments: Increase fan speed at certain times while maintaining the current temperature
- Preset changes: Switch to eco/away presets during work hours without temperature modifications
When checked, the node will skip temperature changes entirely and only apply the selected mode settings.
Daily scheduler (all days) with draggable nodes and segments.
5/2 mode editor showing separate Weekday and Weekend schedules.
Seven-day individual schedules with per-day editing.
Grouped entities for managing multiple thermostats together.
Schedule editor with copy/paste controls and segment dragging.
This integration supports UI-based setup (config entry). No YAML is required.
- Install the component via HACS
- Reboot Home Assistant
- Open Settings -> Devices & Services -> Integrations, and then click "Add Integration" in the bottom right. Find the listing for "Climate Scheduler" and follow the steps to set up.
- Clear the frontend cache (doing this any earlier will do nothing)
- Finally, add the card to one of your dashboards
- Download the latest release from GitHub
- Copy the
custom_components/climate_schedulerfolder to yourconfig/custom_components/directory - Restart Home Assistant
- Go to Settings β Devices & Services β Add Integration β search for "Climate Scheduler" and add it
- Optional (legacy): Add
climate_scheduler:to yourconfiguration.yaml; it will be auto-imported into a config entry
- Optional (legacy): Add
- Restart Home Assistant again (only if you used YAML)
When you first enable a climate entity, it starts with a simple default:
- 00:00 - 18Β°C (constant temperature)
You can customize this by:
- Tapping the graph to add nodes at different times
- Dragging nodes to change time or temperature
- Tapping nodes to set HVAC/fan/swing/preset modes
- Removing nodes by tapping them and clicking "Delete Node"
- Blue line: Actual room temperature history for the current day
- Orange line: Your scheduled target temperature
- Green dashed line: Current time indicator
- Circles: Schedule nodes (tap to edit, drag to move)
- Horizontal segments: Drag the line between two nodes to shift that time block without changing its duration
- Copy/Paste controls: Copy a day's configuration and paste it onto another day or thermostat for instant duplication
- Home Assistant Core 2024.1.0 or later
- At least one climate entity configured in Home Assistant
For issues, feature requests, or questions:
MIT License - see LICENSE file for details
This project was developed with the assistance of AI language models, specifically Claude (Anthropic) through the GitHub Copilot Chat interface in Visual Studio Code. The AI assisted with:
- Architecture design and implementation
- Code generation for both backend (Python) and frontend (JavaScript/HTML/CSS)
- Integration with Home Assistant APIs and WebSocket communication
- SVG graph interaction and touch-friendly interface design
- Documentation and development workflows
The following resources were consulted during development:
Home Assistant Development:
- Home Assistant Developer Documentation
- Home Assistant Architecture
- Creating a Custom Integration
- Frontend Development
Home Assistant APIs:
Web Technologies:
Python Libraries:
- Home Assistant Core framework and utilities
- aiohttp for async HTTP operations
- JSON storage via Home Assistant Store
While AI models provided significant assistance in code generation and problem-solving, this project is provided "as-is" without warranty of any kind. The code has been developed and tested on a best-effort basis. Users should review the code and test thoroughly in their own environments before relying on it for critical heating/cooling control. Use at your own risk.

