{%- set event=states.calendar.holidays_in_united_states.attributes.message %}
{%- if event == 'Halloween' %}
true
{%- endif -%}
# If all conditions are true, then lets turn this thing on.
action:
- service:input_boolean.turn_on
entity_id:input_boolean.this_is_halloween
# This is the show. Breaking this up like this has two benefits:
# 1. You can test the haunted house piece without kicking having to be on Halloween
# 2. It gives you the ability to kill the show if things go horribly wrong...
#
- id:operation_haunted_house_on
alias:Operation Haunted House On
initial_state:true
# If this_is_halloween switch is turned on then we start the show.
trigger:
- platform:state
entity_id:input_boolean.this_is_halloween
to:'on'
action:
# First up we play This i sHalloween from Nightmare Before Christmas. Change this to what ever audio you want, or comment this one out.
- service:script.local_audio
data_template:
media:"/media/disney/This_is_Halloween.mp3"
volume:.5
# And turn on the haunted House script.
- service:script.turn_on
entity_id:script.haunted_house
# Haunted House Kill Switch. If the this_is_halloween siwtch is turned off, the stop everything.
- id:operation_haunted_house_off
alias:Operation Haunted House Off
initial_state:true
trigger:
- platform:state
entity_id:input_boolean.this_is_halloween
to:'off'
action:
# This stops the media player. Besure to change it to match your mecia player
- service:media_player.media_stop
entity_id:media_player.ha_speaker
# this kills the local_audio script if its running.
- service:script.turn_off
entity_id:script.local_audio
# This kills the youtube audio script if it is running.
- service:script.turn_off
entity_id:script.youtube_audio
# And finally we turn off the haunted house script so no more sounds play.
- service:script.turn_off
entity_id:script.haunted_house
script:
# This is where the magic happens. This is the script that handles all the haunted sounds.
#
haunted_house:
sequence:
# Ensure that haunted sounds are allowed. If it is, proceed.
- condition:state
entity_id:input_boolean.haunted_sounds
state:'on'
# First off we have a 5 min delay. This is to ensure that "this is Halloween" that played at the start is finished befoore we hear the first sound.
- delay:'00:05:00'
# After the delay, play a random selection from our haunted sounds.
- service:script.haunted_sounds
# Then another delay. This one is a random delay between 2 and 5 minutes. A delay of at least 2 minutes ensures the previous effect is done before the next one.
- delay:'00:0{{ range(2,5) | random | int }}:00'
# After the delay, play a random haunted sounds. This time though, if we have scary sounds on we play one from there, if not, back to haunted sounds.
- service:>
{% if states.input_boolean.scary_sounds.state == 'on' %}
script.more_haunted_sounds
{% else %}
script.haunted_sounds
{% endif %}
# Then we start the same cycle over. And continue for a max of 55 minutes.
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:script.haunted_sounds
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:>
{% if states.input_boolean.scary_sounds.state == 'on' %}
script.more_haunted_sounds
{% else %}
script.haunted_sounds
{% endif %}
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:script.haunted_sounds
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:>
{% if states.input_boolean.scary_sounds.state == 'on' %}
script.more_haunted_sounds
{% else %}
script.haunted_sounds
{% endif %}
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:script.haunted_sounds
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:>
{% if states.input_boolean.scary_sounds.state == 'on' %}
script.more_haunted_sounds
{% else %}
script.haunted_sounds
{% endif %}
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:script.haunted_sounds
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:>
{% if states.input_boolean.scary_sounds.state == 'on' %}
script.more_haunted_sounds
{% else %}
script.haunted_sounds
{% endif %}
- delay:'00:0{{ range(2,5) | random | int }}:00'
- service:script.haunted_sounds
# Then we hit a final delay
- delay:'00:05:00'
# And we turn it off, which activates the kill switch to make sure all is shutdown.
- service:input_boolean.turn_off
entity_id:input_boolean.this_is_halloween
# Update this script with your youtube sounds.
# Each time this script is called it will play a random sound
more_haunted_sounds:
sequence:
- service:script.youtube_audio
data_template:
volume:.5
# I try to ensure each of the following links is 60 seconds or less.
media:>
{{- [
"https://www.youtube.com/watch?v=pVeX4C9B1Lk",
"https://www.youtube.com/watch?v=S_hKvncbL9w",
"https://www.youtube.com/watch?v=zB-Y5OswETY",
"https://www.youtube.com/watch?v=x5tmmRZYq4s",
"https://www.youtube.com/watch?v=rxxC7RJ2b_E",
"https://www.youtube.com/watch?v=Zhd8V9cDUsA",
"https://www.youtube.com/watch?v=jmSI-jf6nLo",
"https://www.youtube.com/watch?v=szxC3E7m9dk",
"https://www.youtube.com/watch?v=TaejWf5NIfI",
"https://www.youtube.com/watch?v=orDBUrmK9vU",
"https://www.youtube.com/watch?v=nKltUaCxZPc",
"https://www.youtube.com/watch?v=_A1yK0YU6U0",
"https://www.youtube.com/watch?v=AQ1SE4tLIC"
]| random -}}
# Update this script with your local sounds.
# Each time this script is called it will play a random sound
haunted_sounds:
sequence:
# Ensure that haunted sounds are allowed. Comment out if not needed.
- condition:state
entity_id:input_boolean.haunted_sounds
state:'on'
- service:script.local_audio
data_template:
volume:.5
# I try to ensure each of the following links is 60 seconds or less.