Radio Content Player

Alexa Echo Dot of een Google Nest Mini kan diverse content afspelen, variërend van muziek van muziekdiensten zoals TuneIn, Amazon Music, etc. tot TTS meldingen of zelfs audio-bestanden.

Via input_select helpers kan een keuze gemaakt worden voor het af te spelen station, met een input_select voor de speaker en met een input_number voor het volume. Vervolgens wordt een script gebruikt om de radio te spelen.

De input_number radio_volume dient als ‘Helper’ aangemaakt te worden. Deze wordt later gebruikt om het volume voor de speaker te zetten. De naam dient ‘radio_volume‘ te zijn. Gebruik de volgende gegevens voor een input_number helper in configurations.yaml (of in een input_numbers !include). Een voorbeeldbestand ‘input_number.yaml‘:

radio_volume:
  icon: mdi:radio
  name: radio_volume
  initial: .2
  min: 0
  max: 1
  step: .1

De input_selects kunnen in de configuration.yaml geplaatst worden of in een bestand waarnaar wordt verwezen via ‘!include’. Gebruik de namen ‘radio_source‘ en ‘radio_speaker‘ . Een voorbeeldbestand ‘input-select.yaml‘:

radio_source:
  name: "Select station:"
  options:
    - Radio 538
    - Sublime
    - Sublime Smooth
    - Radio 10
    - Q-Music
    - 3FM
    - Veronica
    - Sky Radio
    - Arrow Classic Rock
    - BSJ
    - Tijd
    - Weer
    - Nieuws
    - Goodnight
  initial: Sublime
  icon: mdi:radio

radio_speaker:
  name: "Select speaker:"
  options:
    - Huiskamer
    - Keuken
    - Kantoor
    - Boven
  initial: Keuken
  icon: mdi:speaker-wireless

Een script in scripts.yaml geeft duidelijkheid hoe de helpers gebruikt gaan worden.

Deze is voor Alexa Echo speakers:

alexa_content_player:
    alias: Start Playing
    icon: mdi:play
    sequence:
      - service: media_player.volume_set
        data_template:
          entity_id: >
            {% if is_state("input_select.radio_speaker", "Huiskamer") %} media_player.huiskamer
            {% elif is_state("input_select.radio_speaker", "Keuken") %} media_player.keuken
            {% elif is_state("input_select.radio_speaker", "Kantoor") %} media_player.kantoor
            {% elif is_state("input_select.radio_speaker", "Boven") %} media_player.boven
            {% endif %}
          volume_level: '{{ states("input_number.radio_volume") }}'
      - service: media_player.play_media
        data_template:
          entity_id: >
            {% if is_state("input_select.radio_speaker", "Huiskamer") %} media_player.huiskamer
            {% elif is_state("input_select.radio_speaker", "Keuken") %} media_player.keuken
            {% elif is_state("input_select.radio_speaker", "Kantoor") %} media_player.kantoor
            {% elif is_state("input_select.radio_speaker", "Boven") %} media_player.boven
            {% endif %}
          media_content_id: >
            {% if is_state("input_select.radio_source", "Radio 538") %} Play Station Radio 538 from TuneIn
            {% elif is_state("input_select.radio_source", "Sublime") %} Play Station Sublime from TuneIn
            {% elif is_state("input_select.radio_source", "Radio 10") %} Play Station Radio 10 from TuneIn
            {% elif is_state("input_select.radio_source", "Q-Music") %} Play Station QMusic from TuneIn
            {% elif is_state("input_select.radio_source", "3FM") %} Play Station 3FM from TuneIn
            {% elif is_state("input_select.radio_source", "Veronica") %} Play Station Veronica from TuneIn
            {% elif is_state("input_select.radio_source", "Sky Radio") %} Play Station Skyradio from TuneIn
            {% elif is_state("input_select.radio_source", "Arrow Classic Rock") %} Play Station Arrow Classic Rock from TuneIn
            {% endif %}
          media_content_type: 'custom'

en deze is voor Google Mini speakers:

radio_content_player:
    alias: Start Playing
    icon: mdi:play
    sequence:
      - service: media_player.volume_set
        data_template:
          entity_id: >
            {% if is_state("input_select.radio_speaker", "Huiskamer") %} media_player.huiskamer
            {% elif is_state("input_select.radio_speaker", "Keuken") %} media_player.keuken
            {% elif is_state("input_select.radio_speaker", "Kantoor") %} media_player.kantoor
            {% elif is_state("input_select.radio_speaker", "Boven") %} media_player.boven
            {% endif %}
          volume_level: '{{ states("input_number.radio_volume") }}'
      - service: media_player.play_media
        data_template:
          entity_id: >
            {% if is_state("input_select.radio_speaker", "Huiskamer") %} media_player.huiskamer
            {% elif is_state("input_select.radio_speaker", "Keuken") %} media_player.keuken
            {% elif is_state("input_select.radio_speaker", "Kantoor") %} media_player.kantoor
            {% elif is_state("input_select.radio_speaker", "Boven") %} media_player.boven
            {% endif %}
          media_content_id: >
            {% if is_state("input_select.radio_source", "Radio 538") %} http://playerservices.streamtheworld.com/api/livestream-redirect/RADIO538
            {% elif is_state("input_select.radio_source","Sublime") %} https://playerservices.streamtheworld.com/api/livestream-redirect/SUBLIME.mp3
            {% elif is_state("input_select.radio_source","Radio 10") %} http://stream.radio10.nl/radio10
            {% elif is_state("input_select.radio_source","Q-Music") %} https://stream.qmusic.nl/qmusic/mp3
            {% elif is_state("input_select.radio_source","3FM") %} https://icecast.omroep.nl/3fm-sb-mp3
            {% elif is_state("input_select.radio_source","Veronica") %} http://playerservices.streamtheworld.com/api/livestream-redirect/VERONICA.mp3
            {% elif is_state("input_select.radio_source","Sky Radio") %} http://playerservices.streamtheworld.com/api/livestream-redirect/SKYRADIO.mp3
            {% elif is_state("input_select.radio_source","Arrow Classic Rock") %} https://stream.gal.io/arrow
            {% elif is_state("input_select.radio_source","Sublime Smooth") %} https://stream.gal.io/arrow
            {% endif %}
          media_content_type: 'music'

Een extra stop-button kan handig zijn om de media weer te stoppen. Gebruik daarvoor de volgende code in scripts:

radio_stop_player:
  alias: Stop Playing
  icon: mdi:stop
  sequence:
    - service: media_player.media_stop
      data_template:
        entity_id: >
          {% if is_state("input_select.radio_speaker", "Huiskamer") %} media_player.huiskamer
          {% elif is_state("input_select.radio_speaker", "Keuken") %} media_player.keuken
          {% elif is_state("input_select.radio_speaker", "Kantoor") %} media_player.kantoor
          {% elif is_state("input_select.radio_speaker", "Boven") %} media_player.boven
          {% endif %}

Via ‘Ontwikkelhulpmiddelen‘ kunnen de input_number, input_select en het script geladen worden, of start Home Assistant opnieuw op.

De entiteiten kunnen daarna in een Dashboard card geplaatst worden. Bijvoorbeeld:

en hierna kan de Radio Content Player gebruikt worden.