2020-09-29 14:09:24 +00:00
###############################################################################
# @author : Jeffrey Stone
# @date : 09/25/2020
# @package : Halloween
# @description : Config used to cause a haunting
#
# This package requires that you have some way to determine thats its Halloween
# You can do this in any way you want, but two options are:
#
# 1. Enable the Google Calendar (https://www.home-assistant.io/integrations/calendar.google/) and setup a Holiday Calendar
# 2. Use Wolfram Alpha to create a sensor that tells you how many days until Halloween. I have one at the bottom of this package.
2020-09-29 21:56:57 +00:00
# @CCOSTAN did a video on setting it up -> https://www.youtube.com/watch?_continue=0time&v=ulBeifhWBxY&feature=emb_logo
2020-09-29 14:09:24 +00:00
#
###############################################################################
# Here is a lovelace card that can be used with this package:
# type: entities
# entities:
# - entity: sensor.halloween_countdown
# icon: 'mdi:ghost'
# - entity: automation.this_is_halloween
# - entity: input_boolean.this_is_halloween
# - entity: input_datetime.halloween_show
# - entity: input_boolean.haunted_sounds
# - entity: input_boolean.scary_sounds
# title: Halloween
# show_header_toggle: false
# state_color: true
###############################################################################
############################
# input_booleans (https://www.home-assistant.io/integrations/input_boolean/)
#
input_boolean :
# Main switch for the effects. This acts as both the on switch and the kill switch
this_is_halloween :
name : This is Halloween
# Enables Haunted Sounds. If on, basic haunted house effect happens
haunted_sounds :
name : Haunted Sounds
# Enables More Intense Haunted Sounds. If on, scarier haunted house effect happens
scary_sounds :
name : Intense Hauntings
############################
# input_datetime (https://www.home-assistant.io/integrations/input_datetime/)
#
# This is simply so we can schedule the time the effect happens in the UI.
input_datetime :
halloween_show :
name : Halloween Show
2021-10-29 12:22:20 +00:00
has_date : true
2020-09-29 14:09:24 +00:00
has_time : true
2021-10-29 12:22:20 +00:00
################################
# 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:
2020-09-29 14:09:24 +00:00
############################
# Automations (https://www.home-assistant.io/integrations/automation/)
#
automation :
# This is Main Halloween Trigger. The purpose of this is to turn on the show at the time set in the input_datetime.halloween_show.
#
- id : this_is_halloween
alias : This is Halloween
initial_state : true
trigger :
# When the current time matches input_datetime.halloween_show, light this candle
2021-10-29 12:22:20 +00:00
- platform : time
at : input_datetime.halloween_show
2020-09-29 14:09:24 +00:00
action :
- service : input_boolean.turn_on
2021-11-12 03:10:34 +00:00
entity_id : input_boolean.this_is_halloween
- delay : '02:00:00'
2021-10-29 12:22:20 +00:00
- service : input_boolean.turn_off
entity_id : input_boolean.this_is_halloween
2020-09-29 14:09:24 +00:00
2021-08-15 20:47:35 +00:00
- id : operation haunted house
alias : Operation Haunted House
2020-09-29 14:09:24 +00:00
trigger :
2021-08-15 20:47:35 +00:00
# If this_is_halloween switch is turned on then we start the show.
2020-09-29 14:09:24 +00:00
- platform : state
entity_id : input_boolean.this_is_halloween
to : 'on'
2021-08-15 20:47:35 +00:00
from : 'off'
id : start
# If this_is_halloween switch is turned off then we stop the show.
2020-09-29 14:09:24 +00:00
- platform : state
entity_id : input_boolean.this_is_halloween
2021-08-15 20:47:35 +00:00
id : stop
from : 'on'
2020-09-29 14:09:24 +00:00
to : 'off'
action :
2021-08-15 20:47:35 +00:00
# Choose provides decision logic
- choose :
# Start the show
- conditions :
- condition : trigger
id : start
sequence :
2021-11-12 03:10:34 +00:00
- service : script.local_audio
data :
media : "/media/haunted_sounds/This_is_Halloween.mp3"
volume : .5
speaker : 'media_player.ha_blue'
- delay : '00:04:00'
2021-08-15 20:47:35 +00:00
- service : script.turn_on
target :
entity_id : script.haunted_house
# Stop the show
- conditions :
- condition : trigger
id : stop
sequence :
# And finally we turn off the haunted house script so no more sounds play.
- service : script.turn_off
target :
entity_id : script.haunted_house
2021-10-29 12:22:20 +00:00
- service : scene.turn_on
2021-08-15 20:47:35 +00:00
target :
2021-10-29 12:22:20 +00:00
entity_id : scene.before_haunting
2021-08-15 20:47:35 +00:00
default : [ ]
initial_state : true
mode : single
2020-09-29 14:09:24 +00:00
script :
# This is where the magic happens. This is the script that handles all the haunted sounds.
#
haunted_house :
sequence :
2021-10-29 12:22:20 +00:00
- repeat :
while :
- condition : state
entity_id : input_boolean.this_is_halloween
state : 'on'
sequence :
# Take a snap shot of current state
- 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
# 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, 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 : >
{% if is_state('input_boolean.scary_sounds', 'on') %}
script.more_haunted_sounds
{% else %}
script.haunted_sounds
{% endif %}
# Then delay again, and when that is done start over.
- delay : '00:0{{ range(2,5) | random | int }}:00'
2020-09-29 14:09:24 +00:00
# Update this script with your youtube sounds.
# Each time this script is called it will play a random sound
more_haunted_sounds :
sequence :
2020-10-05 15:59:03 +00:00
- service : script.youtube_audio # This script is in the audio.yaml in the packages folder.
2021-10-29 12:22:20 +00:00
data :
speaker : >
{{ [ 'media_player.kitchen_display' ,
'media_player.upstairs_speaker' ,
'media_player.master_bedroom_speaker' ,
'media_player.croft_speaker' ,
2021-11-12 03:10:34 +00:00
'media_player.ha_blue' ,
2021-10-29 12:22:20 +00:00
'media_player.skylars_bedroom_speaker' ,
'media_player.theater'
] | random }}
2020-09-29 14:09:24 +00:00
volume : .5
# I try to ensure each of the following links is 60 seconds or less.
media : >
{{- [
2021-10-29 12:22:20 +00:00
"https://www.youtube.com/watch?v=-s04sbIViJQ" ,
"https://www.youtube.com/watch?v=vF681VBX_oo" ,
"https://www.youtube.com/watch?v=WQVnOSj8DWI" ,
"https://www.youtube.com/watch?v=DaOnw_kCcYU" ,
"https://www.youtube.com/watch?v=E9VFB_0nSbA" ,
"https://www.youtube.com/watch?v=_A1yK0YU6U0" ,
"https://www.youtube.com/watch?v=AQ1SE4tLICg" ,
"https://www.youtube.com/watch?v=SsVj21c9isA" ,
"https://www.youtube.com/watch?v=nKltUaCxZPc" ,
"https://www.youtube.com/watch?v=G3JlB47fzV4" ,
"https://www.youtube.com/watch?v=_24O4vb-KWk" ,
"https://www.youtube.com/watch?v=oeLcHIpTlHU"
2020-09-29 14:09:24 +00:00
] | random -}}
2021-10-31 00:17:34 +00:00
2021-11-12 03:10:34 +00:00
#Update this script with your local sounds.
#Each time this script is called it will play a random sound
2020-09-29 14:09:24 +00:00
haunted_sounds :
sequence :
# Ensure that haunted sounds are allowed. Comment out if not needed.
- condition : state
entity_id : input_boolean.haunted_sounds
state : 'on'
2020-10-05 15:59:03 +00:00
- service : script.local_audio # This script is in the audio.yaml in the packages folder.
2021-10-29 12:22:20 +00:00
data :
speaker : >
{{ [ 'media_player.kitchen_display' ,
'media_player.upstairs_speaker' ,
'media_player.master_bedroom_speaker' ,
'media_player.croft_speaker' ,
2021-11-12 03:10:34 +00:00
'media_player.ha_blue' ,
2021-10-29 12:22:20 +00:00
'media_player.skylars_bedroom_speaker' ,
'media_player.theater'
] | random }}
2020-09-29 14:09:24 +00:00
volume : .5
# I try to ensure each of the following links is 60 seconds or less.
media : >
{{- [
"/media/haunted_sounds/haunted_guest_welcome.mp3" ,
"/media/haunted_sounds/ChainsRattling.mp3" ,
"/media/haunted_sounds/CreakingDoorSpooky.mp3" ,
"/media/haunted_sounds/DemonHaunting.mp3" ,
"/media/haunted_sounds/Evil_Laugh_2.mp3" ,
"/media/haunted_sounds/Evillaugh.mp3" ,
"/media/haunted_sounds/Scary.mp3" ,
"/media/haunted_sounds/raven.mp3" ,
"/media/haunted_sounds/EvilLaughCackle.mp3" ,
"/media/haunted_sounds/Haunted-CatScream.mp3" ,
"/media/haunted_sounds/Haunted-DragonRoaring.mp3" ,
"/media/haunted_sounds/Haunted-Heart.mp3" ,
"/media/haunted_sounds/Haunted-ScaryScream.mp3" ,
"/media/haunted_sounds/Haunted-TRexRoar.mp3" ,
"/media/haunted_sounds/Haunted-TollingBell.mp3" ,
"/media/haunted_sounds/Haunted-Vocals.mp3"
] | random -}}
2021-10-29 12:22:20 +00:00
2021-11-12 03:10:34 +00:00
# haunted_sounds_git:
# sequence:
# # Ensure that haunted sounds are allowed. Comment out if not needed.
# - condition: state
# entity_id: input_boolean.haunted_sounds
# state: 'on'
# - service: script.youtube_audio # This script is in the audio.yaml in the packages folder.
# data:
# speaker: >
# {{ ['media_player.kitchen_display',
# 'media_player.upstairs_speaker',
# 'media_player.master_bedroom_speaker',
# 'media_player.croft_speaker',
# 'media_player.ha_blue',
# 'media_player.skylars_bedroom_speaker',
# 'media_player.theater'
# ] | random }}
# volume: .5
# # I try to ensure each of the following links is 60 seconds or less.
# media: >
# {{ [
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/EvilLaughCackle.mp3'.
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/ChainsRattling.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/CreakingDoorSpooky.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/Evil_Laugh_2.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/Evillaugh.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/Haunted-CatScream.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/Haunted-DragonRoaring.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/Haunted-Heart.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/Haunted-ScaryScream.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/Haunted-TollingBell.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/Scary.mp3',
# 'https://raw.githubusercontent.com/thejeffreystone/home-assistant-configuration/master/config/media/haunted_sounds/raven.mp3'
# ] | random }}
2021-10-31 00:17:34 +00:00
2021-10-29 12:22:20 +00:00
################################
# 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:
2021-11-12 03:10:34 +00:00
# speaker: media_player.ha_blue
2021-10-29 12:22:20 +00:00
# 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:
2021-11-12 03:10:34 +00:00
# speaker: media_player.ha_blue
2021-10-29 12:22:20 +00:00
# volume: .5
# media: https://www.youtube.com/watch?v=pVeX4C9B1Lk
#
2021-11-12 03:10:34 +00:00
# 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 }}
2020-09-29 14:09:24 +00:00
2020-09-29 19:12:07 +00:00
# sensor:
# # Halloween Countdown Sensor using Wolfram Alpha. See the note at the top for a link to how to set it up
# - platform: rest
# name: Halloween Countdown
# resource: !secret WA_HALLOWEEN
# value_template: "{{ (value|replace(' days', '')) | int }}"
# unit_of_measurement: Days
2020-11-07 16:20:26 +00:00
# scan_interval: 43200