home-assistant-configuration/config/packages/audio.yaml

213 lines
7.9 KiB
YAML
Raw Normal View History

###############################################################################
# @author : Jeffrey Stone
# @date : 04/11/2020
# @package : Audio
# @description : Audio related configuration.
# @notes : This package assumes you are running version .115.0 or greater.
#
###############################################################################
################################
# Media Player section for any media players you want to define. Most of these are setup via the integrations flow in the UI,
# but if not you may need to modify the following section.
2020-09-29 19:12:07 +00:00
# For more info on Media Players visit https://www.home-assistant.io/integrations/media_player/
# MODIFY this section as needed or comment it out completely if not needed.
2020-11-07 16:20:26 +00:00
# media_player:
# - platform: yamaha
# host: 192.168.7.152
################################
# 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:
################################
# Scripts to handle audio
script:
################################
# 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:
# 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
entity_id: media_player.ha_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: media_player.ha_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
entity_id: media_player.ha_speaker
data:
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:
# 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
entity_id: media_player.ha_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_template:
entity_id: media_player.ha_speaker
volume_level: >
{{ volume }}
# This tells it to play the media and is set when the script is called.
- service: media_extractor.play_media
entity_id: media_player.ha_speaker
data_template:
media_content_type: video/youtube
media_content_id: >
{{ media }}
2021-05-24 15:51:58 +00:00
automation:
- id: e1cb2fdc-0423-11eb-adc1-0242ac120002
alias: Set Room Presence
mode: restart
trigger:
- platform: state
entity_id:
- binary_sensor.master_bedroom_motion_occupancy
- binary_sensor.kitchen_motion_occupancy
- binary_sensor.living_room_motion_occupancy
- binary_sensor.skylar_bedroom_motion_occupancy
- binary_sensor.croft_occupancy
- binary_sensor.back_door_motion
from: 'off'
to: 'on'
- platform: state
entity_id:
- media_player.kitchen_echo
- media_player.living_room_echo
- media_player.skylar_s_bedroom
attribute: last_called
to: True
action:
- service: mqtt.publish
data:
topic: house/presence/current_room
payload: >
{% set room = trigger.to_state.attributes.friendly_name %}
{% if room == 'Kitchen Echo' %}
kitchen
{% elif room == 'Living Room Echo' %}
main
{% elif room == 'Skylar\'s Bedroom' %}
skylar_bedroom
{%- elif is_state('media_player.theater_tv', 'on') %}
theater
{% elif room == 'Kitchen Motion occupancy' or room == 'Back Door Motion'%}
kitchen
{% elif room == 'Master Bedroom Motion occupancy' %}
master_bedroom
{% elif room == 'Living Room Motion occupancy' or room == 'Living Room Echo' %}
main
{% elif room == 'Croft Occupancy' %}
croft
{% elif room == 'Skylar Bedroom Motion occupancy' or room == 'Skylar\'s Bedroom' %}
skylar_bedroom
{% else %}
main
{% endif %}
retain: true
sensor:
2021-05-24 15:51:58 +00:00
- platform: mqtt
name: "Room Presence"
state_topic: "house/presence/current_room"
- platform: template
sensors:
room_audio:
friendly_name: "Room Audio"
value_template: >-
{%- if is_state('media_player.theater_tv', 'on') %}
theater
{% else %}
{% set sensor_count = expand('group.occupancy') | selectattr('state', 'eq', 'on') | list | count %}
{% if sensor_count >= 1 %}
{% for sensor in expand('group.occupancy') %}
{% if as_timestamp(sensor.last_changed) == as_timestamp(expand('group.occupancy') | selectattr('state', 'eq', 'on') | map(attribute='last_changed') | max) %}
{% if is_state('input_boolean.audible_notifications', 'on') %}
{% if sensor.name == 'Kitchen Motion Occupancy' %}
kitchen
2021-05-24 15:51:58 +00:00
{% elif sensor.name == 'Master Bedroom Motion Occupancy' %}
master_bedroom
{% else %}
main
{%- endif %}
{% else %}
{% if sensor.name == 'Croft Occupancy' %}
croft
{% else %}
kitchen
{%- endif %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endif %}
alexa_audio:
friendly_name: "Alexa Audio"
value_template: >-
2021-05-24 15:51:58 +00:00
{%- if is_state('sensor.last_alexa', 'media_player.living_room_echo') %}
main
2021-05-24 15:51:58 +00:00
{% elif is_state('sensor.last_alexa', 'media_player.kitchen_echo') %}
kitchen
2021-05-24 15:51:58 +00:00
{% elif is_state('sensor.last_alexa', 'media_player.skylar_s_bedroom') %}
skylar_bedroom
{% else %}
main
{%- endif %}
last_alexa:
value_template: >
{{ states.media_player | selectattr('attributes.last_called','eq',True) | map(attribute='entity_id') | first }}