Yamaha MusicCast™
Elixir implementation of Yamaha’s MusicCast™ multiroom audio solution.
Documentation
See the online documentation for more information.
Installation
Add :musiccast
to your list of dependencies in mix.exs
:
def deps do
[{:musiccast, "~> 0.2"}]
end
Usage
MusicCast devices are automatically discovered and added to MusicCast.Network
, you can list all registered devices as follow:
iex> [{pid, device_id}] = MusicCast.which_devices()
[{#PID<0.200.0>, "00A0DEDCF73E"}]
You can control a device using the MusicCast.Network.Entity
module:
iex> MusicCast.Network.Entity.set_input(pid, "spotify")
:ok
iex> MusicCast.Network.Entity.playback_play(pid)
:ok
iex> MusicCast.Network.Entity.set_volume(pid, 50)
:ok
You also have the possibility to subscribe to status update notifications from a specific device:
iex> MusicCast.subscribe(device_id)
:ok
iex> flush()
{:musiccast, :update, "00A0DEDCF73E", %{playback: %{input: "spotify", playback: "pause"}}
{:musiccast, :update, "00A0DEDCF73E", %{playback: %{playback: "play"}}
{:musiccast, :update, "00A0DEDCF73E", %{status: %{volume: 50}}