Creating and Managing Climate Presets

Learn how to create, list, update, and delete climate presets for thermostats.

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.

Each climate preset can contain the following properties, depending on the capabilities of the thermostat:

Property
Description

climate_preset_key

(Required) Key to identify the climate preset.

name

(Optional) User-friendly name to identify the climate preset.

fan_mode_setting

Desired fan mode setting, such as on, auto, or circulate.

hvac_mode_setting

Desired HVAC mode setting, such as heat, cool, heat_cool, or off.

cooling_set_point_celsius

Temperature to which the thermostat should cool (in °C). See also Set Points.

cooling_set_point_fahrenheit

Temperature to which the thermostat should cool (in °F).

heating_set_point_celsius

Temperature to which the thermostat should heat (in °C).

heating_set_point_fahrenheit

Temperature to which the thermostat should heat (in °F).

manual_override_allowed

(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.


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. Note that manual_override_allowed is required.

The following example creates two climate presets with the keys occupied and unoccupied:

Request:

# Get the thermostat.
thermostat = 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.
  seam.thermostats.create_climate_preset(
    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
  )
  
  seam.thermostats.create_climate_preset(
    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:

None

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:

seam.devices.get(
  device_id = "2d488679-6f07-4810-aed2-e726872c1dd5"
)

Response:

Device(
  device_id='2d488679-6f07-4810-aed2-e726872c1dd5',
  properties={
    'available_climate_presets': [
      {
        'climate_preset_key': 'occupied',
        'cooling_set_point_celsius': 25,
        'cooling_set_point_fahrenheit': 77,
        'display_name': 'Occupied',
        'fan_mode_setting': 'auto',
        'heating_set_point_celsius': 20,
        'heating_set_point_fahrenheit': 68,
        'hvac_mode_setting': 'heat_cool',
        'name': 'Occupied'
      },
      {
        'climate_preset_key': 'unoccupied',
        'cooling_set_point_celsius': 30,
        'cooling_set_point_fahrenheit': 86,
        'display_name': 'Unoccupied',
        'fan_mode_setting': 'auto',
        'heating_set_point_celsius': 15,
        'heating_set_point_fahrenheit': 59,
        'hvac_mode_setting': 'heat_cool',
        'name': 'Unoccupied'
      }
    ],
    ...
  },
  ...
)

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. Note that manual_override_allowed is required.

Request:

seam.thermostats.update_climate_preset(
  device_id = "2d488679-6f07-4810-aed2-e726872c1dd5",
  climate_preset_key = "occupied",
  cooling_set_point_celsius = 24
)

Response:

None

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:

seam.thermostats.delete_climate_preset(
  device_id = "2d488679-6f07-4810-aed2-e726872c1dd5",
  climate_preset_key = "occupied"
)

Response:

None

Last updated

Logo

© Seam Labs, Inc. All rights reserved.