Yamaha MusicCast binding revival

After 1h power outage, i don’t see any messages in log from musiccast binding.

@martiniman

  1. I could not trace back what caused the crash of the binding
  2. Clear Voice: that is a separate API call which is not implemented
  3. Bass Boost: There is program bass_booster which can be used via the channel SoundProgram
  4. 3D Sound: 3D surround is a separate API call which is not implemented
  5. Too bad there are no error messages. However, the job is restarted by using the remote. It is already better than before.

Will put those things on the backlog.

Anyone tried this binding on a RX-A2A? I need to replace my old yamaha but need a reliable binding for basic features (On/Off, switch input, volume …) on the new one

Hi Uwe, not tried it but looking at the specs, basic functionality as you mention, should be possible.
This one is more advanced than my RX-D485 and those are available on mine.

Only way is to try unfortunately…

Thx Lennert, the RX-A2A is very similar to RX-V6A (for which @bastian already confirmed basic functionality) so chances are good. But as you said, I’ll need to find out … or get the RX-V6A :wink:

Yamaha RX Icons:
yamaha-15 yamaha-16
sound copy-22sound copy-23

More icons here

1 Like

Cool! Might update mine

V6A is still working perfectly fine with the binding.
I am not using Musiccast functionality however, as I don’t have any additional speakers for that.

PS: “Drei Stücke, Obelix!” / “Wieso - das sind doch drei Stücke?” :smiley:

1 Like

Hello everyone,

I found this thread while researching how to control my Yamaha Multicast receiver and 6 wx-10 speakers. I have read through the Yamaha Basic & Advance API manuals and have managed to control all the devices individually (play, stop, mute, volume, etc). However, I can’t figure out how to start playing all speakers at once with the current stream from my Universal Media Server.

Currently all 6 speakers are linked (Speaker 1 +5 rooms) and play fine with the MusiCast app. Do I have to send individual http requests for each of the 6 speakers to turn them on and play? Is there a master play, volume, etc? I saw that there is a StartDistribution API but if figured that was for setting up the links?

It has to be simple and I am overlooking something. Any advise would be appreciated in pointing me in the right direction.

BTW, I didn’t mean to hijack the thread but after my googling you people seem to be the only ones that are discussing the subject.

Thanks in advance.

Hi,
I don’t know your coding skills but you can have a look at the code of this binding.
In general you need to create a group at one device which is then the server. Assign the clients to the server so the server knows where to stream to.
Have a look at SetServerInfo and StartDistribution

I haven’t touched this for a while. Perhaps time to compile it with the 3.2 RC.

1 Like

That would be amazing to have it ready to go with 3.2!

Just compiled it with 3.3 snapshot and uploaded it to Github.
Also added it to the Market Place.
Did some basic testing and it keeps on working for me. As always, make sure you have a backup.

Anyone working with MainUI with my binding? For the Presets the dropdown is nicely filled because of the binding reads the presets.
But for Input I had to set the list myself in Sitemaps but in MainUI this is not going well
afbeelding
Or do I need to update the binding to include all the options? Which in turn will create a huge list.
Or I’m doing something wrong, again a lot to learn

I have a New Years present for everyone here: Pull request got accepted.
If read correctly, it will be part of OH3.3
Now others can work on it as well.

6 Likes

I turn off and on power of YAS408, and no more messages in log.
I can send commands, but no feedback from device.
Some logs if it helps:

2022-02-01 19:06:46.933 [INFO ] [cast.internal.YamahaMusiccastHandler] - YXC - Start Keep Alive UDP events (5 minutes - Yamaha Гостиная) 
2022-02-01 19:06:46.955 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: 
java.lang.NullPointerException: null
	at org.openhab.binding.yamahamusiccast.internal.YamahaMusiccastHandler.fillOptionsForMCLink(YamahaMusiccastHandler.java:871) ~[?:?]
	at org.openhab.binding.yamahamusiccast.internal.YamahaMusiccastHandler.generalHousekeeping(YamahaMusiccastHandler.java:410) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
	at java.lang.Thread.run(Thread.java:829) [?:?]

...
2022-02-01 21:09:57.895 [WARN ] [cast.internal.YamahaMusiccastHandler] - IO Exception - DeviceInfo - java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: Connect Timeout

Looks like your device is not responding in time or at all.
The first lines in the log are functions which I created in the binding.
Does the app work?

Yes, Misiccast iOS App work.
Binding still can send commands, but not receive.
Restart binding from openhab console bring back binding to life.

But my second Yamaha, which did not turn off, continued to work normally with binding

I’m just switching from the old 0.79 to 0.84 and experiencing some issues with device linking. I try to link three devices as follows. However, they are not getting linked:

Linking:

Yamaha_Livingroom_Power.sendCommand(ON)
Yamaha_Kitchen_Power.sendCommand(ON)
Yamaha_Bedroom_Power.sendCommand(ON)
Yamaha_Livingroom_MCLinkStatus.sendCommand("server")
Yamaha_Kitchen_MCLinkStatus.sendCommand("client")
Yamaha_Bedroom_MCLinkStatus.sendCommand("client")
Thread::sleep(300)
Yamaha_Kitchen_MCLinkStatus.sendCommand("192.168.1.11***main")
Thread::sleep(300)
Yamaha_Bedroom_MCLinkStatus.sendCommand("192.168.1.11***main")

(192.168.1.11 = Yamaha_Livingroom_Power)

Unlinking:

Yamaha_Livingroom_MCLinkStatus.sendCommand("")
Yamaha_Kitchen_MCLinkStatus.sendCommand("")
Yamaha_Bedroom_MCLinkStatus.sendCommand("")

What am I doing wrong? To be honest, documentation on linking seems quite sparse. Maybe you could add a full example for linking and unlinking? It also doesn’t become apparent what the different linking commands do exactly as they seem ambiguous. For example, for what do I tell the server to be the server when this will be automatically done when a device connects?

1 Like

Right Things text config with no errors is:

Bridge yamahamusiccast:bridge:virtual "YXC Bridge" {
    Thing device Living "YXC Living" [host="1.2.3.4", defaultAfterMCLink="none", syncVolume=false]
}

Items:

Switch YamahaPower "YamahaPower" {channel="yamahamusiccast:device:virtual:Living:main#power"}
Switch YamahaMute  "YamahaMute " {channel="yamahamusiccast:device:virtual:Living:main#mute"}

Received a second musiccast device and trying to link those two, but without luck so far. Can anyone please share a working example?

I tried different rules but none of them worked. This was my last test:

sendCommand(Yamaha_Living_MCLinkStatus, "Server")
sendCommand(Yamaha_Kitchen_MCLinkStatus, "192.168.1.1***main")
sendCommand(Yamaha_Kitchen_Input, "mc_link")

192.168.1.1 is the IP from the Living Speaker. Is there anything wrong with that?

Any hint would be welcome. Thanks in advance.