Selection of Sensor Configurations with 'Days Until' as an attribute
It’s been a while since I set these up, and the template integration has had a lot of upgrades, so there’s probably a better way to do the “days until” part, but I haven’t gotten around to updating them.
template:
- trigger:
- platform: time
at: "00:01:00"
- platform: homeassistant
event: start
# FIXED DATE
sensor:
- name: "New Years Day"
unique_id: "37319374975705055206"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(1, 1)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(1, 1)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: "Dia de Los Reyes"
unique_id: "1984497531937520705056"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(1, 6)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(1, 6)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: "Valentines Day"
unique_id: "22719844595073910047"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(2, 14)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(2, 14)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: "Saint Patricks Day"
unique_id: "44595073912271980047"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(3, 17)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(3, 17)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: Halloween
unique_id: "947396278926815041"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(10, 31)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(10, 31)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: Dia de Muertos
unique_id: "9750858485431103467"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(11, 2)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(11, 2)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: Rex Manning Day
unique_id: "4690662543745975107"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(4, 8)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(4, 8)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: Christmas
unique_id: "14318885502034384968"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(12, 25)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(12, 25)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: "Veterans Day"
unique_id: "31975705053740693752"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(11, 11)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(11, 11)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: Independence Day
unique_id: "9084317551034684857"
state: >
{% from 'easy_time.jinja' import month_day %}
{{ (month_day(7,4)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_day %}
{%- set x = ((month_day(7, 4)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
# VARIABLE DATE
## MONTH WEEK DAY
- name: "Martin Luther King Jr"
unique_id: "496217893819475026"
state: >
{% from 'easy_time.jinja' import month_week_day %}
{{ (month_week_day(1, 3, 1)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_week_day %}
{%- set x = ((month_week_day(1, 3, 1)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: "Mothers Day"
unique_id: "749819475062189326"
state: >
{% from 'easy_time.jinja' import month_week_day %}
{{ (month_week_day(5, 2, 7)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_week_day %}
{%- set x = ((month_week_day(5, 2, 7)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: "Fathers Day"
unique_id: "962741899473268150"
state: >
{# third Sunday of June #}
{% from 'easy_time.jinja' import month_week_day %}
{{ (month_week_day(6, 3, 7)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_week_day %}
{%- set x = ((month_week_day(6, 3, 7)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: Thanksgiving
unique_id: "69425309251060427914"
state: >
{# 3rd Thursday in November #}
{% from 'easy_time.jinja' import month_week_day %}
{{ (month_week_day(11, 4, 4)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_week_day %}
{%- set x = ((month_week_day(11, 4, 4)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: Memorial Day
unique_id: "20611770923315821822"
state: >
{# last Monday in May #}
{% from 'easy_time.jinja' import last_day_in_month %}
{{ (last_day_in_month(5, 1)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import last_day_in_month %}
{%- set x = ((last_day_in_month(5, 1)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: Labor Day
unique_id: "78754309251267813130"
state: >
{# 1st Monday in September #}
{% from 'easy_time.jinja' import month_week_day %}
{{ (month_week_day(9, 1, 1)|as_datetime).date() }}
attributes:
days_until: >
{%- from 'easy_time.jinja' import month_week_day %}
{%- set x = ((month_week_day(9, 1, 1)|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
## LUNAR-DERIVED
- name: "Mardi Gras"
unique_id: "734459509122779462132"
state: >
{% from 'easy_time.jinja' import easter %}
{{ (easter()|as_datetime - timedelta(days=47)).date() }}
attributes:
days_until: >
{% from 'easy_time.jinja' import easter %}
{% set x = ((easter()|as_datetime
- timedelta(days=47)) - today_at()).days%}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"
- name: "Easter"
unique_id: "189497506268132794"
state: >
{% from 'easy_time.jinja' import easter %}
{{ easter() }}
attributes:
days_until: >
{% from 'easy_time.jinja' import easter %}
{% set x = ((easter()|as_datetime) - today_at()).days %}
{{ iif(x < 1, x + 365, x) }}
availability: "{{ now() is defined }}"