# Smart Home TemperatureControl Trait Schema

`action.devices.traits.TemperatureControl` - Trait for devices (other than thermostats) that support controlling temperature, either within or around the device.

This differs from the [TemperatureSetting](https://developers.home.google.com/cloud-to-cloud/traits/temperaturesetting) trait,
which is specifically for thermostat-style controls. The **TemperatureSetting** trait represents ambient (room/outdoor) temperature and should not be used for controlling the temperature of a specific device. In order to control the temperature of a specific device, you must use the **TemperatureControl** trait.

> [!NOTE]
> **Note:** All conversions between Fahrenheit and Celsius will be rounded to the nearest degree or half-degree respectively, in input/output to the user. All temperatures are transmitted in Celsius.

## Device ATTRIBUTES

Devices with this trait may report the following
attributes as part of the [`SYNC`](https://developers.home.google.com/cloud-to-cloud/intents/sync) operation. To learn
more about handling `SYNC` intents, see
[Intent fulfillment](https://developers.home.google.com/cloud-to-cloud/integration/sync).

| Attributes | Type | Description |
|---|---|---|
| `temperatureRange` | *Object* | **Required.** Supported temperature range of the device. |
| `minThresholdCelsius` | *Number* | **Required.** Minimum temperature for the range, in degrees Celsius. |
| `maxThresholdCelsius` | *Number* | **Required.** Maximum temperature for the range, in degrees Celsius. |
| `temperatureStepCelsius` | *Number* | Specifies the relative temperature step. This is the minimum adjustment interval the device supports. If unspecified, relative steps are calculated as a percentage of `temperatureRange`. |
| `temperatureUnitForUX` | *String* | **Required.** Temperature unit used in responses to the user. Supported values: `C` `F` |
| `commandOnlyTemperatureControl` | *Boolean* | (Default: `false`) Indicates if the device supports using one-way (true) or two-way (false) communication. Set this attribute to true if the device cannot respond to a QUERY intent or Report State for this trait. |
| `queryOnlyTemperatureControl` | *Boolean* | (Default: `false`) Required if the device supports query-only execution. This attribute indicates if the device can only be queried for state information, and cannot be controlled. |

#### Examples

*Device supporting control between 150 and 500 degrees Fahrenheit, in 5 degree increments.*

```
{
  "temperatureRange": {
    "minThresholdCelsius": 65.5,
    "maxThresholdCelsius": 260
  },
  "temperatureStepCelsius": 2.778,
  "temperatureUnitForUX": "F"
}
```

## Device STATES

Entities with this trait may report the following
states as part of the [`QUERY`](https://developers.home.google.com/cloud-to-cloud/intents/query) operation. To learn
more about handling `QUERY` intents, see
[Intent fulfillment](https://developers.home.google.com/cloud-to-cloud/integration/query-execute).

| States | Type | Description |
|---|---|---|
| `temperatureSetpointCelsius` | *Number* | The current temperature setpoint, in degrees Celsius. Must fall within `temperatureRange`. Required if `queryOnlyTemperatureControl` set to `false` |
| `temperatureAmbientCelsius` | *Number* | The currently observed temperature, in degrees Celsius. Must fall within `temperatureRange`. |

#### Examples

*What temperature is the device set to?*

```
{
  "temperatureSetpointCelsius": 150
}
```

## Device COMMANDS

Devices with this trait may respond to the following
commands as part of the [`EXECUTE`](https://developers.home.google.com/cloud-to-cloud/intents/execute) operation. To learn
more about handling `EXECUTE` intents, see
[Intent fulfillment](https://developers.home.google.com/cloud-to-cloud/integration/query-execute#handle_execute_intents).

### `action.devices.commands.SetTemperature`

Set the temperature to a specific value.

#### Parameters

| Parameters | Type | Description |
|---|---|---|
| `temperature` | *Number* | **Required.** The temperature to set, in degrees Celsius. Must fall within `temperatureRange`. |

#### Examples

*Set the device to 350 degrees Fahrenheit.*

```
{
  "command": "action.devices.commands.SetTemperature",
  "params": {
    "temperature": 176.67
  }
}
```

#### Related errors

An error occurred setting the target temperature.

Supported values:

`alreadyAtMax`
`alreadyAtMin`
`valueOutOfRange`

## Sample utterances

> [!NOTE]
> This is a sample of the utterances supported by this device trait, make sure to also review other [supported languages](https://developers.home.google.com/cloud-to-cloud/traits#supported-languages).

### de-DE

- Erhöhe die Temperatur *des Ofens*
- Stelle die Temperatur *des Ofens* auf *425 Grad*
- Wie warm ist *der Ofen*

### en-US

- I want the temperature of *the oven* higher
- current temperature in *the fridge*
- set *the oven* to *400*

### es-ES

- pon la temperatura del *horno* a *180 grados*
- sube la temperatura del *horno*
- ¿A qué temperatura está *el horno* ?

### fr-FR

- *Le four* est à quelle température ?
- Mets la température du *four* à *180 degrés* .
- augmente la température du *four*

### hi-IN

- *ओवन* का टेम्परेचर कितना है
- *ओवन* का तापमान *425 डिग्री* पर करें

### it-IT

- Alza la temperatura *del forno*
- Qual è la temperatura *del frigo* ?
- metti *il forno* a *200 gradi*

### ja-JP

- *オーブン* の温度は何度
- *オーブン* の温度を *425度* に設定して
- *オーブン* の温度を上げて

### ko-KR

- *오븐* 온도 *180* 도로 맞춰
- *오븐* 온도 몇 도야
- *오븐* 온도 좀 높여 줄래

### nl-NL

- stel *de oven* in op *220 graden*
- verhoog de temperatuur van *de oven*
- wat is de temperatuur van *de oven*

### pt-BR

- Diz-me qual é a temperatura da *sala*
- Qual é a temperatura do *forno* ?
- ajuste a temperatura do *forno* para *180 graus*
- aumenta a temperatura do *forno*
- aumentar a temperatura do *forno*
- define a temperatura do *termostato* nos *22 graus*

### sv-SE

- Vad är det för temperatur i *ugnen* ?
- höj temperaturen i *ugnen*
- sätt *ugnen* på *100 grader*

## Device ERRORS

See the full list of [errors and exceptions](https://developers.home.google.com/cloud-to-cloud/intents/errors-exceptions).