This custom component implements a media player entity and a remote entity for Home Assistant to allow for integration with Emotiva processors. It's written for the Emotiva XMC-1 but now also been tested with XMC-2 and RMC-1 and works generally fine. There are some limitiations with the XMC-2 and RMC-1 where the published API doesn't support some functions on these devices. This includes the ability to switch between speaker presets/Dirac etc., where the API only supports the XMC-1 preset design and Emotiva have no plans to update the API in this area for the Gen 3 processors.
The integration is a Local Push integration - i.e. it subscribes to notification of changes to the processor, so doesn't need to periodically poll the processor for its state.
The preferred installation approach is via Home Assistant Community Store - aka HACS. The repo is installable as a Custom Repo via HACS.
If you want to download the integration manually, create a new folder called emotiva under your custom_components folder in your config folder. If the custom_components folder doesn't exist, create it first. Once created, download the files and folders from the github repo into this new emotiva folder.
Once downloaded either via HACS or manually, restart your Home Assistant server.
Configuration is done through the Home Assistant UI. Once you're installed the integration, go into your Integrations (under Settings, Devices & Services), select Add Integration, and choose the Emotiva Processor integration.
This will display the configuration page.
Checking the "Search for Emotiva Processors" option will ask the integration to search for processors during the setup process. This uses udp broadcast, and so will only find processors on the same subnet as your Home Assistant server. If discovery fails, or if your processors is on a different subnet, you can enter details manually.
You can enter the details of your processor manually by ticking "Enter details manually", and completing the fields. At minumum, you must enter the IP Address and the Name of your processor. Unless you know otherwise, you can likely leave the Control Port, Notification Port and Protocol to their default values.
When you select Submit, the configuration will discover the processor(s) and setup the components in Home Assistant. It will create one device, two entities and a service.
A device will be created with the same name as your processor - e.g. XMC-1.
A media player entity will be created with a default entity_id of media_player.emotivaprocessor.
You can control power state, volume, muting, source and sound mode from the media player. You can also use this entity from any card for media player.
The remote entity allows you to control power, but is primarily included so that you can send commands directly to the Emotiva processor using the remote.send_command service.
The command must be entered as command_name,value e.g. power_on,0. The details for the commands can be found in Emotiva's API documentation. More simply though, you can use the emotiva.send_command service, which provides a drop down of the available options.
The integration provides a service which allows you to send any command to the processor, similar to the remote.send_command service. However, this service provides you with a dropdown list of all of the available commands, and formats the command string for you.
The integration tracks the the state of volume, power, mute, zone2 power, source, mode, audio_input, audio_bitstream, video_input & video_format on the processor and creates and maintains attributes on the media_player.emotivaprocessor entity.
You could then use these attributes to trigger an automation based on a change of state, for example when the source is changed to "Oppo"
You can also Configure the entity to track additional notifications from the processor. In your Integration page, select Configure, and enter a list of comma seperated notifications for which the integration should create additional state attributes.