---
title: Workday
description: Steps to configure the binary workday sensor.
ha_category:
- Binary Sensor
- Utility
ha_iot_class: Local Polling
ha_release: 0.41
ha_quality_scale: internal
ha_codeowners:
- '@fabaff'
ha_domain: workday
ha_platforms:
- binary_sensor
ha_integration_type: integration
---
The `workday` binary sensor indicates whether the current day is a workday or not. It allows specifying which days of the week will count as workdays and also
uses the Python module [holidays](https://pypi.python.org/pypi/holidays) to incorporate information about region-specific public holidays.
This can be used to make automations that act differently on weekdays vs weekends. For example, you could make your bedroom lights turn on (gently) at 7 in the morning if it is a weekday, but wait until 11 if it is a weekend day.
## Setup
Check the [country list](https://github.com/dr-prodigy/python-holidays#available-countries) for available provinces (and other subdivisions, like states and territories) for each country.
## Configuration
To enable the `workday` sensor in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
binary_sensor:
- platform: workday
country: DE
```
{% configuration %}
name:
description: A name for this sensor.
required: false
type: string
default: Workday Sensor
country:
description: >
Country code according to [holidays](https://pypi.org/project/holidays/) notation.
required: true
type: string
province:
description: Subdivision code according to [holidays](https://pypi.org/project/holidays/) notation.
required: false
type: string
workdays:
description: List of workdays.
required: false
type: list
default: "[mon, tue, wed, thu, fri]"
excludes:
description: List of workday excludes.
required: false
type: list
default: "[sat, sun, holiday]"
days_offset:
description: Set days offset (e.g., -1 for yesterday, 1 for tomorrow).
required: false
type: integer
default: 0
add_holidays:
description: "Add custom holidays (such as company, personal holidays or vacations). Needs to formatted as `YYYY-MM-DD`."
required: false
type: list
remove_holidays:
description: "Remove holidays (treat holiday as workday). Can be formatted as `YYYY-MM-DD` or by name for a partial string match (e.g. Thanksgiving)."
required: false
type: list
{% endconfiguration %}
Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`.
The keyword `holiday` is used for public holidays identified by the holidays module.
If you use the sensor for Norway (`NO`) you need to wrap `NO` in quotes or write the name in full.
Otherwise, the value is evaluated as `false`.
If you use the sensor for Canada (`CA`) with Ontario (`ON`) as `province:` then you need to wrap `ON` in quotes.
Otherwise, the value is evaluated as `true` (check the YAML documentation for further details) and the sensor will not work.
One other thing to watch is how the `holiday` keyword is used. Your first instinct might be to add it to the `exclude` configuration, thinking that it means to skip the holidays. Actually it means to exclude the days in the holidays list from the workdays. So, when you exclude `holiday` and a workday falls on that day, then that workday is excluded, and the sensor will be **off**. If you want every workday flagged with no regard to holidays, make sure that there is something in your `Excludes` configuration _other_ than `holiday`.
## Full examples
This example excludes Saturdays and Sundays but not pre-configured holidays. Two custom holidays are added.
```yaml
# Example 1 configuration.yaml entry
binary_sensor:
- platform: workday
country: US
workdays: [mon, tue, wed, thu, fri]
excludes: [sat, sun]
add_holidays:
- "2020-02-24"
- "2020-04-25"
```
This example excludes Saturdays, Sundays and holidays. One custom holiday is added.
The date February 24th, 2020 is a Monday, but will be excluded (the sensor will be **off**) because it was added to the `add_holidays` configuration.
```yaml
# Example 2 configuration.yaml entry
binary_sensor:
- platform: workday
country: DE
workdays: [mon, tue, wed, thu, fri]
excludes: [sat, sun, holiday]
add_holidays:
- '2020-02-24'
```
This example excludes Saturdays, Sundays and holidays. Two holidays are removed: November 26, 2020 and December 25, 2020.
```yaml
# Example 3 configuration.yaml entry
binary_sensor:
- platform: workday
country: US
workdays: [mon, tue, wed, thu, fri]
excludes: [sat, sun, holiday]
remove_holidays:
- '2020-11-26'
- '2020-12-25'
```
This example excludes Saturdays, Sundays and holidays. Two holidays are removed by name: Thanksgiving and Christmas Day.
```yaml
# Example 4 configuration.yaml entry
binary_sensor:
- platform: workday
country: US
workdays: [mon, tue, wed, thu, fri]
excludes: [sat, sun, holiday]
remove_holidays:
- 'Thanksgiving'
- 'Christmas Day'
```
## Automation example
Example usage for automation:
```yaml
automation:
alias: "Turn on heater on workdays"
trigger:
platform: time
at: "08:00:00"
condition:
condition: state
entity_id: binary_sensor.workday_sensor
state: "on"
action:
service: switch.turn_on
target:
entity_id: switch.heater
```