Schedule

The Schedule integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] provides a way to create a weekly schedule entityAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more] in Home Assistant, consisting of time blocks with defined start and end times. The schedule is active when a time block starts and becomes inactive when it ends, allowing it to be used for triggering or making decisions in automations and scripts.

Configuration

To add the Schedule helper to your Home Assistant instance, use this My button:

Manual configuration steps

If the above My button doesn’t work, you can also perform the following steps manually:

  • Browse to your Home Assistant instance.

  • Go to Settings > Devices & Services.

  • At the top of the screen, select the tab: Helpers.

  • In the bottom right corner, select the Create helper button.

  • From the list, select Schedule.

  • Follow the instructions on screen to complete the setup.

Name

Friendly name of the schedule.

Icon

Icon to display in the frontend for this schedule.

Schedule blocks

Press and drag to select time blocks for each day of the week. It is not possible to create overlapping time blocks on the same day.

After creating schedule blocks, you can press a block to edit the details.

Start

The start time to mark the schedule as active/on.

End

The end time to mark as inactive/off again.

Additional data

A mapping of attribute names to values, which will be added to the entity’s attributes when the block is active.

Adding additional data

Adding the following as Additional data will show brightness and color_temp as entityAn entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. [Learn more] attributes when the block is active:

brightness: 100
color_temp: 4000

YAML configuration

Alternatively, this integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] can be configured and set up manually via YAML instead. To enable the Integration sensor in your installation, add the following to your configuration.yamlThe configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file.

Note

The data field follows the same logic as described above in Adding additional data.

schedule:
  light_schedule:
    name: "Light schedule"
    wednesday:
      - from: "17:00:00"
        to: "21:00:00"
        data:
          brightness: 100
          color_temp: 4000
    thursday:
      - from: "17:00:00"
        to: "23:00:00"
        data:
          brightness: 90
          color_temp: 3500
    friday:
      - from: "07:00:00"
        to: "10:00:00"
        data:
          brightness: 80
          color_temp: 3000
      - from: "16:00:00"
        to: "23:00:00"
        data:
          brightness: 60
          color_temp: 2500

Configuration Variables

schedule map Required

Alias for the schedule. Multiple entries are allowed.

name string Required

Friendly name of the schedule.

icon icon (Optional)

Icon to display in the frontend for this schedule.

monday|tuesday|wednesday|thursday|friday|saturday|sunday list Required

A schedule for each day of the week.

from time Required

The start time to mark the schedule as active/on.

to time Required

The end time to mark as inactive/off again.

data map (Optional, default: {})

A mapping of attribute names to values, which will be added to the entity’s attributes when the block is active.

Attributes

A schedule entity exports state attributes that can be useful in automations and templates.

Attribute Description
next_event A datetime object containing the next time the schedule is going to change state.
key_1, key_2, … The mapping values from Additional data / data settings of a time block when the respective block is active.

Automation example

A schedule creates an on/off (schedule) sensor within the times set. By incorporating the light_schedule example from above in an automation, we can turn on a light when the schedule is active.

triggers:
  - trigger: state
    entity_id:
      - schedule.light_schedule
    to: "on"
actions:
  - action: light.turn_on
    target:
      entity_id: light.kitchen
    data:
      brightness_pct: "{{ state_attr('schedule.light_schedule', 'brightness') }}"
      kelvin: "{{ state_attr('schedule.light_schedule', 'color_temp') }}"

Another automation can be added to turn the lights off once the schedule is inactive:

triggers:
  - trigger: state
    entity_id:
      - schedule.light_schedule
    to: "off"
actions:
  - action: light.turn_off
    target:
      entity_id: light.kitchen

Actions

To interact with schedules from scriptsScripts are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on. [Learn more] and automationsAutomations in Home Assistant allow you to automatically respond to things that happen in and around your home. [Learn more], the schedule integration provides the following actionsActions are used in several places in Home Assistant. As part of a script or automation, actions define what is going to happen once a trigger is activated. In scripts, an action is called sequence. [Learn more].

Action schedule.reload

schedule.reload reloads the schedule’s configuration from YAML without the need of restarting Home Assistant itself.

Action schedule.get_schedule

schedule.get_schedule populates response data with the configured time ranges of a schedule. It can return multiple schedules.

action: schedule.get_schedule
target:
  entity_id:
    - schedule.vacuum_robot
    - schedule.air_purifier
response_variable: schedules

The response data contains a field for every schedule entity (e.g. schedule.vacuum_robot and schedule.air_purifier in this case).

Every schedule entity response has 7 fields (one for each day of the week in lowercase), containing a list of the selected time ranges. Days without any ranges will be returned as an empty list.

schedule.vacuum_robot:
  monday:
    - from: "09:00:00"
      to: "15:00:00"
  tuesday: []
  wednesday: []
  thursday:
    - from: "09:00:00"
      to: "15:00:00"
  friday: []
  saturday: []
  sunday: []
schedule.air_purifier:
  monday:
    - from: "09:00:00"
      to: "18:00:00"
  tuesday: []
  wednesday: []
  thursday:
    - from: "09:00:00"
      to: "18:00:00"
  friday: []
  saturday:
    - from: "10:30:00"
      to: "12:00:00"
    - from: "14:00:00"
      to: "19:00:00"
  sunday: []

The example below uses the response data from above in a template for another action.

action: notify.nina
data:
  title: Today's schedules
  message: >-
    Your vacuum robot will run today:
    {% for event in schedules["schedule.vacuum_robot"][now().strftime('%A').lower()] %}
    - from {{ event.from }} until {{ event.to }}<br>
    {% endfor %}
    Your air purifier will run today:
    {% for event in schedules["schedule.air_purifier"][now().strftime('%A').lower()] %}
    - from {{ event.from }} until {{ event.to }}<br>
    {% endfor %}

If you want to run the above action both once per day and whenever one of the schedules changes, you can create an automationAutomations in Home Assistant allow you to automatically respond to things that happen in and around your home. [Learn more] that combines a time-based triggerA trigger is a set of values or conditions of a platform that are defined to cause an automation to run. [Learn more] with an eventEvery time something happens in Home Assistant, an event is fired. There are different types of events, such as state change events, when an action was triggered, or the time changed. All entities produce state change events. Every time a state changes, a state change event is produced. Events can be used to trigger automations or scripts. For example, you can trigger an automation when a light is turned on, then a speaker turns on in that room. Events can also be used to trigger actions in the frontend. For example, you can trigger an action when a button is pressed. [Learn more] trigger per entity.

triggers:
  - trigger: time
    at: "07:30:00"
  - trigger: event
    event_type: entity_registry_updated
    event_data:
      action: update
      entity_id: schedule.vacuum_robot
  - trigger: event
    event_type: entity_registry_updated
    event_data:
      action: update
      entity_id: schedule.air_purifier