Climate Scheduler for Home Assistant
!Integration Usage
" style="max-width:100%;">
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.
Features
- 📱 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
Documentation
- 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
- AI Workflow - Fast startup context order and source-of-truth edit rules for Copilot sessions
Known Issues
- 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.
Frontend Card
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.
Usage
Adding to a Dashboard
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-card
For panel mode in a view:
views:
- title: Scheduler
panel: true
cards:
- type: custom:climate-scheduler-card
Using the Scheduler
- 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
- 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)
"No Change" Temperature Feature
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
- 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
Screenshots
!Daily Scheduler _Daily scheduler (all days) with draggable nodes and segments._
!5/2 Editor _5/2 mode editor showing separate Weekday and Weekend schedules._
!7-Day Scheduler _Seven-day individual schedules with per-day editing._
!Grouped Entities _Grouped entities for managing multiple thermostats together._
!Schedule Editor _Schedule editor with copy/paste controls and segment dragging._
Installation
This integration supports UI-based setup (config entry). No YAML is required.
HACS (Recommended)
- 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
Manual Installation
- 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
climate_scheduler: to your configuration.yaml; it will be auto-imported into a config entry
- Restart Home Assistant again (only if you used YAML)
Default Schedule
When you first enable a climate entity, it starts with a simple default:
- 00:00 - 18°C (constant temperature)
- 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"
Graph Features
- 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
Requirements
- Home Assistant Core 2024.1.0 or later
- At least one climate entity configured in Home Assistant
Support
For issues, feature requests, or questions:
License
MIT License - see LICENSE file for details
Development & AI Attribution
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
Key References & Resources
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 Core framework and utilities
- aiohttp for async HTTP operations
- JSON storage via Home Assistant Store
Disclaimer
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.