An awesome thermostat

This custom component for Home Assistant is an upgrade of my first component “simple thermostat” with addition of trully awesome features.

Why another thermostat implementation ?

For my personnal usage, I needed to add a couple of features and also to update the behavior that I implemented in my previous component “Simple thremostat”. This new component “Awesome thermosts” now manage the awesome use cases :

  • Explicitely define the temperature for presets mode in config file.
  • Unset the preset mode when the temperature is manually defined on a thermostat.
  • Turn off/on a thermostat when a door or windows is opened/closed.
  • Set a temperature when an activity is detected in a room, and another one after no activity has been detected for a defined time.

That’s awesome ! How Can I enjoy this awesome thermostat ?

HACS installation

  1. Install HACS. That way you get updates automatically.
  2. Add this Github repository as custom repository in HACS settings.
  3. search and install “Awesome Thermostat” in HACS and click install.
  4. Modify your configuration.yaml as explain below.
  5. Restart Home Assistant.

Manual installation

  1. Using the tool of choice open the directory (folder) for your HA configuration (where you find configuration.yaml).
  2. If you do not have a custom_components directory (folder) there, you need to create it.
  3. In the custom_components directory (folder) create a new folder called awesome_thermostat.
  4. Download all the files from the custom_components/awesome_thermostat/ directory (folder) in this repository.
  5. Place the files you downloaded in the new directory (folder) you created.
  6. Modify your configuration.yaml as explain below
  7. Restart Home Assistant

Please look the configuration detail in the github page of the project :

15 Likes

This is great. I didn’t have time to open a discussion for the What the Heck month, but I think this (combined with the scheduler) is THE big thing missing from HA right now. Heating and scheduling are one of the main things that everyone needs to do in a smart home environment, but still for these things we have to rely on third party apps, that we all now may fail unexpectedly on next update, and that’s not good for such a core application.
I’ll give it a try, but it still looks like some function are now in the HA vanilla generic thermostat (for instance the multiple pre-sets, that also include the “none” (it still does not have an “eco” mode). I think it’ll be better to stay as close as possible to the HA implementation, for compatibility purpose: as I said in such a core application of the smart home if the add-on unexpectedly fails I need to be able to revert to the “standard” one without effort.

2 Likes

Hi dadge,
I’ve been using your fantastic thermostat for a few weeks and I feel great.

I’d like to suggest what I think is a feature to include.
in the window sensors, I entered the group of my doors and windows, but as soon as I open one of them the thermostat switches off, I would like there to be a delay time (2 or 3 minutes) which allows me to open for a short while without deactivating the heating.

if it was possible to put custom time in thermostat build options, this in my conf:

climate:
  - platform: awesome_thermostat
    name: Riscaldamento
    heater: switch.riscaldamento
    target_sensor: sensor.temperatura_casa
    min_temp: 15
    max_temp: 25
    ac_mode: false
    target_temp: 20.8
    cold_tolerance: 0.3
    hot_tolerance: 0.1
    min_cycle_duration:
      seconds: 5
    keep_alive:
      minutes: 3
    initial_hvac_mode: "heat"
    precision: 0.1
    away_temp: 16
    eco_temp: 18
    sleep_temp: 17
    window_sensor: group.sensori_porta_finestra
1 Like

in what format should i add this to HACS custom repo ? https://github.com/dadge/awesome_thermostat does not work ?

yes, it’s work.
I have integrated awesome thermostat from this repository
If not work try this: GitHub - jmcollin78/awesome_thermostat: An awesome thermostat with preset mode management + windows opening management + activity sensor management

Nope :confused: It looks like repository is broken ?

search in integration category not in in frontend.
I install from dadge repo, but if not work, try to manual installation.

it is not searchable, as repository cannot be added.

Made manual install and modified configuration.yaml. How do i get this into card ?

if you have configured the climate entity, you can use a simple thermostat card, example:

type: thermostat
entity: climate.your_entity

or best

type: custom:simple-thermostat
entity: climate.your_entity
1 Like

Ah yes, now i understand. This isnt new card, but new climate entity configuration to use. Thanks !

1 Like

How would you recommend to use an “Away” mode with Awesome Thermostat based on presence in the house?

I have setup two automations to go to Away preset when the house is empty and to back to… another preset, but if I setup a scheduler to change between a “Home” and “Eco” preset it overrides the “Away” change. Meaning the target temperature changes when the house is empty when I want it to continue in Away mode.

What I feel I need is a way for the scheduler to set the temperature of the preset based on time, then the automations to pick the present based on presence.

I created an input_select that stores the state of the preset in the changes between home and not_home.
this is the code i put in the automation.yaml file:

- id: Schedulazione_termosifoni_off
  alias: Disattiva preset riscaldamento
  description: Spegni preset riscaldamento
  trigger:
  - platform: state
    entity_id:
    - schedule.attiva_riscaldamento
    from: 'on'
    to: 'off'
  condition: []
  action:
  - choose:
    - conditions:
      - condition: template
        value_template: '{{ now().hour >= 20 }}'
      sequence:
      - service: input_select.select_option
        data:
          entity_id: input_select.preset_riscaldamento
          option: sleep
    - conditions:
      - condition: template
        value_template: '{{ now().hour < 20 }}'
      sequence:
      - service: input_select.select_option
        data:
          entity_id: input_select.preset_riscaldamento
          option: eco
  - choose:
    - conditions:
      - condition: state
        entity_id: group.family
        state: home
      - condition: template
        value_template: '{{ is_state(''input_select.preset_riscaldamento'', ''eco'')
          }}'
      sequence:
      - service: climate.set_preset_mode
        target:
          entity_id: climate.riscaldamento
        data:
          preset_mode: eco
    - conditions:
      - condition: state
        entity_id: group.family
        state: home
      - condition: template
        value_template: '{{ is_state(''input_select.preset_riscaldamento'', ''sleep'')
          }}'
      sequence:
      - service: climate.set_preset_mode
        target:
          entity_id: climate.riscaldamento
        data:
          preset_mode: sleep
  mode: single
- id: Schedulazione_termosifoni_on
  alias: Attiva preset riscaldamento
  description: Accendi preset virtuale
  trigger:
  - platform: state
    entity_id:
    - schedule.attiva_riscaldamento
    from: 'off'
    to: 'on'
  condition: []
  action:
  - service: input_select.select_option
    data:
      entity_id: input_select.preset_riscaldamento
      option: home
  - choose:
    - conditions:
      - condition: state
        entity_id: group.family
        state: home
      - condition: template
        value_template: '{{ is_state(''input_select.preset_riscaldamento'', ''home'')  }}'
      sequence:
      - service: climate.set_preset_mode
        target:
          entity_id: climate.riscaldamento
        data:
          preset_mode: none
  mode: single
- id: preset_uscita_casa
  alias: Preset fuori_casa
  description: preset fuori casa
  trigger:
  - platform: state
    entity_id: group.family
    from: home
    to: not_home
  condition: []
  action:
  - choose:
    - conditions:
      - condition: time
        before: '21:00:00'
        after: '06:00:00'
      sequence:
      - service: climate.set_preset_mode
        target:
          entity_id: climate.riscaldamento
        data:
          preset_mode: away
  mode: single
- id: preset_entrata_casa
  alias: Preset in casa
  description: Preset in casa
  trigger:
  - platform: state
    entity_id: group.family_riscaldamento
    from: not_home
    to: home
  condition: []
  action:
  - choose:
    - conditions:
      - condition: template
        value_template: '{{ is_state(''input_select.preset_riscaldamento'', ''home'')
          }}'
      sequence:
      - service: climate.set_preset_mode
        target:
          entity_id: climate.riscaldamento
        data:
          preset_mode: none
    - conditions:
      - condition: template
        value_template: '{{ is_state(''input_select.preset_riscaldamento'', ''sleep'')
          }}'
      sequence:
      - service: climate.set_preset_mode
        target:
          entity_id: climate.riscaldamento
        data:
          preset_mode: sleep
    - conditions:
      - condition: template
        value_template: '{{ is_state(''input_select.preset_riscaldamento'', ''eco'') }}'
      sequence:
      - service: climate.set_preset_mode
        target:
          entity_id: climate.riscaldamento
        data:
          preset_mode: eco
  mode: single



I use this integration in my home assistant, but I have one problem with it. I have five thermostats (simple thermostat card), each for a certain room. In the morning all rooms “call” for the heat because the room temperatures are around 19-20 °C. The problem is that the awesome thermostat integration shuts the heater switch off when the first room gets heated to a desired temperature.
For example, I have living room set to 24 °C and bathroom set to 22 °C. In the morning both rooms call for the heat, but the heating switch gets turned off when bathroom achieves temperature of 22 °C, even though the living room still didn’t achieve the desired temperature of 24 °C.

Is there something I can do about it? It looks to me like a bug, but I didn’t use other thermostat integrations (generic thermostat or better thermostat) so I’m not sure how they behave in situations like this.

24 °C - dont you wear some more clothing in winter?

Hi

I’m kind of a new user of HA, and I just bought a Tado Smart AC Control and wanted to try it with your integration.
I installed awesome_thermostat, the schedular component and card, everything seems to work like a charm but the thermostat is never switching off my AC/heater (in heat mode currently).

The schedular-card and switching temperature between timeslot work fine, but I must have missed something to say “turn it off” when the temperature is reached.

(fake temperature forced by keeping the sensor between my hand ;))
firefox_mJthFAfF4d

Configuration.yml

climate:
  - platform: awesome_thermostat
    name: Salon
    heater: climate.climatisation
    target_sensor: sensor.climatisation_temperature
    eco_temp: 18
    away_temp: 16
    boost_temp: 22
    comfort_temp: 21
    sleep_temp: 20

(sensor.climatisation_temperature is the sensor of tado controller)

Schedule card :

What am I missing ?

Hello, @meepmeep the control is base on mode. I think you choose “heat”, in your scheduler and in that case it just heats :wink:. Try to “set mode” in your time slot instead, and choose the appropriate mode you want.
Tell me if it fix your issue

Edit : actually it’s set preset. And I think that Heat feature was not existing in scheduler when I implemented the awesome thermostat, not sure if how the scheduler suppôts it.

thank you for the quick answer :wink:

Set preset let me only choose between Away and Home (which is a special setting from Tado).
I also notice that I have 2 “heat” icons :sweat_smile:

And “set mode” only offer “auto / Dry / Fan only” (and no temperature is written on the scheme schedule)

image

I think I miss a link between the *_temp parameter and this card …
I should see the “comfort / eco / etc” on preset indeed. Don’t know why they are not showing there …

Got it I think.
I selected the wrong “climate” entity when creating my schedule card.

When I’m choosing the entity create by awesome_thermostat, I can see the preset :

1 Like

I’m still missing something here.

In the schedule card, I see all the preset, but now, nothing is passed to the AC Controller.

Example, 12sec ago it should have been set to “mode_sleep” (20°C). Awesome_thermsotat changed, but not the real themostat (on the left), so no command was send to the AC :

Card configuration :
image

Hello @meepmeep, could you paste the yaml config of your awesome thermostat?

Thanks