1.0.3 • Published 4 years ago

heos-lib v1.0.3

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

Heos Library

A Node.js library for HEOS device interaction

Constructor

The constructor requires a socket as can be acquired with net.createConnection (...)

const heos_lib = new HeosLib (socket)

A timeout for command results may be specified as a timeout property on an optional configuration parameter. The value should be set in milliseconds. By default the timeout is set to 5000 (5 seconds).

const heos_lib = new HeosLib (socket, {timeout: 10000})

Methods

registerForChangeEvents

var result = await heos_lib
  .registerForChangeEvents ('on') // on, off
var { enable } = result

getPlayers

var [ player_info ] = await heos_lib.getPlayers ()
var { name, pid, model, version } = player_info

getPlayerInfo

var player_info = await heos_lib.getPlayerInfo (pid)
var { name, pid, model, version } = player_info

getPlayState

var play_state = await heos_lib.getPlayState (pid)
var { state } = play_state

setPlayState

var result = await heos_lib
  .setPlayState (pid, 'play') // play, pause, stop
var { pid, state } = result

getNowPlayingMedia

var now_playing = await heos_lib
  .getNowPlayingMedia (pid)
var { type, song, artist } = now_playing

getVolume

var { pid, level } = await heos_lib.getVolume (pid)

setVolume

var result = await heos_lib.setVolume (pid, level)
var { pid, level } = result

volumeUp

var result = await heos_lib.volumeUp (pid, step)
var { pid, step } = result

volumeDown

var result = await heos_lib.volumeDown (pid, step)
var { pid, step } = result

getMute

var { pid, state } = await heos_lib.getMute (pid)

setMute

var result = await heos_lib.setMute (pid, state)
var { pid, state } = result

toggleMute

var result = await heos_lib.toggleMute (pid)
var { pid } = result

getPlayMode

var play_mode = await heos_lib.getPlayMode (pid)
var { pid, repeat, shuffle } = play_mode

setPlayMode

var result = await heos_lib
  .setPlayMode (pid, repeat, shuffle)
var { pid, repeat, shuffle } = result

getQueue

var range = [0, 50].join (',')
var queue_data = await heos_lib.getQueue (pid, range) 
var { count, items } = queue_data

playQueueItem

var result = await heos_lib.playQueueItem (pid, qid) 
var { pid, qid } = result

removeFromQueue

var result = await heos_lib.removeFromQueue (pid, qid) 
var { pid, qid } = result

saveQueue

var result = await heos_lib.saveQueue (pid, name) 
var { pid, name } = result

clearQueue

var result = await heos_lib.clearQueue (pid)
var { pid } = result

moveQueueItem

var sqid = 2
var dqid = 8
var result = await heos_lib.moveQueueItem (pid, sqid, dqid)
var { pid, sqid, dqid } = result

playNext

var result = await heos_lib.playNext (pid)
var { pid } = result

playPrevious

var result = await heos_lib.playPrevious (pid)
var { pid } = result

getMusicSources

var [ source_info ] = await heos_lib.getMusicSources ()
var { name, type, sid } = source_info

getSourceInfo

var [ source_info ] = await heos_lib.getSourceInfo (sid)
var { name, type, sid } = source_info

browseSource

var sid   = 1024 // see getMusicSources
var range = [0, 5].join (',')
var { count, items } = await heos_lib
  .browseSource (sid, range)
var [{ name, type, cid }] = items

browseSourceContainers

var sid   = 1024 // see getMusicSources
var cid   = 1    // see browseSource
var range = [0, 50].join (',')
var { count, items } = await heos_lib
  .browseSourceContainers (sid, cid, range)
var [{ name, type, cid }] = items

getSourceSearchCriteria

var criterias_list = await heos_lib
  .getSourceSearchCriteria (sid)
var [{ name, scid, cid }] = criterias_list

browseSearch

var sid    = 1024 // see getMusicSources
var scid   =    3 // see getSourceSearchCriteria
var search = 'search query'
var range  = [0, 50].join (',')
var { count, items } = await heos_lib
  .browseSearch (sid, search, scid, range)
var [{ name, type, mid }] = items

Item properties present depends on the type.

playStation

var sid     =  13 // see getMusicSources
var cid     =   1 // see browseSource, browseSourceContainers
var mid     =   1 // see browseSearch, browseSourceContainers
var pid     = 123 // see getPlayers
var name = 'name' // see browseSource, browseSourceContainers
var result = await heosLib
  .playStation (sid, cid, mid, pid, name)
var { cid, cid, mid, pid, name } = result

playPresetStation

var preset = 1 // see getHeosFavorites
var result = await heos_lib.playPresetStation (pid, preset)
var { pid, preset } = result

playInputSource

var input_name = 'inputs/hdradio' // see HEOS specification
var result = await heos_lib.playInputSource (pid, input_name)
var { pid, input } = result

playInputSourceFrom

var input_name = 'input/hdradio' // see HEOS specification
var result = await heos_lib
  .playInputSourceFrom (pid, spid, input_name)
var { pid, spid, input } = result

playUrl

var result = await heos_lib.playUrl (pid, url)
var { pid, url } = result

addContainerToQueue

var sid     =  13 // see getMusicSources
var cid     =   1 // see browseSource, browseSourceContainers
var aid     =   1
var pid     = 123 // see getPlayers
var name = 'name' // see browseSource, browseSourceContainers
var result = await heos_lib
  .addContainerTOQueue (sid, cid, aid, pid)
var { sid, cid, aid, pid } = result

aid (add criteria) is one of:

  1. HeosLib.QUEUE_PLAY_NOW
  2. HeosLib.QUEUE_PLAY_NEXT
  3. HeosLib.QUEUE_PLAY_LAST
  4. HeosLib.QUEUE_REPLACE_AND_PLAY

addTrackToQueue

var sid     =  13 // see getMusicSources
var cid     =   1 // see browseSource, browseSourceContainers
var mid     = 100 // see browseSource, browseSourceContainers
var aid     =   1 // see addContainerToQueue
var pid     = 123 // see getPlayers
var name = 'name' // see browseSource, browseSourceContainers
var result = await heos_lib
  .addContainerTOQueue (sid, cid, mid, aid, pid)
var { sid, cid, mid, aid, pid } = result

getHeosPlaylists

var range = [0, 50].join (',')
var { count, items } = await heos_lib
  .getHeosPlaylists (range)
var [{ name, type, cid }] = items

renameHeosPlaylist

var result = await heos_lib
  .renameHeosPlaylist (sid, cid, name)
var { sid, cid, name } = result

deleteHeosPlaylist

var result = await heos_lib
  .deleteHeosPlaylist (sid, cid)
var { sid, cid } = result

getHeosHistory

var type = 'tracks' // tracks, stations
var range = [0, 50].join (',')
var { count, items } = await heos_lib
  .getHeosHistory (type, range)
var [{ name, type, cid }] = items

retrieveAlbumMetadata

const { count, items } = await heos_lib
  .retrieveAlbumMetadata (sid, cid)

Napster and Rhapsody only.

setServiceOption

const option = 11 // See HEOS protocol spec
const { count, items } = await heos_lib
  .setServiceOption (sid, option, pid)

Options that require 'cid', 'mid' or 'name' are currently not supported by the setServiceOption method. The command method can be used as a workaround.

command

Send a direct command:

heos_lib.command ({
  command: 'player/get_volume',
  params:  { pid: 1234567890 }
})

Currently, the command method does not directly return a value. The result can be obtained with an event listener.

Events

data

Receives all events and results. Note that data that could not be determined to be a result or an event will be included here.

event

Receives all events

event:event name

Receives results for a specified event. Note event names exclude the 'event/' prefix.

result

Receives all results

result:command name

Receives results for a specified command

Links

Notice

This unsponsored software is provided, subject to a MIT license, unofficially and independently of Sound United, LLC, its affiliates, subsidiaries and brands (such as HEOS, Denon and any such not listed here).

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago

0.1.0-beta.5

4 years ago

0.1.0-beta.4

4 years ago

0.1.0-beta.3

4 years ago

0.1.0-beta.2

4 years ago

0.1.0-beta.1

4 years ago