> ## Documentation Index
> Fetch the complete documentation index at: https://www.seam.co/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Set Points

> Learn about heating and cooling set point temperatures that you can configure for thermostats.

A thermostat set point is a target temperature. The heating set point tells the system when heat is needed; the cooling set point tells it when cooling is needed. In heat-cool mode, the two values define a temperature range.

Set points are different from measured room temperature. Read requested/current settings in `properties.current_climate_setting`; read the sensor temperature in `properties.temperature_celsius` or `properties.temperature_fahrenheit`.

Send a set point in either Celsius or Fahrenheit using the matching `_celsius` or `_fahrenheit` parameter. Do not send both units for the same set point or label a Celsius value as Fahrenheit. A temperature difference also has units: a 5 °F difference is about 2.78 °C, not -15 °C.

***

## Heating Set Point

For heating, the heating set point (`heating_set_point_fahrenheit` or `heating_set_point_celsius`) is the target temperature that the thermostat turns on the furnace or heating system to reach. Once the space reaches the configured temperature, the thermostat turns off the heating system, until the temperature of the space drops below the set point again.

<img src="https://mintcdn.com/seam/GnR-zBVMHFed214Q/images/heating-set-point.png?fit=max&auto=format&n=GnR-zBVMHFed214Q&q=85&s=2686302baf1587705a94f860dd9883c8" alt="The heating set point is the target temperature that the thermostat turns on the furnace or heating system to reach." style={{width: "550px", height: "auto"}} width="1226" height="300" data-path="images/heating-set-point.png" />

***

## Cooling Set Point

For cooling, the cooling set point (`cooling_set_point_fahrenheit` or `cooling_set_point_celsius`) is the target temperature that the thermostat turns on the air conditioner or cooling system to reach. Once that space reaches the configured temperature, the thermostat turns off the cooling system, until the temperature of the space rises above the set point again.

<img src="https://mintcdn.com/seam/GnR-zBVMHFed214Q/images/cooling-set-point.png?fit=max&auto=format&n=GnR-zBVMHFed214Q&q=85&s=ae4ed00b978433455a39b2ea06ae666e" alt="The cooling set point is the target temperature that the thermostat turns on the air conditioner or cooling system to reach." style={{width: "550px", height: "auto"}} width="1120" height="284" data-path="images/cooling-set-point.png" />

***

## Heat-Cool Set Points

In heat-cool mode, the thermostat uses the heating set point (`heating_set_point_fahrenheit` or `heating_set_point_celsius`) as the target temperature for turning on the heating system and the cooling set point (`cooling_set_point_fahrenheit` or `cooling_set_point_celsius`) as the target temperature for turning on the cooling system. The thermostat activates heating or cooling as needed to keep the temperature of the space between these two configured set points for maximum comfort.

Note that there may be a required minimum temperature difference between the cooling and heating set points. For more information, see [Minimum Heating Cooling Temperature Delta](#minimum-heating-cooling-temperature-delta).

<img src="https://mintcdn.com/seam/jFDJm5w7cskrO1tW/images/set-points.png?fit=max&auto=format&n=jFDJm5w7cskrO1tW&q=85&s=6ad6ef6d845e6b1917f8056aefbba75d" alt="In heat-cool mode, the thermostat uses the heating and cooling set points as the target temperatures for turning on the heating and cooling systems, respectively." style={{width: "550px", height: "auto"}} width="1232" height="476" data-path="images/set-points.png" />

***

## Set Point Constraints

Some models of thermostats have specific requirements and constraints related to configuring set points. You can fetch the requirements by issuing a [Get Device](/docs/api/devices/get) or [List Thermostats](/docs/api/thermostats/list) request.&#x20;

The following example shows a set of thermostat set point requirements:

```json theme={"dark"}
{
  "thermostat": {
    "device_id": "518f692b-f865-4590-8c3e-3849e9984c75",
    "device_type": "ecobee_thermostat",
    "capabilities_supported": [
      "thermostat"
    ],
    "properties": {
      ...
      "max_cooling_set_point_celsius": 33.333333333333336,
      "max_heating_set_point_celsius": 26.11111111111111,
      "min_cooling_set_point_celsius": 18.333333333333336,
      "min_heating_set_point_celsius": 7.222222222222222,
      "min_heating_cooling_delta_celsius": 2.7777777777777777,
      "min_heating_set_point_fahrenheit": 45,
      "max_heating_set_point_fahrenheit": 79,
      "min_cooling_set_point_fahrenheit": 65,
      "max_cooling_set_point_fahrenheit": 92,
      "min_heating_cooling_delta_fahrenheit": 5,
      ...
    },
    ...
  },
  ...
}
```

***

### Set Point Temperature Range

The thermostat settings have restrictions on the range of set point temperatures that users can choose for both cooling and heating. For cooling, the `min_cooling_set_point_*` and `max_cooling_set_point_*` properties indicate the permissible temperature range. For heating, the `min_heating_set_point_*` and `max_heating_set_point_*` properties indicate the permissible temperature range. These properties are available in both Celsius and Fahrenheit, as the suffix indicates. See these parameters to ensure that your selected set points fall within the defined operational limits of the thermostat.

The following example shows the set point temperature range, including both heating and cooling:

```json theme={"dark"}
"max_cooling_set_point_celsius": 33.333333333333336,
"min_cooling_set_point_celsius": 18.333333333333336,
"max_heating_set_point_celsius": 26.11111111111111,
"min_heating_set_point_celsius": 7.222222222222222,
"min_cooling_set_point_fahrenheit": 65,
"max_cooling_set_point_fahrenheit": 92,
"min_heating_set_point_fahrenheit": 45,
"max_heating_set_point_fahrenheit": 79
```

***

### Minimum Heating Cooling Temperature Delta

The `min_heating_cooling_delta_celsius` and `min_heating_cooling_delta_fahrenheit` properties denote the minimum temperature difference—that is, delta—in degrees between the cooling and heating set points when in heat-cool (auto) mode. You must configure the cooling set point to be higher than the heating set point by at least the specified delta. This setting helps to prevent the thermostat from rapidly switching between heating and cooling modes, thereby avoiding [short cycling](https://www.thespruce.com/what-it-means-when-furnace-is-short-cycling-5208093).

The following example shows a configured minimum delta between the cooling and heating set points:

```json theme={"dark"}
"min_heating_cooling_delta_celsius": 2.7777777777777777,
"min_heating_cooling_delta_fahrenheit": 5
```

## Choose a supported mode

| Desired behavior | Capability to check  | Values to provide                                                                   |
| ---------------- | -------------------- | ----------------------------------------------------------------------------------- |
| Heat to a target | `can_hvac_heat`      | A heating set point within the returned heating range.                              |
| Cool to a target | `can_hvac_cool`      | A cooling set point within the returned cooling range.                              |
| Maintain a range | `can_hvac_heat_cool` | Both set points, with cooling above heating by at least the returned minimum delta. |

Check `can_hvac_heat_cool` on the selected device before choosing heat-cool mode. If a constraint or current set point is absent, do not substitute zero or assume unrestricted operation.

This read-only example checks the device's current settings and constraints before you choose a command.

```javascript JavaScript theme={"dark"}
import { Seam } from 'seam'

const seam = new Seam()
const thermostat = await seam.devices.get({ device_id: process.env.THERMOSTAT_DEVICE_ID })
console.log({
  canHeat: thermostat.can_hvac_heat,
  canCool: thermostat.can_hvac_cool,
  canHeatCool: thermostat.can_hvac_heat_cool,
  current: thermostat.properties.current_climate_setting,
  minimumHeating: thermostat.properties.min_heating_set_point_celsius,
  maximumHeating: thermostat.properties.max_heating_set_point_celsius,
  minimumCooling: thermostat.properties.min_cooling_set_point_celsius,
  maximumCooling: thermostat.properties.max_cooling_set_point_celsius,
  minimumDelta: thermostat.properties.min_heating_cooling_delta_celsius,
})
```

After a command, check the [action attempt](/docs/core-concepts/action-attempts) and read the current settings again. A requested set point, an applied setting and the measured room temperature are three different observations. For an invalid set point, check the units, mode and device constraints before retrying. For a timeout, reconcile the current state first.

A sandbox readback confirms virtual-device state. Check the installed HVAC system to verify physical heating and cooling.

Continue with the [Sensi mode and verification example](/docs/device-and-system-integration-guides/sensi-thermostats/get-started-with-sensi-thermostats#set-the-hvac-mode) or [ecobee reservation schedules](/docs/device-and-system-integration-guides/ecobee-thermostats/get-started-with-ecobee-thermostats#handle-booking-changes-and-cancellations). Each provider guide includes connection prerequisites and a start path.
