Reproductor de radio online en Home Assistant

Buenas a todos! Dada la aceptación que ha tenido en el grupo de telegram, vamos a ver como controlar un reproductor de radio y música.

En mi caso tengo instalados varios Google Home, Chromecast y Chromecast audio por casa, por lo que puedo reproducir radio en cualquiera de ellos.

Reproductor de radio

Nota: El reproductor está sacado del community de Home Assistant, pero se ha adaptado para mostrar emisoras locales.

Para crear el reproductor necesitaremos crear dos input selects, un script y un grupo. Además también podemos crear un reproductor universal para reproducir en todos los reproductores a la vez.

Primero empezamos por los input_select. En el fichero configuration.yaml añadimos dos grupos: uno para las emisoras y otro para nuestros dispositivos:

input_select:
  radio_station:
  name: 'Emisora:'
  options:
    - Europa FM
    - Cadena Dial
    - Los 40
    - Kiss FM
    - Radio Marca Barcelona
    - Cadena Ser
chromecast_radio:
  name: 'Altavoz:'
  options:
    - Comedor
    - TV
    - Lavabo
    - Todos
  initial: Todos
  icon: mdi:speaker-wireless
Los nombres de los repdoductores no tienen que ser los reales, son nombres descriptivos.
Ahora vamos a crear el script. Este será realmente el encargado de lanzar la reproducción al reproductor que toque.
Aprovecharemos los templates para filtrar el reproductor y la emisora. Añadimos al fichero scripts.yaml:
#################################
#                               #
# Script de Radio Online        #
#                               #
#################################
radio_online:
  alias: Reproducir radio en chromecast
  sequence:
    - service: media_player.volume_set
      data_template:
        entity_id: >
          {% if is_state("input_select.chromecast_radio", "Comedor") %} media_player.googlehome
          {% elif is_state("input_select.chromecast_radio", "TV") %} media_player.chromecast_tele
          {% elif is_state("input_select.chromecast_radio", "Lavabo") %} media_player.lavabocast
          {% elif is_state("input_select.chromecast_radio", "Todos") %} media_player.all_players
          {% endif %}
        volume_level: '0.35'
    - service: media_player.play_media
      data_template:
        entity_id: >
          {% if is_state("input_select.chromecast_radio", "Comedor") %} media_player.googlehome
          {% elif is_state("input_select.chromecast_radio", "TV") %} media_player.chromecast_tele
          {% elif is_state("input_select.chromecast_radio", "Lavabo") %} media_player.lavabocast
          {% elif is_state("input_select.chromecast_radio", "Todos") %} media_player.all_players
          {% endif %}
        media_content_id: >
          {% if is_state("input_select.radio_station", "Europa FM") %} http://212.129.60.86:9968/;
          {% elif is_state("input_select.radio_station", "Cadena Dial") %} http://20043.live.streamtheworld.com:3690/CADENADIAL_SC?DIST=TuneIn&TGT=TuneIn&maxServers=2
          {% elif is_state("input_select.radio_station", "Los 40") %} http://19983.live.streamtheworld.com:3690/LOS40_SC?DIST=TuneIn&TGT=TuneIn&maxServers=2&tdtok=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImtpZCI6ImZTeXA4In0.eyJpc3MiOiJ0aXNydiIsInN1YiI6I
          {% elif is_state("input_select.radio_station", "Kiss FM") %} http://kissfm.kissfmradio.cires21.com/kissfm.mp3
          {% elif is_state("input_select.radio_station", "Radio Marca Barcelona") %} http://radioweb.radiomarcabarcelona.com:9000/stream
          {% elif is_state("input_select.radio_station", "Cadena Ser") %} http://18973.live.streamtheworld.com/SER_BARCELONA_SC?DIST=TuneIn&TGT=TuneIn&maxServers=2
          {% endif %}
        media_content_type: 'audio/mp4'
Lo que hacemos con este script es, en funcion del reproductor y la emisora seleccionadas, ejecutar dos servicios. Primero le ponemos volumen a 0.35 (para poner un volumen inicial) y segundo, pedir al chromecast que reproduzca el streaming de la url de la radio online.
Podemos ampliar las emisoras facilmente. Para ello añadiremos  el nombre de la emisora en el input_select y en el script haremos el match del nombre de la emisora con la url del streaming. En mi caso las estoy sacando de la web de TuneIn, aunque serviría cualquier otro metodo. He creado una hoja de google para que podamos ir añadiendo las emisoras y compartirlas entre todos.
Por último, crearemos un grupo para mostrar la radio en el frontend. Para ello en el fichero groups.yaml, crearemos un card con los dos input select y el script:
radio:
  name: Radio
  entities:
  - input_select.radio_station
  - input_select.chromecast_radio
  - script.radio_online
y lo añadimos en cualquiera de nuestras vistas con group.radio
Para que el script aparezca con icono, dentro de customize.yaml podemos personalizarlo:
script.radio_online:
  friendly_name: Reproducir
  icon: mdi:play
Y con esto, podemos seleccionar la radio y enviarla a cada uno de nuestros reproductores.
Os ha funcionado la radio?
Dejad vuestros comentarios en la web o en el grupo de telegram de @Domology .
Y recordad añadir las emisoras que utilicéis a la hoja de google compartida.
Saludos y Happy automation!

También te podría gustar...

Deja un comentario