Custom Component: Yamaha (YNCA)

This is a custom integration for Home Assistant to support Yamaha AV receivers with the YNCA protocol (serial and network connections). I made it because the protocol which is used by the standard HA yamaha integration was unstable with my receiver (it just stops working at some point and needs a receiver powercycle)

I used this integration for years over serial and now for a bit over network (moved HA server further away) which has also been working fine.

The repo is available in HACS (search for YNCA) or can be installed manually

Excerpt from the README, check the Github link for the latest version

According to reports of users and info found on the internet the following AV receivers should be supported, there might be more. If your receiver works and is not in the list please post a message in the discussions.

HTR-4065, HTR-4071, HTR-6064, RX-A660, RX-A700, RX-A710, RX-A720, RX-A740, RX-A750, RX-A800, RX-A810, RX-A820, RX-A830, RX-A840, RX-A850, RX-A1000, RX-A1010, RX-A1020, RX-A1030, RX-A1040, RX-A2000, RX-A2010, RX-A2020, RX-A2070, RX-A3000, RX-A3010, RX-A3020, RX-A3030, RX-A3070, RX-S600D, RX-V475, RX-V477, RX-V481D, RX-V483, RX-V575, RX-V671, RX-V673, RX-V675, RX-V677, RX-V679, RX-V771, RX-V773, RX-V775, RX-V777, RX-V867, RX-V871, RX-V1067, RX-V1071, RX-V1085, RX-V2067, RX-V2071, RX-V3067, RX-V3071, TSR-700, TSR-7850

Features

  • Full UI support for adding devices
  • Connect through serial, IP or any URL handler supported by PySerial
  • Support for multiple zones
  • Power on/off
  • Volume and mute
  • Source selection
  • Sound mode selection
  • Show metadata like artist, album, song (depends on source)
  • Control playback (depends on source)
  • Activate scenes
  • Hide unused inputs per zone
  • Hide soundmodes
  • Several controllable settings (if supported by receiver):
    • CINEMA DSP 3D mode
    • Adaptive DRC
    • Compressed Music Enhancer
    • HDMI Out enable/disable
    • Initial volume
    • Max volume
    • Sleep timer
    • Speaker bass/treble (default disabled)
    • Headphone bass/treble (default disabled)
    • Surround Decoder

Hello.

I have added the integration within HACS, restarted HA, but when I go to the Home Assistant integrations menu, and press the Add button, I don’t see Yamaha (YNCA) in the list. Do I miss something?

Thanks.

Hmm, that should just work.

Maybe the browser is caching to good and you need to refresh the browser cache?
In most browsers this is done by reloading the dashboard with ctrl+F5 or holding the ctrl key while clicking the reload button of the browser.

If that does not help, please check the Home Assistant logs to see if there are any errors.

Thanks. Ctrl+F5 worked.
I have an RX-V475, and the connection succeeded. Turning the receiver on and off, adjusting the volume, muting, all works. But there are four other entities that don’t do anything when I press the button beside them (see attached picture: BD/DVD, NET, RADIO, TV). Can I do something about that?
1
I admit that I am a beginner in HA and I did not managed to build a dashboard yet, so I am using the default one.

LE: after a restart the main dashboard refreshed and I have access to few more controls. So everything is OK. Thanks.

The buttons “Main:BD/DVD” etc… are the same as the Scene buttons on the front of your receiver.
Pressing the button in Home Assistant should do the same as pressing the real button on the front.

If the real buttons on the front do work, but the buttons provided by the integration do not, then please submit an issue at the link below and provide the requested info so I can try and see what is wrong.

I had the same issue. I was able to add it with the debug console open on Chrome (f12). By default this does not use any cache.

@Michel - thanks a lot for this integration! The “standard one” for my RX-V637 was practically useless. Your give me s omany options and (just installed) it works instantly (at least main functions now)!
Thank You!

1 Like

@Michel … great integration! So much better then the legacy Yamaha platform (YAML) or the MusicCast integration. I’m using your integration with an RX-V481 receiver and I do have one question. In the list of features “Hide unused inputs per zone” is mentioned. I used to use this with the Yamaha platform by using the “source_ignore” option. How can I hide sources/inputs with your integration?

Thanks,
Arjen

You can change integration settings by clicking the Configure button on the integration card
image

That will guide you through some screens for general settings and settings per zone. Note that you will have to go through the whole sequence. The last screen has a Submit button and after submitting the integration will reload with the new settings.

Thank you so much! I guess I could have seen this myself :blush:

1 Like

Hi @Michel Thanks very much for providing this integration! I’ve been using the yaml version with my Yamaha RX-V675 since I started using Home Assistant, and it’s ‘done the job’ - however I’ve only just come across this integration, so had to test it out. It looks MUCH more useful than what I have been using so far!

One question - I know there is an existing issue/question regarding the use of ‘idle’ rather than ‘on’ as a state, which after reading through, I understand the complexity. I was hoping to use this integration with the Ampli-panel-card like i do with my existing yaml Yamaha integration, however due to the status of the main zone no longer being ‘on’, but ‘idle’, the ampli panel card does not see the receiver as being on. Using the old integration, this is how it shows:

So I’m trying to think of a way around that, so I can still use this card - I’m going to have a look at the cards code to see if there is any scope for this.

Secondly, could you explain how the volume level works please? I notice that, for example, when my receiver volume is set at -47.5dB, the YNCA integration shows:

media_player.rx_v675_main = volume_level of 0.3402061855670103
number.rx_v675_main_volume = -47.5

Under my YNCA integration ‘Controls’ section, the top volume slider shows as 34 and the bottom volume slider shows -47.5dB

Again, this seems to prevent me from using the ampli-panel-card as I can only specify a media_player entity, which contains the 0.34… volume_level, as opposed to the correct -47.5 as provided in the number.rx_v675_main_volume entity.

Oddly, the yaml integration of my yamaha provides a different and incorrect volume level of volume_level: 0.525 for some strange reason! Hopefully I can remove that old integration and use the one you have provided instead, if I can figure out how to continue to use the card I want, or alternatively I might have to create or use a different card.

It has been a while since I looked into the On vs Idle situation and don’t recall the details. Maybe the card could get updated to see Idle as On? Or maybe the other way around is easier, Off and Standby are Off and the rest is On.

So for the volume…
Volume_level in Home Assistant mediaplayer is always from 0 to 1. For some reason they show it multiplied by 100 in the frontend card. So the 34 in your screenshot is the rounded value 0.34 of volume_level in the mediaplayer.

The Yamaha receivers have a volume range from -80.5dB to 16.5dB so this integration maps that full range onto the 0 to 1 range for the mediaplayer volume_level in Home Assistant. There is a small catch as some receivers support setting a MAXVOL value. If that is supported then the range from -80.5 to MAXVOL is scaled to the 0 to 1 range. Not sure if the RX-V675 has configurable MAXVOL.

The range from 0 to 1 in Home Assistant is hard to use as it is not the range the receiver shows and the conversion is not trivial. So recently I added the “Volume” number entity which exposes the volume in the dB unit so it is the same as shown by the receiver.

I am not entirely sure why there would be a mismatch in volume from the official Yamaha integration and Yamaha (YNCA). But from a quick look at the code I get the impression that it scales a range of -100dB to 0dB to the HA range of 0 to 1 (which seems incorrect, but works as long as you stay below 0dB). But that would explain why the HA integration value is different from the YNCA one.

1 Like

Thanks very much for the explanation, that’s really helpful. I’ll see what i can do in regards to the card and raise the question with the code owner. Thanks again for this integration!

Hello!
I just want to add ONLY the “POWER button” to the dashboard. How can I do this?

I can only select the whole medi-control

You can add a button card to the dashboard and select the mediaplayer entity. By default pressing the button will toggle the mediaplayer on/off. You can tweak the behavior by changing the Tap Action.

1 Like

Hi MIchel, thanx for the work you’ve put into this.
Do you know if it’s possible to use the Yamaha CRX-N560? It’s in my network but when I’mI try to access it at its IP-address the integration can’t connect.
greetz Johan

All known working devices are in RX, HTR or TSR model ranges, I never got a report that a device from the CRX model range works, also a quick search on the internet did not give any results.

So I think it is very unlikely it supports the YNCA protocol that this integration uses.