Workday


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 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 for available provinces (and other subdivisions, like states and territories) for each country.

Configuration

To add the Workday integration to your Home Assistant instance, use this My button:

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 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 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 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
service: workday.check_date
target:
  entity_id: binary_sensor.workday
data:
  check_date: "2023-12-25"
response_variable: check_date

The response data field check_date is providing:

Response data Description Example
workday Is date a workday. True

Automation example

Example usage for automation:

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