Alexa.ThermostatController.Schedule interface in your Alexa add-on so that customers can define schedules for their thermostat. A customer can set up the temperature schedule on the device or in the Alexa app.
Typically, you use the Alexa.ThermostatController.Schedule interface with the Alexa.ThermostatController and Alexa.TemperatureSensor interfaces.
For the list of locales that the Alexa.ThermostatController.Schedule interface supports, see List of Alexa Interfaces and Supported Languages. For the definitions of the message properties, see Alexa Interface Message and Property Reference.
Utterances
TheAlexa.ThermostatController.Schedule interface is different from other Alexa interfaces. Your add-on doesn’t support voice user interactions with Alexa directly. Instead, Alexa communicates with your add-on to set and get thermostat schedules. This interface doesn’t have any user utterances.
Properties and objects
TheAlexa.ThermostatController.Schedule interface includes the following properties and objects.
Reportable properties
The following table shows the properties that theAlexa.ThermostatController.Schedule interface defines. You identify the properties that you support in your discovery response. All the properties are optional. Include only the properties that match the features of your thermostat device.
| Property | Description | Type |
|---|---|---|
adaptiveRecoveryEnabled | Used to enable or disable pre-heating and pre-cooling within the schedule. For example, before the next schedule begins, the heating, ventilation, and air conditioning (HVAC) system turns on the heat to try to meet the target temperature at the start of the next schedule. | Boolean |
scheduleEnabled | Used to enable or disable the thermostat schedule. | Boolean |
WeeklySchedule object
TheWeeklySchedule object defines the schedule that your thermostat device follows.
| Property | Description | Type | Required |
|---|---|---|---|
temperatureScale | Preferred temperature scale configured on the thermostat. This value is usually the same as the temperatureScale property in the Alexa.ThermostatController.Configuration interface. | String | Yes |
Monday | Indicates the schedule for Monday. | Array of ScheduleEntry objects | Yes |
Tuesday | Indicates the schedule for Tuesday. | Array of ScheduleEntry objects | Yes |
Wednesday | Indicates the schedule for Wednesday. | Array of ScheduleEntry objects | Yes |
Thursday | Indicates the schedule for Thursday. | Array of ScheduleEntry objects | Yes |
Friday | Indicates the schedule for Friday. | Array of ScheduleEntry objects | Yes |
Saturday | Indicates the schedule for Saturday. | Array of ScheduleEntry objects | Yes |
Sunday | Indicates the schedule for Sunday. | Array of ScheduleEntry objects | Yes |
ScheduleEntry object
TheScheduleEntry object defines the details of the thermostat temperature setting at a particular time of the day. The schedule entry doesn’t include an end time. The time ends when the next schedule entry begins.
| Property | Description | Type | Required |
|---|---|---|---|
startTimeInMinutes | Indicates the start time for the temperature change, expressed in number of minutes from the start of day. For example, 300 minutes is 5:00 AM. Valid values: 0 – 1439. | Integer | Yes |
setpoints | Defines the target temperature for the living space to reach and maintain until the next schedule entry. | SetPoints object | Yes |
fanSetting | Indicates the operational setting of the fan. | FanSetting object | No |
activityType | Indicates the type of activity that causes the temperature change. | ActivityType object | No |
SetPoints object
TheSetPoints object defines the target temperature for the living space.
| Property | Description | Type |
|---|---|---|
upperSetpoint | Indicates that the thermostat should maintain the temperature below this setpoint. | Temperature |
lowerSetpoint | Indicates that the thermostat should maintain the temperature above this setpoint. | Temperature |
FanSetting object
TheFanSetting object defines the fan operating mode.
| Property | Description | Type |
|---|---|---|
mode | Indicates the operational setting on the fan. For example, CIRCULATE indicates that the fan runs at random intervals.If the mode isn’t specified, the HVAC system uses the manufacturer default setting. Valid values: ON, AUTO, CIRCULATE. | String |
ActivityType object
TheActivityType object enables the user to set a schedule based on the type of activity.
| Property | Description | Type |
|---|---|---|
type | Indicates the type of activity. Valid values: AWAY, HOME, SLEEP. | String |
Discovery
You describe endpoints that supportAlexa.ThermostatController.Schedule by using the standard discovery mechanism described in Alexa.Discovery.
Set retrievable to true for the properties that you report when Alexa sends your add-on a state report request. Set proactivelyReported to true for the properties that you proactively report to Alexa in a change report.
Use THERMOSTAT for the display category. For the full list of display categories, see display categories.
Configuration object
In addition to the usual discovery response fields, forAlexa.ThermostatController.Schedule, include a configuration object that contains the following fields.
| Property | Description | Type | Required |
|---|---|---|---|
supportedFanModes | Indicates the supported operating modes of the fan. Valid values: ON, AUTO, CIRCULATE. | Array of strings | Yes |
supportsAdaptiveRecovery | Indicates supports for pre-heating or pre-cooling. | Boolean | Yes |
maxEntryPerDay | Maximum number of schedule entries for each day. If the restriction is complex, you can validate the schedule in your add-on or device. | Integer | No |
Discover response example
The following example shows aDiscover.Response message for an Alexa add-on that accepts thermostat configuration and supports the Alexa.ThermostatController, and Alexa.EndpointHealth interfaces. In this example, the thermostat device supports adaptive recovery.
Directives
Alexa sends the followingAlexa.ThermostatController.Schedule interface directives to your add-on.
SetWeeklySchedule directive
Support theSetWeeklySchedule directive so that you can get the schedule that the customer configured during the thermostat setup or later in the Alexa app.
SetWeeklySchedule directive example
The following example shows aSetWeeklySchedule directive that Alexa sends to your add-on.
Show/hide SetWeeklySchedule directive
Show/hide SetWeeklySchedule directive
SetWeeklySchedule directive payload
The following table shows the payload details for theSetWeeklySchedule directive that Alexa sends to your add-on.
| Property | Description | Type | Required |
|---|---|---|---|
weeklySchedule | Indicates the schedule that the thermostat device follows for each day of the week. | WeeklySchedule object | No |
SetWeeklySchedule response
If you handle aSetWeeklySchedule directive successfully, respond with an Alexa.Response event. A successful response confirms that the endpoint completed the requested action.
SetWeeklySchedule directive error handling
If you can’t handle aSetWeeklySchedule directive successfully, don’t change the schedule on the device and respond with an Alexa.ThermostatController.Schedule.ErrorResponse event. You can also respond with a generic Alexa.ErrorResponse event if your error isn’t specific to thermostats.
SetScheduleState directive
Support theSetScheduleState directive so that customers can enable and disable the thermostat schedule. You must save the previously set schedule so that the customer can enable the schedule again.
SetScheduleState directive example
The following example shows aSetScheduleState directive that Alexa sends to your add-on.
SetScheduleState directive payload
The following table shows the payload details for theSetScheduleState directive.
| Property | Description | Type | Required |
|---|---|---|---|
scheduleEnabled | Indicates whether to enable (true) or disable (false) the thermostat schedule. | Boolean | Yes |
SetScheduleState response
If you handle aSetScheduleState directive successfully, respond with an Alexa.Response event. A successful response confirms that the endpoint completed the requested action.
SetScheduleState directive error handling
If you can’t handle aSetScheduleState directive successfully, respond with an Alexa.ThermostatController.Schedule.ErrorResponse event. You can also respond with a generic Alexa.ErrorResponse event if your error isn’t specific to thermostats.
SetAdaptiveRecovery directive
If your device supports adaptive recovery, Alexa sends theSetAdaptiveRecovery directive so that customers can enable or disable pre-heating and pre-cooling.
SetAdaptiveRecovery directive example
The following example shows aSetAdaptiveRecovery directive that Alexa sends to your add-on.
SetAdaptiveRecovery directive payload
The following table shows the payload details for theSetAdaptiveRecovery directive.
| Property | Description | Type | Required |
|---|---|---|---|
adaptiveRecoveryEnabled | Indicates whether to enable (true) or disable (false) adaptive recovery. | Boolean | Yes |
SetAdaptiveRecovery response
If you handle aSetAdaptiveRecovery directive successfully, respond with an Alexa.Response event. A successful response confirms that the endpoint completed the requested action.
SetAdaptiveRecovery directive error handling
If you can’t handle aSetAdaptiveRecovery directive successfully, respond with an Alexa.ThermostatController.Schedule.ErrorResponse event. You can also respond with a generic Alexa.ErrorResponse event if your error isn’t specific to thermostats.
State reporting
Alexa sends aReportState directive to request information about the state of an endpoint. When Alexa sends a ReportState directive, you send a StateReport event in response. The response contains the current state of all retrievable properties in the context object. You identify your retrievable properties in your discovery response. For details about state reports, see Understand State and Change Reporting.
StateReport response example
In this example, the thermostat device supports bothsetupState and temperatureScale.
Change reporting
You send aChangeReport event to report changes proactively in the state of an endpoint. You identify the properties that you proactively report in your discovery response. For details about change reports, see Understand State and Change Reporting.
The payload contains the values of properties that have changed, the context contains the values of other relevant properties.
ChangeReport event example
The following example shows aChangeReport after the customer disables the schedule.

