2021 Halloween Update
This commit is contained in:
parent
7b372d204b
commit
0fd30f22d5
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -50,9 +50,14 @@ input_boolean:
|
||||||
input_datetime:
|
input_datetime:
|
||||||
halloween_show:
|
halloween_show:
|
||||||
name: Halloween Show
|
name: Halloween Show
|
||||||
has_date: false
|
has_date: true
|
||||||
has_time: true
|
has_time: true
|
||||||
|
|
||||||
|
################################
|
||||||
|
# Media extractor is used for playing youtube audio. For more info ->https://www.home-assistant.io/integrations/media_extractor/
|
||||||
|
#
|
||||||
|
# If you have this enabled in another package or in your configuration.yaml comment out the line below
|
||||||
|
#media_extractor:
|
||||||
|
|
||||||
############################
|
############################
|
||||||
# Automations (https://www.home-assistant.io/integrations/automation/)
|
# Automations (https://www.home-assistant.io/integrations/automation/)
|
||||||
|
@ -66,66 +71,16 @@ automation:
|
||||||
initial_state: true
|
initial_state: true
|
||||||
trigger:
|
trigger:
|
||||||
# When the current time matches input_datetime.halloween_show, light this candle
|
# When the current time matches input_datetime.halloween_show, light this candle
|
||||||
- platform: template
|
- platform: time
|
||||||
value_template: "{{ states('sensor.time') == (state_attr('input_datetime.halloween_show', 'timestamp') | int | timestamp_custom('%H:%M', False)) }}"
|
at: input_datetime.halloween_show
|
||||||
condition:
|
|
||||||
# But make sure the day is Halloween.
|
|
||||||
- condition: template
|
|
||||||
value_template: >
|
|
||||||
{%- set event=states.calendar.holidays_in_united_states.attributes.message %}
|
|
||||||
{%- if event == 'Halloween' and states.calendar.holidays_in_united_states.state == 'on'%}
|
|
||||||
true
|
|
||||||
{%- endif -%}
|
|
||||||
# If all conditions are true, then lets turn this thing on.
|
|
||||||
action:
|
action:
|
||||||
- service: input_boolean.turn_on
|
- service: input_boolean.turn_on
|
||||||
entity_id: input_boolean.this_is_halloween
|
entity_id: input_boolean.this_is_halloween
|
||||||
|
- delay: '01:00:00'
|
||||||
|
- service: input_boolean.turn_off
|
||||||
|
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 is Halloween from Nightmare Before Christmas. Change this to what ever audio you want, or comment this one out.
|
|
||||||
# - service: script.local_audio
|
|
||||||
# data:
|
|
||||||
# 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 switch 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 music 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
|
|
||||||
|
|
||||||
- id: operation haunted house
|
- id: operation haunted house
|
||||||
alias: Operation Haunted House
|
alias: Operation Haunted House
|
||||||
|
@ -150,12 +105,6 @@ automation:
|
||||||
- condition: trigger
|
- condition: trigger
|
||||||
id: start
|
id: start
|
||||||
sequence:
|
sequence:
|
||||||
# First up we play This is Halloween from Nightmare Before Christmas. Change this to what ever audio you want, or comment this one out.
|
|
||||||
- service: script.local_audio
|
|
||||||
data:
|
|
||||||
media: "/media/disney/This_is_Halloween.mp3"
|
|
||||||
volume: .5
|
|
||||||
# And turn on the haunted House script.
|
|
||||||
- service: script.turn_on
|
- service: script.turn_on
|
||||||
target:
|
target:
|
||||||
entity_id: script.haunted_house
|
entity_id: script.haunted_house
|
||||||
|
@ -168,10 +117,9 @@ automation:
|
||||||
- service: script.turn_off
|
- service: script.turn_off
|
||||||
target:
|
target:
|
||||||
entity_id: script.haunted_house
|
entity_id: script.haunted_house
|
||||||
# This stops the media player. Besure to change it to match your music player
|
- service: scene.turn_on
|
||||||
- service: media_player.media_stop
|
|
||||||
target:
|
target:
|
||||||
entity_id: media_player.ha_speaker
|
entity_id: scene.before_haunting
|
||||||
default: []
|
default: []
|
||||||
initial_state: true
|
initial_state: true
|
||||||
mode: single
|
mode: single
|
||||||
|
@ -183,67 +131,53 @@ script:
|
||||||
#
|
#
|
||||||
haunted_house:
|
haunted_house:
|
||||||
sequence:
|
sequence:
|
||||||
# Ensure that haunted sounds are allowed. If it is, proceed.
|
- repeat:
|
||||||
|
while:
|
||||||
- condition: state
|
- condition: state
|
||||||
entity_id: input_boolean.haunted_sounds
|
entity_id: input_boolean.this_is_halloween
|
||||||
state: 'on'
|
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.
|
sequence:
|
||||||
- delay: '00:05:00'
|
# Take a snap shot of current state
|
||||||
# After the delay, play a random selection from our haunted sounds.
|
- service: scene.create
|
||||||
|
data:
|
||||||
|
scene_id: before_haunting
|
||||||
|
snapshot_entities:
|
||||||
|
- light.front_door_lamp
|
||||||
|
- light.living_room_lamp
|
||||||
|
- light.living_room_tower_lamp
|
||||||
|
- light.skylars_dresser_lamp
|
||||||
|
- light.kitchen_sink
|
||||||
|
- light.master_bedroom_tower_lamp
|
||||||
|
- light.jeff_lamp
|
||||||
|
# Change a random Random Light
|
||||||
|
- service: light.toggle
|
||||||
|
data:
|
||||||
|
entity_id: >
|
||||||
|
{{['light.front_door_lamp',
|
||||||
|
'light.living_room_lamp',
|
||||||
|
'light.living_room_tower_lamp',
|
||||||
|
'light.skylars_dresser_lamp',
|
||||||
|
'light.kitchen_sink',
|
||||||
|
'light.master_bedroom_tower_lamp',
|
||||||
|
'light.jeff_lamp']
|
||||||
|
| random}}
|
||||||
|
# Start playing a random selection from our haunted sounds.
|
||||||
- service: script.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.
|
# 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'
|
- 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.
|
# After the delay, change the state of the lights back to what they were
|
||||||
|
- service: scene.turn_on
|
||||||
|
target:
|
||||||
|
entity_id: scene.before_haunting
|
||||||
|
# play more random haunted sounds. This time though, if we have scary sounds on we play one from there, if not, back to haunted sounds.
|
||||||
- service: >
|
- service: >
|
||||||
{% if states.input_boolean.scary_sounds.state == 'on' %}
|
{% if is_state('input_boolean.scary_sounds', 'on') %}
|
||||||
script.more_haunted_sounds
|
script.more_haunted_sounds
|
||||||
{% else %}
|
{% else %}
|
||||||
script.haunted_sounds
|
script.haunted_sounds
|
||||||
{% endif %}
|
{% endif %}
|
||||||
# Then we start the same cycle over. And continue for a max of 55 minutes.
|
# Then delay again, and when that is done start over.
|
||||||
- delay: '00:0{{ range(2,5) | random | int }}:00'
|
- 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.
|
# Update this script with your youtube sounds.
|
||||||
|
@ -251,23 +185,32 @@ script:
|
||||||
more_haunted_sounds:
|
more_haunted_sounds:
|
||||||
sequence:
|
sequence:
|
||||||
- service: script.youtube_audio # This script is in the audio.yaml in the packages folder.
|
- service: script.youtube_audio # This script is in the audio.yaml in the packages folder.
|
||||||
data_template:
|
data:
|
||||||
|
speaker: >
|
||||||
|
{{ ['media_player.kitchen_display',
|
||||||
|
'media_player.upstairs_speaker',
|
||||||
|
'media_player.master_bedroom_speaker',
|
||||||
|
'media_player.croft_speaker',
|
||||||
|
'media_player.ha_speaker',
|
||||||
|
'media_player.skylars_bedroom_speaker',
|
||||||
|
'media_player.theater'
|
||||||
|
] | random }}
|
||||||
volume: .5
|
volume: .5
|
||||||
# I try to ensure each of the following links is 60 seconds or less.
|
# I try to ensure each of the following links is 60 seconds or less.
|
||||||
media: >
|
media: >
|
||||||
{{- [
|
{{- [
|
||||||
"https://www.youtube.com/watch?v=pVeX4C9B1Lk",
|
"https://www.youtube.com/watch?v=-s04sbIViJQ",
|
||||||
"https://www.youtube.com/watch?v=S_hKvncbL9w",
|
"https://www.youtube.com/watch?v=vF681VBX_oo",
|
||||||
"https://www.youtube.com/watch?v=zB-Y5OswETY",
|
"https://www.youtube.com/watch?v=WQVnOSj8DWI",
|
||||||
"https://www.youtube.com/watch?v=x5tmmRZYq4s",
|
"https://www.youtube.com/watch?v=DaOnw_kCcYU",
|
||||||
"https://www.youtube.com/watch?v=rxxC7RJ2b_E",
|
"https://www.youtube.com/watch?v=E9VFB_0nSbA",
|
||||||
"https://www.youtube.com/watch?v=Zhd8V9cDUsA",
|
"https://www.youtube.com/watch?v=_A1yK0YU6U0",
|
||||||
"https://www.youtube.com/watch?v=jmSI-jf6nLo",
|
"https://www.youtube.com/watch?v=AQ1SE4tLICg",
|
||||||
"https://www.youtube.com/watch?v=szxC3E7m9dk",
|
"https://www.youtube.com/watch?v=SsVj21c9isA",
|
||||||
"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=nKltUaCxZPc",
|
||||||
"https://www.youtube.com/watch?v=_A1yK0YU6U0"
|
"https://www.youtube.com/watch?v=G3JlB47fzV4",
|
||||||
|
"https://www.youtube.com/watch?v=_24O4vb-KWk",
|
||||||
|
"https://www.youtube.com/watch?v=oeLcHIpTlHU"
|
||||||
] | random -}}
|
] | random -}}
|
||||||
|
|
||||||
# Update this script with your local sounds.
|
# Update this script with your local sounds.
|
||||||
|
@ -279,7 +222,16 @@ script:
|
||||||
entity_id: input_boolean.haunted_sounds
|
entity_id: input_boolean.haunted_sounds
|
||||||
state: 'on'
|
state: 'on'
|
||||||
- service: script.local_audio # This script is in the audio.yaml in the packages folder.
|
- service: script.local_audio # This script is in the audio.yaml in the packages folder.
|
||||||
data_template:
|
data:
|
||||||
|
speaker: >
|
||||||
|
{{ ['media_player.kitchen_display',
|
||||||
|
'media_player.upstairs_speaker',
|
||||||
|
'media_player.master_bedroom_speaker',
|
||||||
|
'media_player.croft_speaker',
|
||||||
|
'media_player.ha_speaker',
|
||||||
|
'media_player.skylars_bedroom_speaker',
|
||||||
|
'media_player.theater'
|
||||||
|
] | random }}
|
||||||
volume: .5
|
volume: .5
|
||||||
# I try to ensure each of the following links is 60 seconds or less.
|
# I try to ensure each of the following links is 60 seconds or less.
|
||||||
media: >
|
media: >
|
||||||
|
@ -302,6 +254,97 @@ script:
|
||||||
"/media/haunted_sounds/Haunted-Vocals.mp3"
|
"/media/haunted_sounds/Haunted-Vocals.mp3"
|
||||||
] | random -}}
|
] | random -}}
|
||||||
|
|
||||||
|
################################
|
||||||
|
# local_audio is meant to be used to play audio in your media folder. (https://www.home-assistant.io/integrations/media_source/)
|
||||||
|
#
|
||||||
|
# Before using make sure you update as needed.
|
||||||
|
#
|
||||||
|
# To call this using in the action section of your automation:
|
||||||
|
#
|
||||||
|
# - service: script.local_audio
|
||||||
|
# data:
|
||||||
|
# speaker: media_player.ha_speaker
|
||||||
|
# volume: .5
|
||||||
|
# media: /media/local_audio.mp3
|
||||||
|
#
|
||||||
|
# local_audio:
|
||||||
|
# sequence:
|
||||||
|
# # Ensure that audible notifications are allowed. Comment out if not needed.
|
||||||
|
# - condition: state
|
||||||
|
# entity_id: input_boolean.audible_notifications
|
||||||
|
# state: 'on'
|
||||||
|
# # Ensure the family is home. If you are using a group to track the family, or a person just update as needed. Comment out if not needed.
|
||||||
|
# - condition: state
|
||||||
|
# entity_id: sensor.family_status
|
||||||
|
# state: Home
|
||||||
|
# # Update the media player with the one you want to use
|
||||||
|
# - service: media_player.turn_on
|
||||||
|
# data:
|
||||||
|
# entity_id: >
|
||||||
|
# {{ speaker }}
|
||||||
|
# # This sets the voume via a parameter when the script is called, and should be a value between .1 and 1.0
|
||||||
|
# - service: media_player.volume_set
|
||||||
|
# data:
|
||||||
|
# entity_id: >
|
||||||
|
# {{ speaker }}
|
||||||
|
# volume_level: >
|
||||||
|
# {{ volume }}
|
||||||
|
# - delay: 00:00:05
|
||||||
|
# # This tells it to play the media and is set when the script is called.
|
||||||
|
# - service: media_player.play_media
|
||||||
|
# data:
|
||||||
|
# entity_id: >
|
||||||
|
# {{ speaker }}
|
||||||
|
# media_content_type: "music"
|
||||||
|
# media_content_id: >
|
||||||
|
# {{ media }}
|
||||||
|
|
||||||
|
|
||||||
|
################################
|
||||||
|
# youtube_audio is meant to be used to play audio from well youtube.
|
||||||
|
# This scrtip requires the media_extractor integration.
|
||||||
|
#
|
||||||
|
# Before using make sure you update as needed.
|
||||||
|
#
|
||||||
|
# To call this using in the action section of your automation:
|
||||||
|
#
|
||||||
|
# - service: script.youtube_audio
|
||||||
|
# data:
|
||||||
|
# speaker: media_player.ha_speaker
|
||||||
|
# volume: .5
|
||||||
|
# media: https://www.youtube.com/watch?v=pVeX4C9B1Lk
|
||||||
|
#
|
||||||
|
youtube_audio:
|
||||||
|
sequence:
|
||||||
|
# Ensure that audible notifications are allowed. Comment out if not needed.
|
||||||
|
- condition: state
|
||||||
|
entity_id: input_boolean.audible_notifications
|
||||||
|
state: 'on'
|
||||||
|
# Ensure the family is home. If you are using a group to track the family, or a person just update as needed. Comment out if not needed.
|
||||||
|
- condition: state
|
||||||
|
entity_id: sensor.family_status
|
||||||
|
state: Home
|
||||||
|
# Update the media player with the one you want to use
|
||||||
|
- service: media_player.turn_on
|
||||||
|
data:
|
||||||
|
entity_id: >
|
||||||
|
{{ speaker }}
|
||||||
|
# This sets the voume via a parameter when the script is called, and should be a value between .1 and 1.0
|
||||||
|
- service: media_player.volume_set
|
||||||
|
data:
|
||||||
|
entity_id: >
|
||||||
|
{{ speaker }}
|
||||||
|
volume_level: >
|
||||||
|
{{ volume }}
|
||||||
|
# This tells it to play the media and is set when the script is called.
|
||||||
|
- service: media_extractor.play_media
|
||||||
|
data:
|
||||||
|
entity_id: >
|
||||||
|
{{ speaker }}
|
||||||
|
media_content_type: video/youtube
|
||||||
|
media_content_id: >
|
||||||
|
{{ media }}
|
||||||
|
|
||||||
# sensor:
|
# sensor:
|
||||||
# # Halloween Countdown Sensor using Wolfram Alpha. See the note at the top for a link to how to set it up
|
# # Halloween Countdown Sensor using Wolfram Alpha. See the note at the top for a link to how to set it up
|
||||||
# - platform: rest
|
# - platform: rest
|
||||||
|
|
Loading…
Reference in New Issue