A .Net HEOS CLI client using Reactive Extensions.
Packages availble for .NETFramework 4.5 and .NETStandard 1.6
https://www.nuget.org/packages/DreamNucleus.Heos/
Install-Package DreamNucleus.Heos
// create a telnet client with a list of IP addresses
var telnetClient = new SimpleTelnetClient("192.168.1.43", "192.168.1.45", "192.168.1.47");
// create a HEOS client
var heosClient = new HeosClient(telnetClient, CancellationToken.None);
// subscribe to all events
heosClient.EventObservable.Subscribe(o =>
{
switch (o)
{
case PlayerStateChangedEvent e:
Console.WriteLine($"Player {e.PlayerId}: state = {e.State}");
break;
case PlayerNowPlayingProgressEvent e:
Console.WriteLine($"Player {e.PlayerId}: position = {e.Position}");
break;
}
});
// subscribe to the volume changed event
heosClient.EventObservable.OfType<PlayerVolumeChangedEvent>().Subscribe(e =>
{
Console.WriteLine($"Player {e.PlayerId}: volume = {e.Volume}, mute = {e.Mute}");
});
var commandProcessor = new CommandProcessor(heosClient);
// request change events
var setChangeEventsCommandResponse = await commandProcessor.Execute(new SetChangeEventsCommand(true));
// get all players, ensure there is at least 1 player
var getPlayersResponse = await commandProcessor.Execute(new GetPlayersCommand(), r => r.Any(),
5, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(2));
if (getPlayersResponse.Success)
{
Console.WriteLine("Found players: " + string.Join(", ", getPlayersResponse.Payload.Select(p => p.Name)));
}| Command | Implemented | Object |
|---|---|---|
| Register for Change Events | Yes | SetChangeEventsCommand |
| HEOS Account Check | Yes | AccountCheckCommand |
| HEOS Account Sign In | Yes | AccountSignInCommand |
| HEOS Account Sign Out | Yes | AccountSignOutCommand |
| HEOS System Heart Beat | Yes | SystemHeartBeatCommand |
| HEOS Speaker Reboot | Yes | CurrentSpeakerRebootCommand |
| Prettify JSON response | Yes | PrettifyJsonCommand |
| Command | Implemented | Object |
|---|---|---|
| Get Players | Yes | GetPlayersCommand |
| Get Player Info | No | |
| Get Play State | Yes | GetPlayStateCommand |
| Set Play State | Yes | SetPlayStateCommand |
| Get Now Playing Media | Yes | GetNowPlayingCommand |
| Get Volume | Yes | GetVolumeCommand |
| Set Volume | Yes | SetVolumeCommand |
| Volume Up | Yes | VolumeUpCommand |
| Volume Down | Yes | VolumeDownCommand |
| Get Mute | Yes | GetMuteCommand |
| Set Mute | Yes | SetMuteCommand |
| Toggle Mute | Yes | ToggleMuteCommand |
| Get Play Mode | No | |
| Set Play Mode | Yes | SetPlayModeCommand |
| Get Queue | Yes | GetQueueCommand |
| Play Queue Item | No | |
| Remove Item(s) from Queue | No | |
| Save Queue as Playlist | No | |
| Clear Queue | No | |
| Play Next | Yes | PlayNextCommand |
| Play Previous | Yes | PlayPreviousCommand |
| Command | Implemented | Object |
|---|---|---|
| Get Groups | Yes | GetGroupsCommand |
| Get Group Info | Yes | GetGroupInfoCommand |
| Set Group | Yes | SetGroupCommand, ModifyGroupCommand, UngroupCommand |
| Get Group Volume | Yes | GetGroupVolume |
| Set Group Volume | Yes | SetGroupVolume |
| Group Volume Up | Yes | GroupVolumeUpCommand |
| Group Volume Down | Yes | GroupVolumeDownCommand |
| Get Group Mute | Yes | GetGroupMute |
| Set Group Mute | Yes | SetGroupMute |
| Toggle Group Mute | Yes | ToggleGroupMute |
| Command | Implemented | Object |
|---|---|---|
| Get Music Sources | No | |
| Get Source Info | No | |
| Browse Source | No | |
| Browse Source Containers | No | |
| Get Source Search Criteria | No | |
| Search | No | |
| Play Station | No | |
| Play Preset Station | No | |
| Play Input source | No | |
| Add Container to Queue with Options | No | |
| Add Track to Queue with Options | Yes | AddTrackToQueueCommand |
| Get HEOS Playlists | No | |
| Rename HEOS Playlist | No | |
| Delete HEOS Playlist | No | |
| Get HEOS History | No | |
| Retrieve Album Metadata | No | |
| Set service option | No |
| Command | Implemented | Object |
|---|---|---|
| Sources Changed | Yes | SourcesChangedEvent |
| Players Changed | No | |
| Group Changed | Yes | GroupChangedEvent |
| Source Data Changed | No | |
| Player State Changed | Yes | PlayerStateChangedEvent |
| Player Now Playing Changed | Yes | PlayerNowPlayingChangedEvent |
| Player Now Playing Progress | Yes | PlayerNowPlayingProgressEvent |
| Player Playback Error | No | |
| Player Queue Changed | No | |
| Player Volume Changed | Yes | PlayerVolumeChangedEvent |
| Player Mute Changed | No | |
| Player Repeat Mode Changed | No | |
| Player Shuffle Mode Changed | No | |
| Group Status Changed | No | |
| Group Volume Changed | No | |
| Group Mute Changed | No | |
| User Changed | No |