############################################################################### # @author : Jeffrey Stone # @date : 02/19/2019 # @package : Holidays # @description : Holiday Specific. # # I'm not sure where I got this, but it leverages a python script: https://github.com/thejeffreystone/home-assistant-configuration/blob/master/python_scripts/special_events.py # # To create a sensor just create an automation to fire around midnight. # # automation: # - id: refresh_holioday_sensors # alias: Refresh Holiday sensors # initial_state: true # trigger: # - platform: time # at: '00:00:07' # - platform: homeassistant # event: start # action: # - service: python_script.special_events # data: # name: Christmas # type: holiday # date: 25/12/2001 # # Where Name equals the name of the event, type is the type of event, and date is the date in DD/MM/YYYY format # # Year only matters if your want to take advantage fo the years attribute which will tell you have many years since the event. Useful # with birthdays and anniversaries. # # I use the Following types: # birthday # anniversary # holiday # trip # # The type will be used in the name of the sensor it creates. For example: # sensor.trip_camping # sensor.birthday_jeff # sensor.holiday_christmas # # The state of the sensor will be the days until the event. For birthdays and anniversaries it will never be more than 365. # For example {{ states.sensor.birthday_jeff.state }} will be the number of days until my next birthday. # And {{ states.sensor.birthday_jeff.attributes.years }} will be my age, or the number of years since my birth (if you put the real year in) # For events with a year in the future, the state will be number of days to that exact moment in time. # ############################################################################### input_boolean: this_is_halloween: name: This is Halloween haunted_sounds: name: Haunted Sounds automation: - id: this_is_halloween_on alias: This is Halloween On initial_state: true trigger: - platform: state entity_id: input_boolean.this_is_halloween to: 'on' action: - service: script.turn_on entity_id: script.this_is_halloween - id: haunted_sounds_on alias: Haunted Sounds On initial_state: true trigger: - platform: state entity_id: input_boolean.haunted_sounds to: 'on' action: - service: script.turn_on entity_id: script.haunted_sounds - id: haunted_sounds_off alias: Haunted Sounds Off initial_state: true trigger: - platform: state entity_id: input_boolean.haunted_sounds to: 'off' action: - service: script.turn_off entity_id: script.haunted_sounds - id: this_is_halloween_off alias: This is Halloween Off initial_state: true trigger: - platform: state entity_id: input_boolean.this_is_halloween to: 'off' action: - service: script.turn_on entity_id: script.kill_this_ride - service: media_player.media_stop entity_id: media_player.ha_speaker - id: this_is_halloween alias: This is Halloween initial_state: true trigger: - platform: template value_template: "{{ states('sensor.time') == (state_attr('input_datetime.halloween_show', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}" condition: - condition: state entity_id: calendar.holidays_in_united_states state: "on" - condition: template value_template: > {%- set event=states.calendar.holidays_in_united_states.attributes.message %} {%- if event == 'Halloween' %} true {%- endif -%} action: - service: input_boolean.turn_on entity_id: input_boolean.this_is_halloween - id: operation_haunted_house alias: Operation Haunted House initial_state: true trigger: - platform: template value_template: "{{ states('sensor.time') == (state_attr('input_datetime.halloween_show', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}" condition: - condition: state entity_id: calendar.holidays_in_united_states state: "on" - condition: template value_template: > {%- set event=states.calendar.holidays_in_united_states.attributes.message %} {%- if event == 'Halloween' %} true {%- endif -%} action: - service: script.turn_on entity_id: input_boolean.haunted_sounds - id: wishes_five_min alias: Wishes Five Minute initial_state: true trigger: - platform: template value_template: "{{ states('sensor.time') == (state_attr('input_datetime.christmas_preshow', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}" condition: - condition: state entity_id: calendar.holidays_in_united_states state: "on" - condition: template value_template: > {%- set event=states.calendar.holidays_in_united_states.attributes.message %} {%- if event == 'Christmas Eve' %} true {%- endif -%} action: - service: script.holiday_wishes_preshow - id: wishes_show_start alias: Wishes Show Start initial_state: true trigger: - platform: template value_template: "{{ states('sensor.time') == (state_attr('input_datetime.christmas_show', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}" condition: - condition: state entity_id: calendar.holidays_in_united_states state: "on" - condition: template value_template: > {%- set event=states.calendar.holidays_in_united_states.attributes.message %} {%- if event == 'Christmas Eve' %} true {%- endif -%} action: - service: input_boolean.turn_on entity_id: input_boolean.holiday_wishes script: haunted_sounds: sequence: - delay: 00:05:00 - service: shell_command.haunted_scream - delay: 00:07:06 - service: shell_command.haunted_leotta - delay: 00:02:36 - service: shell_command.haunted_raven - delay: 00:04:03 - service: shell_command.haunted_harp - delay: 00:01:40 - service: shell_command.haunted_door - delay: 00:03:33 - service: shell_command.haunted_howling - delay: 00:04:03 - service: shell_command.haunted_laugh2 - delay: 00:03:56 - service: shell_command.haunted_seance_horn - delay: 00:08:00 - service: shell_command.haunted_piano - delay: 00:03:10 - service: shell_command.haunted_clock - delay: 00:07:33 - service: shell_command.haunted_ballroom - delay: 00:03:18 - service: shell_command.haunted_door2 - delay: 00:05:00 - service: shell_command.haunted_bells - delay: 00:02:18 - service: shell_command.haunted_laugh - delay: 00:06:36 - service: shell_command.haunted_chains sensor: - platform: rest name: Halloween Countdown resource: !secret WA_HALLOWEEN value_template: "{{ (value|replace(' days', '')) | int }}" unit_of_measurement: Days scan_interval: 43200 - platform: rest name: Christmas Countdown resource: !secret WA_XMAS value_template: "{{ (value|replace(' days', '')) | int }}" unit_of_measurement: Days scan_interval: 43200