tlk / beoplay-macos-remote-gui

Remote control B&O Beoplay loudspeakers from macOS
MIT License
16 stars 1 forks source link

Multiroom join/leave #13

Closed tlk closed 4 years ago

tlk commented 4 years ago

a "join multiroom experience" option would also be a good enhancement in the Sources. The Home Assistant has a reference to it, but I have not seen it working. Fyi, when you have multiple products configured for multiroom, a product can join another product that is streaming something by either physically acting on the product itself or a remote, or through the B&O App.

Originally posted by @mbolo01 in https://github.com/tlk/beoplay-macos-remote-gui/issues/4#issuecomment-553879382

tlk commented 4 years ago

Looks like this is very simple to implement.

From https://github.com/martonborzak/ha-beoplay/blob/c032c5502cfd389c396aa7bc2fbd15585ac09b47/beoplay/__init__.py#L179-L183

POST /BeoZone/Zone/Device/OneWayJoin
DELETE /BeoZone/Zone/ActiveSources/primaryExperience

Not sure if the two corresponding buttons fits well under "Sources", or if they would fit in better with the play/pause/forward/backward buttons.

mbolo01 commented 4 years ago

I'm not sure about the difference between the two POSTs to be honest, but I can test if you make them available.

IMO, they should be part of the Sources (see comments below). I also wonder if the join feature only appears on products that are configured for beolink. You only have one device don't you? Maybe reason why you are asking about the placement.

In real life, "Touch to Join" is the first option in the source list when you press the "..." in the B&O App now playing screen of the device you are controlling (see image below).

In a beolink/multiroom ecosystem, devices that have physical controls (play, stop, forward, backward) or have a physical remote attached to them, pressing the play button attempts to join another playing device (an experience), or, if none is present on the network, resumes the latest played local source (TBC). If several multiroom devices are up in the network and are playing their own local sources, the device you are physically controlling will join the device which was the latest to advertise a status change, e.g. playing a new source or track (TBC). Double pressing the physical play button leaves the joined experience to resume local source, double pressing again joins back an experience, etc....

I can do more rigorous testing to capture the exact logic here.

IMG_4403

tlk commented 4 years ago

A "Touch to join" menu item is now displayed at the top of the sources menu. I also added a "Leave" menu item there for you to test it - not sure where it fits in well with the current app layout.

mbolo01 commented 4 years ago

Bravo! I selected a device and was able to join and leave another device's experience! I also tested with two devices playing their own content: as I press the join on the third device, it joins experiences on each of the two devices consecutively. I would rename the options to "Join Multiroom" & "Leave Multiroom" Well done again!

tlk commented 4 years ago

Great and thanks again for the feedback!