Last active
May 21, 2024 02:06
-
-
Save Didgeridrew/b3e6ec256d21cfb154fc224874b0a0c6 to your computer and use it in GitHub Desktop.
HA: Trigger-based Template sensors for a selection of US Holidays
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
template: | |
- trigger: | |
- platform: homeassistant | |
event: start | |
- platform: time | |
at: "00:00:01" | |
sensor: | |
- name: "New Years Day" | |
unique_id: "37319374975705055206" | |
state: > | |
{%- set today = now().date() %} | |
{% set new_years = today.replace(month=1, day=1) %} | |
{% if new_years < now().date() %} | |
{% set new_years = today.replace(month=1, day=1, year= (now().year + 1)) %} | |
{% endif %} | |
{{ new_years }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set new_years = today.replace(month=1, day=1) %} | |
{% if new_years < now().date() %} | |
{% set new_years = today.replace(month=1, day=1, year= (now().year + 1)) %} | |
{% endif %} | |
{% set x = new_years|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Dia de Los Reyes" | |
unique_id: "1984497531937520705056" | |
state: > | |
{%- set today = now().date() %} | |
{% set los_reyes = today.replace(month=1, day=6) %} | |
{% if los_reyes < now().date() %} | |
{% set los_reyes = today.replace(month=1, day=6, year= (now().year + 1)) %} | |
{% endif %} | |
{{ los_reyes }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set los_reyes = today.replace(month=1, day=6) %} | |
{% if los_reyes < now().date() %} | |
{% set los_reyes = today.replace(month=1, day=6, year= (now().year + 1)) %} | |
{% endif %} | |
{% set x = los_reyes|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Martin Luther King Jr" | |
unique_id: "496217893819475026" | |
state: > | |
{%- set month, week, day = 1, 3, 0 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set mlk = temp + timedelta(weeks = week-1) %} | |
{% set mlk = mlk|string|as_datetime|as_local %} | |
{{ iif(mlk < now(), (mlk + timedelta(days=365)).date(), mlk.date()) }} | |
attributes: | |
days_until: > | |
{%- set month, week, day = 1, 3, 0 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set mlk = temp + timedelta(weeks = week-1) %} | |
{% set mlk = mlk|string|as_datetime|as_local %} | |
{% set x = mlk|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Valentines Day" | |
unique_id: "22719844595073910047" | |
state: > | |
{%- set today = now().date() %} | |
{% set valentines = today.replace(month=2, day=14) %} | |
{% if valentines < now().date() %} | |
{% set valentines = today.replace(month=2, day=14, year= (now().year + 1)) %} | |
{% endif %} | |
{{ valentines }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set valentines = today.replace(month=2, day=14) %} | |
{% if valentines < now().date() %} | |
{% set valentines = today.replace(month=2, day=14, year= (now().year + 1)) %} | |
{% endif %} | |
{% set x = valentines|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Saint Patricks Day" | |
unique_id: "44595073912271980047" | |
state: > | |
{%- set today = now().date() %} | |
{% set st_patricks = today.replace(month=3, day=17) %} | |
{{ st_patricks }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set st_patricks = today.replace(month=3, day=17) %} | |
{% set x = st_patricks|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Mardi Gras" | |
unique_id: "734459509122779462132" | |
state: > | |
{%- set today = now().date() %} | |
{% set easters = ['2022-04-17', '2023-04-09', '2024-03-31', '2025-04-20', '2026-04-05', '2027-03-28'] %} | |
{% set mardi_gras = easters|select('gt', today|string)|first %} | |
{{ (mardi_gras|as_datetime - timedelta(days = 47)).date()}} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set easters = ['2022-04-17', '2023-04-09', '2024-03-31', '2025-04-20', '2026-04-05', '2027-03-28'] %} | |
{% set mardi_gras = easters|select('gt', today|string)|first %} | |
{% set x = (mardi_gras|as_datetime - timedelta(days = 47)).date() %} | |
{% set x = ((x - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Easter" | |
unique_id: "189497506268132794" | |
state: > | |
{%- set today = now().date() %} | |
{% set easters = ['2022-04-17', '2023-04-09', '2024-03-31', '2025-04-20', '2026-04-05', '2027-03-28'] %} | |
{% set next_easter = easters|select('gt', today|string)|first %} | |
{{ next_easter }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set easters = ['2022-04-17', '2023-04-09', '2024-03-31', '2025-04-20', '2026-04-05', '2027-03-28'] %} | |
{% set next_easter = easters|select('gt', today|string)|first %} | |
{% set x = next_easter|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Mothers Day" | |
unique_id: "749819475062189326" | |
state: > | |
{%- set month, week, day = 5, 2, 6 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set mothers_day = temp + timedelta(weeks = week-1) %} | |
{{ mothers_day }} | |
attributes: | |
days_until: > | |
{%- set month, week, day = 5, 2, 6 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set mothers_day = temp + timedelta(weeks = week-1) %} | |
{% set x = mothers_day|string%} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Fathers Day" | |
unique_id: "962741899473268150" | |
state: > | |
{%- set month, week, day = 6, 3, 6 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set fathers_day = temp + timedelta(weeks = week-1) %} | |
{{ fathers_day }} | |
attributes: | |
days_until: > | |
{%- set month, week, day = 6, 3, 6 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set fathers_day = temp + timedelta(weeks = week-1) %} | |
{%- set x = fathers_day|string%} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: Halloween | |
unique_id: "947396278926815041" | |
state: > | |
{%- set today = now().date() %} | |
{% set halloween = today.replace(month=10, day=31) %} | |
{{ halloween }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set halloween = today.replace(month=10, day=31) %} | |
{% set x = halloween|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: "Veterans Day" | |
unique_id: "31975705053740693752" | |
state: > | |
{%- set today = now().date() %} | |
{% set veterans = today.replace(month=11, day=11) %} | |
{% if veterans < now().date() %} | |
{% set veterans = today.replace(month=11, day=11, year= (now().year + 1)) %} | |
{% endif %} | |
{{ veterans }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set veterans = today.replace(month=11, day=11) %} | |
{% if veterans < now().date() %} | |
{% set veterans = today.replace(month=11, day=11, year= (now().year + 1)) %} | |
{% endif %} | |
{% set x = veterans|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: Christmas | |
unique_id: "14318885502034384968" | |
state: > | |
{%- set today = now().date() %} | |
{% set christmas = today.replace(month=12, day=25) %} | |
{{ christmas }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{% set christmas = today.replace(month=12, day=25) %} | |
{% set x = christmas|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: Thanksgiving | |
unique_id: "69425309251060427914" | |
state: > | |
{%- set month, week, day = 11, 4, 3 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set thanksgiving = temp + timedelta(weeks = week-1) %} | |
{{ thanksgiving }} | |
attributes: | |
days_until: > | |
{%- set month, week, day = 11, 4, 3 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set thanksgiving = temp + timedelta(weeks = week-1) %} | |
{% set x = thanksgiving|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: Independence Day | |
unique_id: "9084317551034684857" | |
state: > | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=7, day=4) %} | |
{%- set independence = temp %} | |
{{ independence }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=7, day=4) %} | |
{%- set x = temp|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: Memorial Day | |
unique_id: "20611770923315821822" | |
state: > | |
{%- set month, week, day = 5, 5, 0 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set memorial = temp + timedelta(weeks = week - 1) %} | |
{{memorial}} | |
attributes: | |
days_until: > | |
{%- set month, week, day = 5, 5, 0 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set memorial = temp + timedelta(weeks = week - 1) %} | |
{% set x = memorial|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: Labor Day | |
unique_id: "78754309251267813130" | |
state: > | |
{%- set month, week, day = 9, 1, 0 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set labor = temp + timedelta(weeks = week - 1) %} | |
{{labor}} | |
attributes: | |
days_until: > | |
{%- set month, week, day = 9, 1, 0 %} | |
{%- set today = now().date() %} | |
{%- set temp = today.replace(month=month, day=1) %} | |
{%- set adjust = (day - temp.weekday()) % 7 %} | |
{%- set temp = temp + timedelta(days=adjust) %} | |
{%- set labor = temp + timedelta(weeks = week - 1) %} | |
{% set x = labor|string%} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: Dia de Muertos | |
unique_id: "9750858485431103467" | |
state: > | |
{%- set today = now().date() %} | |
{%- set muertos = today.replace(month=11, day=2) %} | |
{{ muertos }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{%- set muertos = today.replace(month=11, day=2) %} | |
{% set x = muertos|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" | |
- name: Rex Manning Day | |
unique_id: "4690662543745975107" | |
state: > | |
{%- set today = now().date() %} | |
{%- set rex_manning = today.replace(month=4, day=8) %} | |
{{ rex_manning }} | |
attributes: | |
days_until: > | |
{%- set today = now().date() %} | |
{%- set rex_manning = today.replace(month=4, day=8) %} | |
{% set x = rex_manning|string %} | |
{% set x = (((x|as_datetime|as_local).date() - now().date()).days)|int %} | |
{{ iif(x < 1, x + 365, x) }} | |
availability: "{{ now() is defined }}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment