Skip to main content
You create a set of climate presets for each thermostat, customized for your—and your users’—needs. Each climate preset is a predefined configuration for a thermostat that specifies settings, such as HVAC mode, fan mode, and temperature set points. These presets make it quick and efficient for users to apply consistent climate settings tailored to different scenarios, enhancing both comfort and energy efficiency. Once you create climate presets, you can activate them, add them to thermostat schedules and programs, and set them as the fallback climate preset.

Climate Preset Properties

Each climate preset can contain the following properties, depending on the capabilities of the thermostat:
PropertyDescription
climate_preset_key(Required) Key to identify the climate preset.
name(Optional) User-friendly name to identify the climate preset.
fan_mode_settingDesired fan mode setting, such as on, auto, or circulate.
hvac_mode_settingDesiredHVAC modesetting, such as heat, cool, heat_cool, or off.
cooling_set_point_celsiusTemperature to which the thermostat should cool (in °C). See alsoSet Points.
cooling_set_point_fahrenheitTemperature to which the thermostat should cool (in °F).
heating_set_point_celsiusTemperature to which the thermostat should heat (in °C).
heating_set_point_fahrenheitTemperature to which the thermostat should heat (in °F).
(Optional) Indicates whether a person at the thermostat or using the API can change the thermostat’s settings.

Deprecated. Use thermostat_schedule.is_override_allowed instead.
can_editIndicates whether the climate preset can be edited. There are some cases in which Seam syncs in climate presets (from the device) that cannot be modified.
can_deleteIndicates whether the climate preset can be deleted. There are some cases in which Seam syncs in climate presets (from the device) that cannot be deleted.

Create a Climate Preset

To create a climate preset, issue a /thermostats/create_climate_preset request, providing the device_id of the desired thermostat. Also, include the desired settings for the climate preset and, optionally, a name. The following example creates two climate presets with the keys occupied and unoccupied:
Request:
// Get the thermostat.
const thermostat = await seam.devices.get({
  device_id: '2d488679-6f07-4810-aed2-e726872c1dd5',
})

// Confirm that the thermostat supports heat_cool mode
// so that the climate presets can use this mode.
if (thermostat.can_hvac_heat_cool) {
  // Create the climate presets.
  await seam.thermostats.createClimatePreset({
    device_id: thermostat.device_id,
    climate_preset_key: 'occupied',
    name: 'Occupied',
    fan_mode_setting: 'auto',
    hvac_mode_setting: 'heat_cool',
    cooling_set_point_celsius: 25,
    heating_set_point_celsius: 20,
  })

  await seam.thermostats.createClimatePreset({
    device_id: thermostat.device_id,
    climate_preset_key: 'unoccupied',
    name: 'Unoccupied',
    fan_mode_setting: 'auto',
    hvac_mode_setting: 'heat_cool',
    cooling_set_point_celsius: 30,
    heating_set_point_celsius: 15,
  })
}
Response:
void

List All Climate Presets for a Thermostat

To list climate presets for a thermostat, issue a /devices/get request, providing the device_id of the desired thermostat. Then, inspect the available_climate_presets property.
Request:
await seam.devices.get({
  device_id: '2d488679-6f07-4810-aed2-e726872c1dd5',
})
Response:
{
  device_id: '2d488679-6f07-4810-aed2-e726872c1dd5',
  properties: {
    available_climate_presets: [
      {
        climate_preset_key: 'occupied',
        name: 'Occupied',
        display_name: 'Occupied',
        fan_mode_setting: 'auto',
        hvac_mode_setting: 'heat_cool',
        cooling_set_point_celsius: 25,
        heating_set_point_celsius: 20,
        cooling_set_point_fahrenheit: 77,
        heating_set_point_fahrenheit: 68,
        ...
      },
      {
        climate_preset_key: 'unoccupied',
        name: 'Unoccupied',
        display_name: 'Unoccupied',
        fan_mode_setting: 'auto',
        hvac_mode_setting: 'heat_cool',
        cooling_set_point_celsius: 30,
        heating_set_point_celsius: 15,
        cooling_set_point_fahrenheit: 86,
        heating_set_point_fahrenheit: 59,
        ...
      }
    ],
    ...
  },
  ...
}

Update a Climate Preset

To update a climate preset, issue a /thermostats/update_climate_preset request, providing the device_id of the thermostat and the climate_preset_key of the desired climate preset. Also, include the desired updated settings for the climate preset.
Request:
await seam.thermostats.updateClimatePreset({
  device_id: '2d488679-6f07-4810-aed2-e726872c1dd5',
  climate_preset_key: 'occupied',
  cooling_set_point_celsius: 24,
})
Response:
void

Delete a Climate Preset

To delete a climate preset, issue a /thermostats/delete_climate_preset request, providing the device_id of the thermostat and the climate_preset_key of the desired climate preset.
Request:
await seam.thermostats.deleteClimatePreset({
  device_id: '2d488679-6f07-4810-aed2-e726872c1dd5',
  climate_preset_key: 'occupied',
})
Response:
void