--- 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_config_flow: true ha_codeowners: - '@fabaff' - '@gjohansson-ST' 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.org/project/holidays/) to incorporate information about region-specific public holidays. This can be used to make daily automations that act differently on workdays than non-workdays. For example, you could make your bedroom lights turn on (gently) at 7 in the morning if it is a workday but wait until 11 if it is a non-working 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. {% include integrations/config_flow.md %} 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 and holidays added by the `add_holidays` configuration option.
Take note of the `holiday` keyword. Your first instinct might be to add it to the `exclude` configuration, thinking it means skipping the holidays. But it is meant to exclude the days in the holiday list from the workdays. So, when you exclude `holiday` and a workday falls on that day, that workday is excluded, and the sensor will be **off**. If you want every workday flagged with no regard to holidays, ensure that there is something in your `Excludes` configuration _other_ than `holiday`.
## Specific field information Country code must be given according to [holidays](https://pypi.org/project/holidays/) notation. The country can also be set to `None` to start with an empty set of holidays. This is useful in conjunction with the add holidays field. Subdivision code must be given according to [holidays](https://pypi.org/project/holidays/) notation. Add holidays will only take dates formatted with `YYYY-MM-DD` or a date range formatted with `YYYY-MM-DD,YYYY-MM-DD`. Remove holidays will take dates formatted with `YYYY-MM-DD`, a date range formatted with `YYYY-MM-DD,YYYY-MM-DD` or partial of name, for example, `christmas` will exclude `Christmas Day`. The offset can be used to see if future days are workdays. For example, put `1` to see if tomorrow is a workday. ## Service `workday.check_date` This service populates [Response Data](/docs/scripts/service-calls#use-templates-to-handle-response-data) providing feedback if the date is a workday or not. | Service data attribute | Required | Description | Example | | ---------------------- | -------- | ----------- | --------| | `check_date` | yes | Date to test if workday or not. | 2022-03-10 {% raw %} ```yaml service: workday.check_date target: entity_id: binary_sensor.workday data: check_date: "2023-12-25" response_variable: check_date ``` {% endraw %} The response data field `check_date` is providing: | Response data | Description | Example | | ---------------------- | ----------- | -------- | | `workday` | Is date a workday. | True ## 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 ```