Google Home: Issues with Thermostat in Auto mode

Hi,

I integrated google home via self hosting and exposed my Homematic thermostats to Google Home. They are appearing in Google Assistant as Thermostats. The Thermostats are set into Automatic mode. Unfortunately I cannot change the temperature in the Google Home App and if I ask google for the current abient temperature I just get the answer: “The Thermostat is set to automatic” without any temperature readings.

If I set the thermostat to “heating” everything is working as expected. Is there something wrong in my configuration?

Version core-2021.5.5
Installationstyp Home Assistant OS

Google Assistant config:

google_assistant:
  project_id: <id>
  service_account: !include GoogleServiceAccount.json
  report_state: true
  expose_by_default: false
  exposed_domains:
    - climate
    - sensor
    - vacuum
    - fan
  entity_config:
    climate.leq0781296:
      name: "Thermostat Badezimmer"
      room: "Badezimmer"

climate.leq0781296 state:

hvac_modes:
  - auto
  - heat
  - 'off'
min_temp: 4.5
max_temp: 30.5
target_temp_step: 0.5
preset_modes:
  - boost
  - comfort
  - eco
current_temperature: 22.2
temperature: 19
preset_mode: none
id: LEQ0781296
interface: rf
battery: 2.6
rssi_peer: -63
valve: 0
mode: Auto
friendly_name: Temperatur Badezimmer
supported_features: 17

I have exactly the same issue. Did you find any solution?

Hello. did you found any solution for that problem?

Since it is already bumped, I would like to find out too. Before I used Google Home itself to expose my Netatmo thermostat. It then replied with the current and set temperatures when asked. Now it just states it is set to Automatic. No current and set temperatures.

Also looking for a solution. Ob all other smart Home systems it was working fine.

It might be related to a difference in philosophy regarding what “auto” mode means for a thermostat between Google Home and Home Assistant.
Google Home’s docs suggest that “auto” is “Automatic mode with temperature set by a schedule or learned behavior”. Hence there’s no possibility to set the desired temperature in auto mode. Instead, Home Assistant’s “heat” mode (at least for my thermostats) means “open the valve entirely”.

Maybe it could be resolved by reporting the “auto” mode as Google Home’s “heating” mode which allows setting the temperature but such mapping would mess up other devices that actually have “fully automatic mode”.

I’m also not sure how the google_assistant integration is reporting the current temperature setpoint.
See the source code- here the HVAC mode is “auto” indeed, a thermostat doesn’t support temperature range, so we end up reporting only thermostatTemperatureSetpointHigh and thermostatTemperatureSetpointLow. But if I change the mode to “heat”, I’m able to set the temperature in Google Home, however, Home Assistant ignores setting the temperature in “heat” mode (that’s true also for Lovelace frontend- set the thermostat to “heat”, change temperature, change back to “auto”- the new temperature is not respected).

As a bonus, you should be able to set the temperature from Google Assistant voice command. It’s working for me as it allows setting thermostatTemperatureSetpoint even in “auto” mode.

If you’re using HACS, you can install this repo: hass-template-climate to create a “google” version of a thermostat.
I remapped the dry mode to be homeassistant’s heat as it doesn’t need to set the target temperature.

climate:
  - platform: climate_template
    name: thermostat_google
    modes:
      - "heat"
      - "dry"
      - "off"
    min_temp: 5
    max_temp: 35
    temp_step: 0.5
    current_temperature_template: "{{ state_attr('climate.thermostat_real', 'current_temperature') }}"
    target_temperature_template: "{{ state_attr('climate.thermostat_real', 'temperature') }}"
    hvac_mode_template: "{{ 'heat' if states('climate.thermostat_real') == 'auto' else 'dry' if states('climate.thermostat_real') == 'heat' else 'off' }}"
    set_temperature:
      - service: climate.set_temperature
        data:
          entity_id: "climate.thermostat_real"
          temperature: "{{ temperature }}"
    set_hvac_mode:
      - service: climate.set_hvac_mode
        data:
          entity_id: "climate.thermostat_real"
          hvac_mode: "{{ 'auto' if hvac_mode == 'heat' else 'heat' if hvac_mode == 'dry' else 'off' }}"

This way, setting the mode to “Drying” in Google Home turns the thermostat to 100% heating in reality, and “Heating” mode is just “Auto” in Homeassistant.

1 Like

@shorti1996 That’s an interesting thought!

The thing is though, when I look at the options for the modes in my system, I see off, heat, auto in HA, but off, heat, other in Google Home. So the HA auto mode is not recognized?