Skip to content

damacus/trv-scheduler-card

Repository files navigation

TRV Heating Scheduler for Home Assistant

A beautiful, Tado-inspired heating scheduler for controlling smart TRVs (Thermostatic Radiator Valves) in Home Assistant. Features a visual timeline interface, per-day scheduling, and easy copy/paste between days.

TRV Scheduler Screenshot

Features

Beautiful Visual Interface

  • Tado-inspired timeline view showing temperature blocks
  • Color-coded temperature visualization
  • Clean, modern dark theme design

📅 Flexible Scheduling

  • Different schedules for each day of the week
  • Copy and paste schedules between days
  • Unlimited time blocks per day
  • Drag and drop time selection

🏠 Multi-Zone Support

  • Manage multiple rooms/zones from one interface
  • Tab-based zone switching
  • Independent schedules per zone

🌡️ Temperature Control

  • Visual temperature sliders
  • Customizable min/max temperatures
  • Default and comfort temperature presets

🔧 Universal Compatibility

  • Works with any climate entity (Matter, Zigbee, Z-Wave, etc.)
  • Tested with Eve Thermostat via Matter
  • Multiple TRVs per zone supported

Installation

Method 1: Manual Installation

  1. Download the files:

    • trv-heating-scheduler-card.js
    • trv-heating-scheduler-card-editor.js
  2. Copy to Home Assistant:

    # Create the www directory if it doesn't exist
    mkdir -p /config/www/community/trv-heating-scheduler/
    
    # Copy the files
    cp trv-heating-scheduler-card.js /config/www/community/trv-heating-scheduler/
    cp trv-heating-scheduler-card-editor.js /config/www/community/trv-heating-scheduler/
  3. Add to Lovelace resources:

    Go to SettingsDashboardsResources (top right menu) → Add Resource

    url: /local/community/trv-heating-scheduler/trv-heating-scheduler-card.js
    type: JavaScript module
  4. Restart Home Assistant

Method 2: HACS Installation (Future)

This card will be submitted to HACS soon

  1. Open HACS
  2. Go to "Frontend"
  3. Search for "TRV Heating Scheduler"
  4. Click Install

Configuration

Basic Configuration

Add the card to your dashboard:

type: custom:trv-heating-scheduler-card
title: Heating Schedule
zones:
  - id: living_room
    name: Living Room
    entities:
      - climate.living_room_trv
  - id: bedroom
    name: Bedroom
    entities:
      - climate.bedroom_trv
default_temperature: 16
comfort_temperature: 19

Advanced Configuration

type: custom:trv-heating-scheduler-card
title: Heating Schedule
zones:
  - id: living_room
    name: Living Room
    entities:
      - climate.living_room_trv
      - climate.living_room_underfloor
  - id: master_bedroom
    name: Master Bedroom
    entities:
      - climate.master_bedroom_trv
  - id: kids_room
    name: Kids Room
    entities:
      - climate.kids_room_trv_1
      - climate.kids_room_trv_2
default_temperature: 16      # Temperature when away/sleeping
comfort_temperature: 19      # Comfortable daytime temperature
min_temperature: 5          # Minimum settable temperature
max_temperature: 30         # Maximum settable temperature
time_step: 30              # Time picker step in minutes

Configuration Options

Option Type Default Description
title string 'Heating Schedule' Card title
zones list required List of zones/rooms to control
default_temperature number 16 Default/away temperature (°C)
comfort_temperature number 19 Comfort temperature (°C)
min_temperature number 5 Minimum temperature (°C)
max_temperature number 30 Maximum temperature (°C)
time_step number 30 Time picker increment (minutes)

Zone Configuration

Each zone requires:

Option Type Description
id string Unique identifier (lowercase, no spaces)
name string Display name
entities list Climate entity IDs to control

Usage

Creating a Schedule

  1. Select a Zone: Click the zone tab at the top
  2. Select a Day: Click the day button
  3. Add Time Blocks: Click "Add time block"
  4. Set Times: Use the time pickers to set start/end times
  5. Set Temperature: Use the slider to set the desired temperature
  6. Copy/Paste: Use copy/paste buttons to duplicate schedules to other days

Time Block Management

  • Edit Time: Click on the time inputs to change start/end times
  • Change Temperature: Drag the slider or click to set temperature
  • Delete Block: Click the × button to remove a time block
  • Visual Timeline: View all blocks at once in the timeline at the top

Copy & Paste Between Days

  1. Select the day you want to copy
  2. Click the "Copy" button
  3. Select the destination day
  4. Click "Paste"
  5. The schedule is now duplicated!

Automatic Schedule Application

The card displays and edits schedules, but you need to set up automation to apply them. Choose one method:

Option 1: AppDaemon (Recommended)

Most sophisticated option with automatic schedule application.

  1. Install AppDaemon (if not already installed)
  2. Copy trv_scheduler.py to /config/appdaemon/apps/
  3. Configure in apps.yaml:
trv_scheduler:
  module: trv_scheduler
  class: TRVHeatingScheduler
  zones:
    - name: "Living Room"
      id: "living_room"
      entities:
        - climate.living_room_trv
    - name: "Bedroom"
      id: "bedroom"
      entities:
        - climate.bedroom_trv
  default_temperature: 16
  comfort_temperature: 19
  check_interval: 60  # Check every 60 seconds
  1. Restart AppDaemon

The app will automatically:

  • Apply schedules based on current time
  • Update TRVs when schedules change
  • Handle multiple zones
  • Log all temperature changes

Option 2: Home Assistant Automations

Use built-in automations (simpler but less flexible).

  1. Create input_text helpers for each zone/day combination:

    input_text:
      living_room_schedule_monday:
        name: "Living Room Schedule - Monday"
        max: 255
  2. Create automation to check and apply schedules every minute

  3. See automations.yaml for a complete example

Option 3: Node-RED

If you use Node-RED, you can create a flow that:

  1. Reads schedule data from localStorage via browser
  2. Applies schedules based on time
  3. Provides visual flow debugging

Troubleshooting

Card doesn't appear

  • Check that the JavaScript file is loaded in Resources
  • Check browser console for errors (F12)
  • Verify the file path is correct
  • Clear browser cache (Ctrl+Shift+R)

Schedules not applying

  • Check that you've set up the automation/AppDaemon app
  • Verify climate entity IDs are correct
  • Check Home Assistant logs for errors
  • Ensure TRVs are responsive and connected

Can't edit schedules

  • Check browser localStorage is enabled
  • Verify you're not in a private/incognito window
  • Try refreshing the page

Temperature not changing

  • Verify climate entities are working (test manually)
  • Check entity IDs match exactly
  • Ensure TRVs support temperature setting
  • Check for automations that might override settings

Time blocks overlap

  • The card allows overlaps - last applied wins
  • Consider deleting overlapping blocks
  • Use the timeline view to visualize conflicts

Tips & Best Practices

Energy Efficiency

  • Use 16°C for nighttime/away periods
  • Set 19-20°C for comfort periods
  • Consider setback periods when everyone is out
  • Use lower temperatures for bedrooms (better sleep)

Schedule Design

  • Start with a basic daily pattern, then adjust
  • Use copy/paste to quickly set up weekdays
  • Keep weekends separate for lie-ins
  • Consider your family's routine

Multi-Zone Strategies

  • Living areas: warm during evening
  • Bedrooms: warm before bedtime, cool overnight
  • Bathroom: warm in mornings
  • Home office: warm during work hours

Matter TRV Specific

If using Matter TRVs (like Eve Thermostat):

  • Ensure Thread network is stable
  • Keep border routers close to TRVs
  • Update firmware regularly
  • Use local control for faster response

Development

Building from Source

# Clone the repository
git clone https://github.com/yourusername/trv-heating-scheduler

# Make changes to the JavaScript files

# Test in Home Assistant
cp *.js /config/www/community/trv-heating-scheduler/

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

Data Storage

The card stores schedules in browser localStorage by default. This means:

Pros:

  • Instant updates
  • No Home Assistant storage needed
  • Works offline

Cons:

  • Not synced across devices
  • Lost if browser data is cleared
  • Not accessible to automations

Future feature: Option to store in Home Assistant input_text entities for multi-device sync.

Roadmap

  • HACS integration
  • Store schedules in Home Assistant entities
  • Multi-device sync
  • Temperature profiles (Home/Away/Sleep)
  • Holiday mode
  • Boost function
  • Week view with all days visible
  • Import/Export schedules
  • Sunrise/sunset relative times
  • Weather-based adjustments

Support

License

MIT License - see LICENSE file for details

Credits

  • Inspired by Tado's elegant scheduling interface
  • Built for the Home Assistant community
  • With love for smart home automation ❤️

Screenshots

Main Interface

Beautiful timeline view with temperature blocks

Multiple Zones

Tab-based zone switching

Mobile Responsive

Works perfectly on phones and tablets


Made with ☕ and 🏠 automation

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors