Cant´t get temperature item to work in Google Assistant

Hi guys,

i am struggeling to get some items working properly with google assistant.
I.E. i have a simple number:temperature Item, which shows the temperature in the living room.
Via metadata i gave it the corresponding Google Assistant Class: TemperatureSensor

value: TemperatureSensor
config: {}

The result is, i can see the itemname in google home but it shows no value. When i ask the assistant “whats the temperature in the living room” it tells me 22.4°C. So the value gets sent to google.
Why can´t i see it?

Thank you for your help :wink:

I don’t think Google Home will show a stand alone sensor like that in the app. It requires it to be a part of a thermostat before it will render it. This is a Google limitation, not something we have control over. Note that the same appears to be true for humidity sensors as well.

Hi rlkoshak and thank you for your help.
As far as i understand the google assistant documentation, it should be possible to “build” a thermostat (in a group?!). Honestly, i dont´t understand, how to do it.

I have multiple Items for roomtempratures. One for ambient temperature, one for setting the desired temperature and one that shows the desired temperature. Can i somehow combine these into a thermostat?

TY :wink:

There’s a whole section in the docs. The important parts are:

Group as Thermostat with the following optional members: Number as thermostatTemperatureAmbient , Number as thermostatTemperatureSetpoint , Number as thermostatTemperatureSetpointLow , Number as thermostatTemperatureSetpointHigh , Number as thermostatHumidityAmbient , String or Number as thermostatMode

So you need to create a Group and add ‘Thermostat’ as the ga metadata. Then you must add as members to this Group the Items that represent the measured temperature (Number Item with ga=thermostatTemperatureAmbient, another Item that represents the temperature setpoint (Number Item with ga=thermostatTemperatureSetpoint, and so on.

Pay attention to this warning:

If your thermostat does not have a mode, you should create one and manually assign a value (e.g. heat, cool, on, etc.) to have proper functionality.

Each thermostat can have only one ambient temperature and one setpoint. It seems pretty odd to have two separate Items to handle the setpoint. GA only supports having the one.

@rlkoshak

Cool, i managed to get it working partially. Now i can see the ambient temperature in the google App. Setting a desired temperature does not work. My thermostat does not have modes. It only recieves values from 16° to 30°C in 0.1 steps that i send via a rule to the device.
Am I right, that the google App does not support this? So i could only create different values for heat, cool …?

Jea, you are right. I only use this for basically a readback from the heater-device. So i can be sure, that my sent values are actually set in the device.

According to the docs you must have a mode Item for the thermostat to be recognized. Whether or not you use it doesn’t matter. The Item just has to be there with the right metadata and as a member of the Group. See the line I quoted from above.

You should disable autoupdate on the one Item so that when you command the Item it doesn’t update it’s state automatically. Then if it’s linked to the same input channel the Item won’t change state until the device reports the new state.

Jea, you are absolutely right. This is a whole other topic, but i appreciate your help!
The device, which regulates my heaters (in the floor), can only recieve XML-posts. Udo_Hartmann helped me to write a rule for sending these posts. However, i didn´t manage to get the reports working, which (i think!) come back with another XML Post (me noob ;). But jea… I can set values and see immediately if it works. Maybe i could find another workaround for that later.

I will try again tomorrow!
Thank you so much

Here are the default modes available in Google Assistant.

Technically you only need heat, but I’m not sure what Google Assistant would think of that. So you may need to also include off as an option.

You would leave your thermostat always in heat mode, and then just change the temperature as necessary.

I think that Google only allows 0.5 steps, but I could be wrong about that.

@rpwong
VERY nice, this is working like a charm now :wink:

Thank you!

Hi
Im having a similar issue, cant get my temperature and humidity sensor to display properly.
Would you mind posting your item config please?

@Nuno_Conceicao

Hi Nuno, this is not that intuitive, but when propperly configured, it works like a charm. The trick is, you need to build the Thermostat in a way, that Google Home understands. Even if you dont use all the functions.

You need to create 4 Items for this:

  1. A Group item with Metadate → Google Assistant → Thermostat. In this group you need to set up at a minimum 3 group members:

a. A Number-item which is used as a setpoint. It needs the Metatdata Google Assistant → thermostatTemperatureSetpoint.

b. A String Item which represents the Thermostat Modes (cooling, heating, eco…). It needs the Metadata Google Assistant → thermostat Modes

c. A Number Item that shows the current temperature. It needs the Metadata Google Assistant → thermostatTemperatureAmbient.

Now, in your Google Home App there should appear a new item with the name of the group you set up. Open it and set the thermostat mode to “heating”. After this everything should work. You can alter the desired temperature with the slider and see the current temp. You can also ask the Assistant to change it and so on.

Have fun, merry Christmas! :wink:

Hi Sebastian,
Thank you for your compreensive explaination.
It seems to me that the issue I have is not with openhab but with Google Home app in IOs, if I access through Android I see both Temperature and Humidity, but on IOs I only see the temperature.
Regarding the setup here is what I have after your explaination, but the result is the same without the setpoint and the mode items:

Group MasterSensor “MasterRoom Ambient Sensor” (MasterBedroom) [“Sensor”] {alexa=“Thermostat”, ga=“Thermostat”}
Number MasterSensorSetP (MasterSensor) {ga=“thermostatTemperatureSetpoint”}
Number MasterSensorMode (MasterSensor) {ga=“thermostatMode”}
Number Shelly_Master_Humdity (MasterSensor, Humidity) [“Humidity”, “Measurement”] {channel=“shelly:shelly1:483fda822ced:sensors#humidity”,alexa=“CurrentHumidity”, ga=“thermostatHumidityAmbient”}
Number Shelly_Master_Temperature (MasterSensor, Temperature) [“Temperature”, “Measurement”]{channel=“shelly:shelly1:483fda822ced:sensors#temperature1”,alexa=“CurrentTemperature”, ga=“thermostatTemperatureAmbient”}

Thank you and Merry Xmas

@Nuno_Conceicao

as far as i can tell, you used a number item for MasterSensorMode (MasterSensor) {ga=“thermostatMode”}. This is definately wrong. The item for the Mode must be able to hold the words “eco”, “heating”, “cooling”… This can only be achieved with a string item, not a number item, which holds numers.

Change this item into string. After this you should see an option for the modes in google home. Set it to heating and see what happens. My thermostats do not show anything, unless i set a correct mode for it.

Also, just to be sure: All items are members of Group MasterSensor?

TemperatorSensor is not working because its missing required temperature range attributes. I created the below issue for it.

It works with ecobee remote sensors: