More advanced thermostat function?

I am setting up my heating, (sever electrical ovens and underfloor heating i can turn on and off, a heat pump, and temperature sensors around the house). It seems like the Generic Thermostat is the platform you are supposed to use: https://www.home-assistant.io/components/climate.generic_thermostat/

But I am wondering if it is any options with some more advanced options, like priority (only use some heating sources if heat needs to increase fast), scheduling during the day, based on season and so on. Some kind of “projected temp increase per hour”-setting and so on. Are there other options or does this have to be programmed “manually”? Does anybody know of any examples if so?

There might be some rudimentary setback support in “away_mode” in the generic thermostat. However beyond basic thermostat operation the rest of the automation will have to be written by hand.

In my setup with a zwave based thermostat. I use input_number sliders to set “Away” “Home” “Sleep” temperatures in the UI. My presence detection depart/arrive and sleep/wake automations will set the thermostat to the appropriate temperature inputs in the slider.

configuration.yaml

input_number:
  furnace_home_temp:
    name: Heat Home
    min: 60
    max: 72
    step: 1
    unit_of_measurement: °F
    icon: mdi:home
  furnace_away_temp:
    name: Heat Away
    min: 60
    max: 72
    step: 1
    unit_of_measurement: °F
    icon: mdi:car
  furnace_sleep_temp:
    name: Heat Sleep
    min: 60
    max: 72
    step: 1
    unit_of_measurement: °F
    icon: mdi:sleep

Example in automation.yaml

- alias: Thermostat Set Sleep Temp 
  trigger:
    - platform: state
      entity_id: switch.sound_conditioner_switch
      to: 'on'
    - platform: webhook
      webhook_id: thermostat_sleep
  action:
    - service: climate.set_temperature
      data_template:
        entity_id: climate.linear_heat
        temperature: "{{ states('input_number.furnace_sleep_temp') |int }}"

I imagine you would need to somehow look at checking the current temperature against the set temperature and if the value is greater than X then crank all the heaters up, otherwise just under floor?

Not being versed in templates and hard coded automations I’m not much help other than suggesting to someone who knows better that it would need to do something like the following:
IF (Set Temp-Current Temp) > 5 THEN All heaters on ELSE Underfloor heating on.

But how that integrates with any of the other automations you have suggested is anyone’s guess.
There isn’t a projected degrees per hour value, the above is a quick and dirty way of seeing how cold the house is compared to what it should be, which could be the same thing.