Boas malta, como aqui ainda não vi nenhum tutorial para rádios no HA vou partilhar o meu.
O meu código é mais direccionado para comandos de voz no google home. Se tiverem mais do que 1 google home na app criam um grupo de altifalantes que vao aparecer automaticamente no HA para poderem ouvir a radio em simultâneo em todos os minis em perfeita sintonia.
script:
radio_comercial_sala:
alias: Radio Comercial sala
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.sala
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.sala
media_content_id: http://mcrscast1.mcr.iol.pt/comercial.mp3
media_content_type: 'audio/mp4'
radio_comercial_cozinha:
alias: Radio Comercial cozinha
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.cozinha
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.cozinha
media_content_id: http://mcrscast1.mcr.iol.pt/comercial.mp3
media_content_type: 'audio/mp4'
radio_comercial_ambiente:
alias: Radio Comercial ambiente
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.som_ambiente
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.som_ambiente
media_content_id: http://mcrscast1.mcr.iol.pt/comercial.mp3
media_content_type: 'audio/mp4'
rfm_sala:
alias: RFM sala
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.sala
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.sala
media_content_id: http://19553.live.streamtheworld.com:3690/RFM_SC
media_content_type: 'audio/mp4'
rfm_cozinha:
alias: RFM cozinha
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.cozinha
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.cozinha
media_content_id: http://19553.live.streamtheworld.com:3690/RFM_SC
media_content_type: 'audio/mp4'
rfm_ambiente:
alias: RFM ambiente
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.som_ambiente
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.som_ambiente
media_content_id: http://19553.live.streamtheworld.com:3690/RFM_SC
media_content_type: 'audio/mp4'
m80_sala:
alias: M80 sala
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.sala
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.sala
media_content_id: http://mcrscast.mcr.iol.pt/m80
media_content_type: 'audio/mp4'
m80_cozinha:
alias: M80 cozinha
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.cozinha
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.cozinha
media_content_id: http://mcrscast.mcr.iol.pt/m80
media_content_type: 'audio/mp4'
m80_ambiente:
alias: M80 ambiente
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.som_ambiente
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.som_ambiente
media_content_id: http://mcrscast.mcr.iol.pt/m80
media_content_type: 'audio/mp4'
vodafone_sala:
alias: Vodafone sala
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.sala
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.sala
media_content_id: http://195.23.102.207/vodafone
media_content_type: 'audio/mp4'
vodafone_cozinha:
alias: Vodafone cozinha
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.cozinha
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.cozinha
media_content_id: http://195.23.102.207/vodafone
media_content_type: 'audio/mp4'
vodafone_ambiente:
alias: Vodafone ambiente
sequence:
- service: media_player.volume_set
data:
entity_id: media_player.som_ambiente
volume_level: '0.20'
- service: media_player.play_media
data_template:
entity_id: media_player.som_ambiente
media_content_id: http://195.23.102.207/vodafone
media_content_type: 'audio/mp4'
radio_stop_sala:
alias: Parar rádio sala
sequence:
- service: media_player.media_stop
data:
entity_id: media_player.sala
radio_stop_cozinha:
alias: Parar rádio cozinha
sequence:
- service: media_player.media_stop
data:
entity_id: media_player.cozinha
radio_stop_som_ambiente:
alias: Parar rádio ambiente
sequence:
- service: media_player.media_stop
data:
entity_id: media_player.som_ambiente
###############################################################################
# #
# I N P U T _ B O O L E A N #
# #
###############################################################################
input_boolean:
ligar_radio:
name: Rádio Status
###############################################################################
# #
# I N P U T _ D A T E T I M E #
# #
###############################################################################
input_datetime:
radio_on:
name: "Ligar rádio às"
has_date: false
has_time: true
###############################################################################
# #
# I N P U T _ N U M B E R #
# #
###############################################################################
input_number:
sala_volume:
icon: mdi:volume-medium
name: Volume
min: 1
max: 100
step: 1
cozinha_volume:
icon: mdi:volume-medium
name: Volume
min: 1
max: 100
step: 1
ambiente_volume:
icon: mdi:volume-medium
name: Volume
min: 1
max: 100
step: 1
###############################################################################
# #
# S E N S O R #
# #
###############################################################################
sensor:
- platform: template
sensors:
sala_volume:
value_template: >
{% if is_state('media_player.sala', 'on') %}
{{ (state_attr('media_player.sala', 'volume_level') * 100) | int }}
{% endif %}
friendly_name: Receiver Volume Level
icon_template: mdi:volume-medium
- platform: template
sensors:
cozinha_volume:
value_template: >
{% if is_state('media_player.cozinha', 'on') %}
{{ (state_attr('media_player.cozinha', 'volume_level') * 100) | int }}
{% endif %}
friendly_name: Receiver Volume Level
icon_template: mdi:volume-medium
- platform: template
sensors:
ambiente_volume:
value_template: >
{% if is_state('media_player.som_ambiente', 'on') %}
{{ (state_attr('media_player.som_ambiente', 'volume_level') * 100) | int }}
{% endif %}
friendly_name: Receiver Volume Level
icon_template: mdi:volume-medium
###############################################################################
# #
# A U T O M A Ç Õ E S #
# #
###############################################################################
automation:
- alias: Ligar rádio
initial_state: true
trigger:
- platform: template
value_template: "{{ states('sensor.time') == (states.input_datetime.radio_on.attributes.timestamp | int | timestamp_custom('%H:%M', False)) }}"
condition:
condition: and
conditions:
- condition: state
entity_id: input_boolean.ligar_radio
state: 'on'
- condition: state
entity_id: device_tracker.bruno_melo
state: home
- condition: state
entity_id: 'binary_sensor.workday_sensor'
state: 'on'
action:
- service: media_player.volume_set
data:
entity_id: media_player.som_ambiente
volume_level: '0.15'
- service: media_player.play_media
data_template:
entity_id: media_player.som_ambiente
media_content_id: http://mcrscast1.mcr.iol.pt/comercial.mp3
media_content_type: 'audio/mp4'
- alias: Desligar rádio na ausencia
initial_state: true
trigger:
- platform: state
entity_id: device_tracker.bruno_melo
from: home
to: not_home
action:
- service: script.turn_on
entity_id:
- script.radio_stop_sala
- script.radio_stop_cozinha
#zigbee botao ikea controlo volume
# - alias: Diminuir som sala
# initial_state: true
# trigger:
# platform: state
# entity_id: sensor.0x000d6ffffebcd992_click
# to: 'off'
# action:
# - service: media_player.volume_set
# entity_id: media_player.sala
# data_template:
# volume_level: '{{ states.media_player.sala.attributes.volume_level - 0.06 }}'
# - alias: Aumentar som sala
# initial_state: true
# trigger:
# platform: state
# entity_id: sensor.0x000d6ffffebcd992_click
# to: 'on'
# action:
# - service: media_player.volume_set
# entity_id: media_player.sala
# data_template:
# volume_level: '{{ states.media_player.sala.attributes.volume_level + 0.06 }}'
# - alias: Diminuir som cozinha
# initial_state: true
# trigger:
# platform: state
# entity_id: sensor.0x000d6ffffebcd992_click
# to: 'off'
# action:
# - service: media_player.volume_set
# entity_id: media_player.cozinha
# data_template:
# volume_level: '{{ states.media_player.cozinha.attributes.volume_level - 0.06 }}'
# - alias: Aumentar som cozinha
# initial_state: true
# trigger:
# platform: state
# entity_id: sensor.0x000d6ffffebcd992_click
# to: 'on'
# action:
# - service: media_player.volume_set
# entity_id: media_player.cozinha
# data_template:
# volume_level: '{{ states.media_player.cozinha.attributes.volume_level + 0.06 }}'
# - alias: Ligar radio de manha
# initial_state: true
# trigger:
# - platform: time
# at: "07:15:00"
# condition:
# - condition: state
# entity_id: 'binary_sensor.workday_sensor'
# state: 'on'
# action:
# - service: media_player.volume_set
# data:
# entity_id: media_player.sala
# volume_level: '0.30'
# - service: media_player.play_media
# data_template:
# entity_id: media_player.sala
# media_content_id: http://mcrscast1.mcr.iol.pt/comercial.mp3
# media_content_type: 'audio/mp4'
- alias: "Sala set Volume"
initial_state: 'on'
trigger:
platform: state
entity_id: input_number.sala_volume
action:
- service: media_player.volume_set
data_template:
entity_id: media_player.sala
volume_level: >
{{states('input_number.sala_volume') | int / 100}}
- alias: "Sala Update Volume Slider"
initial_state: 'on'
trigger:
- platform: state
entity_id: sensor.sala_volume
- platform: homeassistant
event: start
condition:
condition: state
entity_id: media_player.sala # receiver must be on to set the volume, without this would throw error on startup
state: 'on'
action:
- delay:
seconds: 3
- service: input_number.set_value
data_template:
entity_id: input_number.sala_volume
value: '{{ trigger.to_state.state }}'
- alias: "Cozinha set Volume"
initial_state: 'on'
trigger:
platform: state
entity_id: input_number.cozinha_volume
action:
- service: media_player.volume_set
data_template:
entity_id: media_player.cozinha
volume_level: >
{{states('input_number.cozinha_volume') | int / 100}}
- alias: "cozinha Update Volume Slider"
initial_state: 'on'
trigger:
- platform: state
entity_id: sensor.cozinha_volume
- platform: homeassistant
event: start
condition:
condition: state
entity_id: media_player.cozinha # receiver must be on to set the volume, without this would throw error on startup
state: 'on'
action:
- delay:
seconds: 3
- service: input_number.set_value
data_template:
entity_id: input_number.cozinha_volume
value: '{{ trigger.to_state.state }}'
- alias: "Ambiente set Volume"
initial_state: 'on'
trigger:
platform: state
entity_id: input_number.ambiente_volume
action:
- service: media_player.volume_set
data_template:
entity_id: media_player.som_ambiente
volume_level: >
{{states('input_number.ambiente_volume') | int / 100}}
- alias: "ambiente Update Volume Slider"
initial_state: 'on'
trigger:
- platform: state
entity_id: sensor.som_ambiente_volume
- platform: homeassistant
event: start
condition:
condition: state
entity_id: media_player.som_ambiente # receiver must be on to set the volume, without this would throw error on startup
state: 'on'
action:
- delay:
seconds: 3
- service: input_number.set_value
data_template:
entity_id: input_number.ambiente_volume
value: '{{ trigger.to_state.state }}'
###############################################################################
# #
# G R O U P S #
# #
###############################################################################
#group:
# som_ambiente:
# name: som Ambiente
# entities:
# - media_player.cozinha
# - media_player.sala
Espero que vos seja util.