RoonLabs music player


The Roon integration allows you to control RoonLabs music players from Home Assistant.

This integration uses Roon Core, a Roon application that runs on a machine on your network. Via Roon Core, Home Assistant can control all the Roon music players on your network.

Configuration

  1. From the Home Assistant front-end, go to Settings > Devices & Services. Select the Roon integration. Then, select Configure.
  2. Home Assistant will then try to find your Roon Core - if it is successful it will display Authorize HomeAssistant in Roon. Select Submit and skip to step 4.
  3. If your Roon Core is not automatically found, enter the Hostname or IP address for the Roon Core machine when requested and select Submit.
  4. Home Assistant will then contact your Roon Core and ask to be authorized. You will need to enable this extension in the Room Application. Go to Settings and then Extensions. There, you will see an entry for Home Assistant with a button next to it. Select Enable.
  5. Roon core will then provide Home Assistant with the details of your media players.
  6. In Home Assistant you can then pick an area for each of your music players, and add them to Home Assistant.

Services

Service media_player.play_media

Roon uses a path based on the roon browser hierarchy to specify which media to play. You can find this by using the media browser, or by following the examples below. If roon can’t follow the path you will find an error in the log that will show which part of the path roon could not follow, and the possibilities at that point.

Service data attribute Optional Description
entity_id yes Target a specific media player. To target all media players, use all.
media_content_id no A path to specify the media you want to play, see examples below.
media_content_type no Only music is supported

For example to play the album Harvest by Neil Young you should set media_content_id to Library/Artists/Neil Young/Harvest and to play BBC Radio 4 you would set media_content_id to My Live Radio/BBC Radio 4

Service roon.transfer

Transfer playback from one player to another.

Service data attribute Optional Description
entity_id yes id of the source player.
transfer_id no id of the destination player.

Roon endpoint volume control via Home Assistant

For media players that are not fully integrated into roon, it is possible to use Home Assistant to implement a volume control service. This allows the native Roon apps to change the volume of an endpoint via automation in Home Assistant.

For example if you have an amplifier where the volume can be controlled by Home Assistant (perhaps via an integration, or using an IR Blaster) you can have the roon apps use these to change volume.

Configuration in Roon

The first step is to tell Roon to use Home Assistant to make volume changes. You do this in the roon app. First select the zone you wish to control; click on the cog item to enter Zone Setup, and then select Device Setup.

Roon volume options

One of the options shown is Volume Control. Alongside the normal roon options (such as DSP Volume) you will see a series of options called Home Assistant: Zone Name. Choose the option that matches the zone you are configuring.

The Roon volume control will now show plus and minus buttons rather than a volume control slider.

Automation in Home Assistant

Clicking on the plus and minus buttons in Roon can now trigger an automation in the volume control entity matching the media_player in Home Assistant.

In this autimation you can use Home Assistant services to provide volume_up and volume_down.

Here is an example automation using an IR blaster to control media_player_study

alias: Roon Study Volume
description: ""
trigger:
  - platform: state
    entity_id:
      - event.study_roon_volume
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: event.study_roon_volume
            attribute: event_type
            state: volume_up
        sequence:
          - service: remote.send_command
            data:
              num_repeats: 1
              delay_secs: 0.4
              hold_secs: 0
              device: amplifier
              command: volume_up
            target:
              entity_id: remote.ir_blaster
      - conditions:
          - condition: state
            entity_id: event.study_roon_volume
            attribute: event_type
            state: volume_down
        sequence:
          - service: remote.send_command
            data:
              num_repeats: 1
              delay_secs: 0.4
              hold_secs: 0
              device: amplifier
              command: volume_down
            target:
              entity_id: remote.ir_blaster
mode: queued