Sending commands to Yamaha AV Receiver

I’ve looked at the components page for Yamaha receivers, along with the play_media function - but what I want to do is to send a “Scene” command to my receiver. (A scene command is a combination of power on, input select, surround/DSP mode, and I think it will even do zone configuration - all with one button press.) Does anyone know if I can do this directly from HA (i.e. a network command - without messing with sending an IR command)? Better still, can I do it from Node-Red?

I’ve looked at the web interface but I’m still not figuring it out. If anyone wants to have a look…Yamaha AVR javascript commands.xml (113.3 KB)
Yamaha AVR web interface.xml (128.1 KB)

Did you ever find a solution for this? I just got a Yamaha Receiver that has support for scenes, so it would be great if Home Assistant could trigger those with a single command.

No and I kinda gave up on it. I’m using a BroadLink RM-Pro instead and it works well if you trick it. (The procedure for doing so is a little wonky. Let me know if you want the details.)

I did search for sending “Scene” commands as well.

The API command: HTTP://[ipaddress]/YamahaExtendedControl/v1/main/recallScene?num=2

work for me to recall scene 2 from web browser. Just change the number at the end of the API command to the scene number you are after.

I did add it to HA with the “RESTful Command”

Hope this helps.

Thanks for the response. Where did you find this command? If the API is available for me to download, I’d like to do so.

The command you posted didn’t work for me. I know have the IP address right; I can ping the receiver. Not sure if the API doesn’t apply to my unit or what.

Try going to your amp’s web interface, and using the F12 browser tools to see what URLs are called when you press the buttons.

If it doesn’t have a web interface, you’re probably out of luck.

I did use the HTTP simplified API, from the link to work out the command. The AV receiver I am using is RX-V685. Try if any command on page 3 in the pdf is working for you.

I am using the api command: http://[ipaddress]/YamahaExtendedControl/v1/main/getSceneInfo, to get the list of scenes. Check if this work for you. The reply looks like this for me:

{"response_code":0,"scene_list":[{"num":1,"text":"Bulsatcom\/TV","tag":0,"default_tag":1},{"num":2,"text":"Xbox One\/TV","tag":0,"default_tag":2},{"num":3,"text":"Radio Listening","tag":0,"default_tag":3},{"num":4,"text":"NET Audio Listening","tag":0,"default_tag":4},{"num":5,"text":"Bulsatcom->Projector","tag":0,"default_tag":5},{"num":6,"text":"Game Playing","tag":0,"default_tag":6},{"num":7,"text":"TV Viewing","tag":0,"default_tag":7},{"num":8,"text":"Media Server Listening","tag":0,"default_tag":8}]}

Are you comfortable with attemping to use python? If you are, then re-using the python methods might be simpler than trying to emulate HTTP calls.

I am currently getting set up to run the AppDaemon plugin for HASSIO. Once that is in place, HASS can call your scripts which you create for any purpose - typical useage would be calling devices in more complex ways than is possible using the standard HASS service calls (e.g. media_player.select_sound_mode).

As for the scripting… I just read through the python ‘component’ that HASS uses to integrate with Yamaha AVRs. It is this “rxv” import that provides the capability for controlling the AVR:

     import rxv

Discovering any Yamahas on your network, creating an object to be used to represent and control your receiver, is basically summed up like this:

     receivers = rxv.RXV(.ctrl_url, name).zone_controllers()

…once you have your receiver defined (as ‘self’), setting scenes looks like this:

     self.receiver.scene = scene

Again, I am definitely not advocating this approach unless you are comfortable with using/learning some Python :slight_smile:

For anyone still wondering the API spec is here (PDF) https://community-openhab-org.s3-eu-central-1.amazonaws.com/original/2X/9/931ea88e30cf0f05fcdee79816eb4d3f12dd4d70.pdf

There’s a great example of it’s use here: Yamaha AV-Receiver Subwoofer level control

And you can see your amplifier json data by navigating to:

http://your_avrx_ip_address/YamahaExtendedControl/v1/main/getStatus

Above API documentation is for MusicCast devices only. For older models which have a web and mobile app interfaces you can find partial documentation here:


But actually it is quite easy to check for all control commands by capturing packets that the mobile app is sending (e.g. on Android)

Some time ago this integration has been extended and a service yamaha.select_scene added. Check out the documentation of this integration:

@esev Maybe you have some input for this? @esev is about to have menu cursor integration.

He has pushed an improvement to the Yamaha rxv python library but HomeAssistant gets the library from PyPi which still host rxv 0.6.0 from September 2018.

I believe that’s due to rxv v0.7.0 is still in release candidate (rc2) state and once “wuub” one of developers who created this library is putting it as final/stable it will be automatically pushed thus integrated in HomeAssistant?

Then we can do cool stuff like @esev showed in

I’ve been waiting for the v0.7.0 release.

My HomeAssistant PR timed-out too.

1 Like

Just did a fresh install of HA on an RPI2B. The Yamaha Receiver integration is not available in the drop down list when trying to add the integration. Is there a way to make the integration appear? Or is there another way to add the integration ?

As per documentation:
To add a Yamaha Network Receiver to your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
media_player:
  - platform: yamaha

Done. Thanks.

I get a message stating the device does not have a Unique ID since the integration was manually added to the yaml file. Not sure if I need to worry about it.

Nothing to worry about. You can check the link for more info:
https://www.home-assistant.io/faq/unique_id/

The Yamaha integration has worked fine for months for my RX-A770 allowing me to use an automation to select a scene for my Sonos Port. However, yesterday I removed the integration and re-added it and it no longer returns scenes in the source list:

Screen Shot 2022-01-25 at 6.42.10 AM

They’re still there according the the receiver’s web interface. I did update the firmware on the receiver in the last couple of weeks but it was working up until I removed and re-added the Yamaha integration… Any idea on how I can get the scenes back for my automation?

Thanks in advance.

I don’t think the scene were ever exposed as a source list. Select Scene is only exposed as a service.
Check if the Yamaha platform did add the service and is available in the HA Developer Tools.
Also if you have renamed some of the scenes on you receiver, you should do the same in your service call inside the automation.