The Problem
Home Assistant can tell you if it’s Thanksgiving if you have a calendar plugin configured with Thanksgiving scheduled. But the included Calendar plugin doesn’t have that pre-scheduled, and what if you don’t want to use a Cloud calendar service? The date sensor isn’t very good with date math, and getting “Thanksgiving” to a date is difficult because it’s not a fixed day.
The Solution
Template Sensors and Date Math
I found most of this on the Home Assistant Forums, but I’ve lost the link.
The YAML below will set a “holiday-season” sensor’s state to “christmas” between the day after Thanksgiving and Jan 5th.
It’ll set the state to “halloween” in October.
Otherwise it sets the state to “none”. Simple enough.
Home Assistant Automation Configuration
- trigger:
- platform: time_pattern
# This will update every night
hours: '0'
minutes: '0'
- platform: event
event_type: event_template_reloaded
- platform: homeassistant
event: start
sensor:
- name: "holiday-season"
state: >
{%- set today = now().date() -%}
{%- set month, week, day = 11, 4, 3 -%}
{%- 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 jan6th = temp.replace(month=1, day=6) -%}
{% if today <= jan6th or today > thanksgiving -%}
{%- set season = "christmas" -%}
christmas
{%- elif today.month == 10 -%}
{%- set season = "halloween" -%}
halloween
{%- else -%}
{%- set season = "none" -%}
none
{%- endif -%}
Example Use Cases
Dashboards
Using the Card Mod plugin, you can style dashboard cards and use this sensor to change your themes.

How to do this in a dashboard:
Selecting a Scene
Using scenes whenever possible, rather than trying to capture everything manually is the best way to handle lighting and switches and such. In this case, rather than activating a scene, trigger an automation that activates the appropriate scene.

This also works for playlists, videos, whatever.
The YAML version of the above configuration
alias: Select Holiday Scene
sequence:
- choose:
- conditions:
- condition: state
entity_id: sensor.holiday_season
state: christmas
sequence:
- service: scene.turn_on
target:
entity_id: scene.bsow_bar_christmas_scene
metadata: {}
- conditions:
- condition: state
entity_id: sensor.holiday_season
state: halloween
sequence:
- service: scene.turn_on
target:
entity_id: scene.bsow_bar_halloween_scene
metadata: {}
default:
- service: scene.turn_on
target:
entity_id: scene.bsow_bar_default_scene
metadata: {}
mode: single
icon: mdi:palette-swatch-variant