Adding 'heat for 30 mins / 60 mins / 90 mins' buttons to heating controls

Hi there

I’ve recently started exploring Home Assistant. I’m slowly getting there, but the learning curve is steep!

I have managed to set up a custom generic_thermostat which controls the Tado TRV in my living room. I’ve always had issues with the Tado thermostat being very inaccurate once the radiator heats up, so have set up the custom thermostat so it uses a separate Sonoff sensor instead, using the following YAML code:

climate:
  - platform: generic_thermostat
    name: Living Room Custom
    heater: switch.tado_living_room_custom
    target_sensor: sensor.sonoff_living_room_temperature
    keep_alive:
      minutes: 30
    precision: 0.5

switch:
  - platform: template
    switches:
      tado_living_room_custom:
        friendly_name: Tado Living Room
        turn_on:
          service: tado.set_climate_timer
          data:
            entity_id: climate.living_room
            temperature: 25
        turn_off:
          service: tado.set_climate_timer
          data:
            entity_id: climate.living_room
            temperature: 5

This works great and I can use the new climate entity to accurately control the temperature. I’ve set up a card I like using mushroom-climate-card which allows me to set the temperature and toggle it on and off:

type: custom:mushroom-climate-card
entity: climate.living_room_custom
show_temperature_control: true
icon: mdi:radiator
fill_container: false
primary_info: name
secondary_info: state
layout: horizontal
hold_action:
  action: none

However, what I’d really like is buttons that switch it on for a defined periods of time, e.g. 30 / 60 / 90 minutes. So I set the temperature then hit the corresponding button. (Then I’d love to have a countdown which shows how much is left on the timer before it goes off again, but I figure once I’ve got the button(s) working I can us the Timer Bar Card add on which is in HACS to do that).

I’ve tried a few different things, but don’t feel like I’m getting close.

I’d be really appreciative of any help. Either pointing me in the direct of an existing blueprint which will do what I need, or helping me with a bit of custom code.

Thanks all!