Difference between revisions of "Heos"
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Heos by Denon comprises a set of HiFi audio systems integrated with HSYCO via WiFi or Ethernet connection. A single HEOS I/O Server controls all the devices connected to the local network. | Heos by Denon comprises a set of HiFi audio systems integrated with HSYCO via WiFi or Ethernet connection. A single HEOS I/O Server controls all the devices connected to the local network. | ||
+ | |||
+ | The driver has been tested on firmware version 1.289.95 of the HEOS devices. | ||
[[Category:I/O Server]] | [[Category:I/O Server]] | ||
Line 36: | Line 38: | ||
== Datapoints == | == Datapoints == | ||
− | In the following table, replace <name> with the name assigned to each player. Names are transformed to lowercase and spaces are replaced by '-'. For instance, if the name assigned to a player is "Example Name", the <name> part of the corresponding datapoints will be "example-name". | + | In the following table, replace <name> with the name assigned to each player. Names are transformed to lowercase and spaces are replaced by '-'. For instance, if the name assigned to a player is "Example Name", the <name> part of the corresponding datapoints will be "example-name". The same applies to <group_name> placeholders. |
{| class="wikitable" | {| class="wikitable" | ||
Line 71: | Line 73: | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="6" |<name>.state |
− | |play | + | |rowspan="2" |play |
+ | |R | ||
+ | |the audio stream is playing | ||
+ | |- | ||
+ | |W | ||
+ | |start playing | ||
+ | |- | ||
+ | |rowspan="2" |pause | ||
+ | |R | ||
+ | |the audio stream is paused | ||
+ | |- | ||
+ | |W | ||
+ | |pause the audio stream | ||
+ | |- | ||
+ | |rowspan="2" |stop | ||
+ | |R | ||
+ | |the audio stream is stopped | ||
+ | |- | ||
+ | |W | ||
+ | |stop the audio stream | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.song | ||
+ | |<title> | ||
|R | |R | ||
− | |the | + | |reports the title of the song currently playing |
+ | |||
|- | |- | ||
− | | | + | |
+ | |<name>.album | ||
+ | |<album_name> | ||
+ | |R | ||
+ | |reports the name of the album currently playing | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.artist | ||
+ | |<artist_name> | ||
+ | |R | ||
+ | |reports the name of the artist currently playing | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.image_url | ||
+ | |<url> | ||
+ | |R | ||
+ | |reports the URL of the artwork of the track currently playing | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.image_url | ||
+ | |<url> | ||
+ | |R | ||
+ | |reports the URL of the artwork of the track currently playing | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="4" |<name>.volume | ||
+ | |rowspan="2" |0% ... 100% | ||
+ | |R | ||
+ | |the volume is set to the reported value | ||
+ | |- | ||
+ | |W | ||
+ | |set the volume to the specified value | ||
+ | |- | ||
+ | | +<n> | ||
+ | |W | ||
+ | |increase the volume of the specified value (e.g. "+10") | ||
+ | |- | ||
+ | | -<n> | ||
+ | |W | ||
+ | |decrease the volume of the specified value (e.g. "-10") | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="5" |<name>.mute | ||
+ | |rowspan="2" |1 | ||
+ | |R | ||
+ | |the audio is muted | ||
+ | |- | ||
+ | |W | ||
+ | |mute the audio | ||
+ | |- | ||
+ | |rowspan="2" |0 | ||
+ | |R | ||
+ | |the audio is not muted | ||
+ | |- | ||
+ | |W | ||
+ | |unmute the audio | ||
+ | |- | ||
+ | |flip | ||
+ | |W | ||
+ | |invert the mute state | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.progress | ||
+ | |0% ... 100% | ||
+ | |R | ||
+ | |the progress of the currently playing track reached the reported value | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2" |<name>.qid | ||
+ | |rowspan="2" |<queue_id> | ||
+ | |R | ||
+ | |reports the queue position of the current track | ||
+ | |- | ||
+ | |W | ||
+ | |play the track at the specified queue position | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2" |<name>.qid.remove | ||
+ | |<queue_id> | ||
+ | |W | ||
+ | |remove from the queue the specified element | ||
+ | |- | ||
+ | |all | ||
+ | |W | ||
+ | |clear the queue | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.sid | ||
+ | |<source_id> | ||
+ | |R | ||
+ | |reports the source id currently set on the player | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.mid | ||
+ | |<media_id> | ||
+ | |R | ||
+ | |reports the media id currently set on the player | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.next | ||
+ | | | ||
+ | |W | ||
+ | |play next track in the queue | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.previous | ||
+ | | | ||
+ | |W | ||
+ | |play previous track in the queue | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="6" |<name>.repeat | ||
+ | |rowspan="2" |on_one | ||
+ | |R | ||
+ | |the player is set on repeat mode on the current track | ||
+ | |- | ||
+ | |W | ||
+ | |enable repeat mode on the current track | ||
+ | |- | ||
+ | |rowspan="2" |on_all | ||
+ | |R | ||
+ | |the player is set on repeat mode on the current queue | ||
+ | |- | ||
+ | |W | ||
+ | |enable repeat mode on the current queue | ||
+ | |- | ||
+ | |rowspan="2" |off | ||
+ | |R | ||
+ | |repeat mode is off | ||
+ | |- | ||
+ | |W | ||
+ | |disable repeat mode | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="4" |<name>.shuffle | ||
+ | |rowspan="2" |on | ||
+ | |R | ||
+ | |shuffle mode is on | ||
+ | |- | ||
+ | |W | ||
+ | |set shuffle mode on | ||
+ | |- | ||
+ | |rowspan="2" |off | ||
+ | |R | ||
+ | |shuffle mode is off | ||
+ | |- | ||
+ | |W | ||
+ | |set shuffle mode off | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2" |<name>.type | ||
+ | |song | ||
+ | |R | ||
+ | |the player is currently playing a song | ||
+ | |- | ||
+ | |station | ||
+ | |R | ||
+ | |the player is currently playing a radio station | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="4" |group.<group_name>.volume | ||
+ | |rowspan="2" |0% ... 100% | ||
+ | |R | ||
+ | |the volume is set to the reported value | ||
+ | |- | ||
+ | |W | ||
+ | |set the volume to the specified value | ||
+ | |- | ||
+ | | +<n> | ||
+ | |W | ||
+ | |increase the volume of the specified value (e.g. "+10") | ||
+ | |- | ||
+ | | -<n> | ||
+ | |W | ||
+ | |decrease the volume of the specified value (e.g. "-10") | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="5" |group.<group_name>.mute | ||
+ | |rowspan="2" |1 | ||
|R | |R | ||
− | |the audio is | + | |the audio is muted |
+ | |- | ||
+ | |W | ||
+ | |mute the audio | ||
|- | |- | ||
− | | | + | |rowspan="2" |0 |
|R | |R | ||
− | |the audio is | + | |the audio is not muted |
+ | |- | ||
+ | |W | ||
+ | |unmute the audio | ||
+ | |- | ||
+ | |flip | ||
+ | |W | ||
+ | |invert the mute state | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2" |group.create | ||
+ | |<players_list> | ||
+ | |W | ||
+ | |group the listed players. The value is a list of names of players separated by ';' (e.g. "player1;plarer2"). The first player in the list becomes the group leader | ||
+ | |- | ||
+ | |<group_leader_name> | ||
+ | |W | ||
+ | |remove the group whose leader player is the specified one | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.play.song | ||
+ | |[[#media_ids|<song_id>]] | ||
+ | |W | ||
+ | |play the track with the specified [[#media_ids|song ID]] | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.play.station | ||
+ | |[[#media_ids|<station_id>]] | ||
+ | |W | ||
+ | |play the radio station with the specified [[#media_ids|station ID]] | ||
|} | |} | ||
+ | |||
+ | <span id="media_ids"> | ||
+ | ;Song and station IDs: To get the ID of a song or a radio station refer to [[Heos Utility]] | ||
+ | </span> | ||
== User Interface == | == User Interface == | ||
Line 107: | Line 368: | ||
|- | |- | ||
− | | | + | |rowspan="2"|<name>.state.play |
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint <name>.state = play | ||
+ | |- | ||
+ | |false | ||
+ | |otherwise | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.state.pause | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint <name>.state = pause | ||
+ | |- | ||
+ | |false | ||
+ | |otherwise | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.state.stop | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint <name>.state = stop | ||
+ | |- | ||
+ | |false | ||
+ | |otherwise | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.volume | ||
+ | |value | ||
+ | |colspan="2"|the current volume's value (0 ... 100) | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.mute.0 | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint mute = 0 | ||
+ | |- | ||
+ | |false | ||
+ | |when datapoint mute = 1 | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.mute.1 | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint mute = 1 | ||
+ | |- | ||
+ | |false | ||
+ | |when datapoint mute = 0 | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.repeat.off | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint <name>.repeat = off | ||
+ | |- | ||
+ | |false | ||
+ | |otherwise | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.repeat.on_all | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint <name>.repeat = on_all | ||
+ | |- | ||
+ | |false | ||
+ | |otherwise | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.repeat.on_one | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint <name>.repeat = on_one | ||
+ | |- | ||
+ | |false | ||
+ | |otherwise | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.shuffle.off | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint <name>.shuffle = off | ||
+ | |- | ||
+ | |false | ||
+ | |when datapoint <name>.shuffle = on | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<name>.shuffle.on | ||
+ | |rowspan="2"|visible | ||
+ | |true | ||
+ | |when datapoint <name>.shuffle = on | ||
+ | |- | ||
+ | |false | ||
+ | |when datapoint <name>.shuffle = off | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.progress | ||
+ | |value | ||
+ | |colspan="2"|the current track progress value (0% ... 100%) | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.qid | ||
+ | |value | ||
+ | |colspan="2"|the queue position of the current track | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.song | ||
+ | |value | ||
+ | |colspan="2"|the title of the song currently playing | ||
+ | |||
+ | |- | ||
+ | |||
+ | |<name>.album | ||
+ | |value | ||
+ | |colspan="2"|the title of the album currently playing | ||
+ | |||
+ | |- | ||
− | = | + | |<name>.artist |
+ | |value | ||
+ | |colspan="2"|the title of the artist currently playing | ||
− | + | |- | |
− | |||
− | |||
− | |||
+ | |rowspan="2"|<name>.queue | ||
+ | |values | ||
+ | |colspan="2"|list of qids of queued tracks | ||
|- | |- | ||
+ | |labels | ||
+ | |colspan="2"|list of qid, title, artist and album of queued tracks | ||
|} | |} | ||
+ | |||
+ | === USER Commands === | ||
+ | |||
+ | Use the IDs and values listed in the [[#Datapoints|datapoints table]] respectively as ''name'' and ''param'' for USER objects to perform the corresponding actions. | ||
== Release Notes == | == Release Notes == |
Latest revision as of 14:55, 12 May 2015
Heos by Denon comprises a set of HiFi audio systems integrated with HSYCO via WiFi or Ethernet connection. A single HEOS I/O Server controls all the devices connected to the local network.
The driver has been tested on firmware version 1.289.95 of the HEOS devices.
Contents
Communication
Just make sure the Heos devices are connected to the same local network as HSYCO server is.
HSYCO Configuration
Add a HEOS I/O Server in the I/O Servers section of the Settings and set its parameters:
High Availability
- User: username for the HEOS account (optional)
- Password: password for the HEOS account (if User is provided)
- Shutdown when inactive: defaults to false.
Options
ID | Default | Values | Description |
---|---|---|---|
startupevents | false | true | generate IO events also during the driver’s start-up phase |
false | start generating events only after HSYCO is aligned with the current status of the system |
Datapoints
In the following table, replace <name> with the name assigned to each player. Names are transformed to lowercase and spaces are replaced by '-'. For instance, if the name assigned to a player is "Example Name", the <name> part of the corresponding datapoints will be "example-name". The same applies to <group_name> placeholders.
ID | Value | R/W | Description |
---|---|---|---|
connection | online | R | connection established |
offline | R | HSYCO can't connect to the device | |
<name>.model | <model_name> | R | reports the model name of this player, e.g. "HEOS 3" |
<name>.version | <version_number> | R | reports the version number of this player, e.g. "1.289.95" |
<name>.state | play | R | the audio stream is playing |
W | start playing | ||
pause | R | the audio stream is paused | |
W | pause the audio stream | ||
stop | R | the audio stream is stopped | |
W | stop the audio stream | ||
<name>.song | <title> | R | reports the title of the song currently playing |
<name>.album | <album_name> | R | reports the name of the album currently playing |
<name>.artist | <artist_name> | R | reports the name of the artist currently playing |
<name>.image_url | <url> | R | reports the URL of the artwork of the track currently playing |
<name>.image_url | <url> | R | reports the URL of the artwork of the track currently playing |
<name>.volume | 0% ... 100% | R | the volume is set to the reported value |
W | set the volume to the specified value | ||
+<n> | W | increase the volume of the specified value (e.g. "+10") | |
-<n> | W | decrease the volume of the specified value (e.g. "-10") | |
<name>.mute | 1 | R | the audio is muted |
W | mute the audio | ||
0 | R | the audio is not muted | |
W | unmute the audio | ||
flip | W | invert the mute state | |
<name>.progress | 0% ... 100% | R | the progress of the currently playing track reached the reported value |
<name>.qid | <queue_id> | R | reports the queue position of the current track |
W | play the track at the specified queue position | ||
<name>.qid.remove | <queue_id> | W | remove from the queue the specified element |
all | W | clear the queue | |
<name>.sid | <source_id> | R | reports the source id currently set on the player |
<name>.mid | <media_id> | R | reports the media id currently set on the player |
<name>.next | W | play next track in the queue | |
<name>.previous | W | play previous track in the queue | |
<name>.repeat | on_one | R | the player is set on repeat mode on the current track |
W | enable repeat mode on the current track | ||
on_all | R | the player is set on repeat mode on the current queue | |
W | enable repeat mode on the current queue | ||
off | R | repeat mode is off | |
W | disable repeat mode | ||
<name>.shuffle | on | R | shuffle mode is on |
W | set shuffle mode on | ||
off | R | shuffle mode is off | |
W | set shuffle mode off | ||
<name>.type | song | R | the player is currently playing a song |
station | R | the player is currently playing a radio station | |
group.<group_name>.volume | 0% ... 100% | R | the volume is set to the reported value |
W | set the volume to the specified value | ||
+<n> | W | increase the volume of the specified value (e.g. "+10") | |
-<n> | W | decrease the volume of the specified value (e.g. "-10") | |
group.<group_name>.mute | 1 | R | the audio is muted |
W | mute the audio | ||
0 | R | the audio is not muted | |
W | unmute the audio | ||
flip | W | invert the mute state | |
group.create | <players_list> | W | group the listed players. The value is a list of names of players separated by ';' (e.g. "player1;plarer2"). The first player in the list becomes the group leader |
<group_leader_name> | W | remove the group whose leader player is the specified one | |
<name>.play.song | <song_id> | W | play the track with the specified song ID |
<name>.play.station | <station_id> | W | play the radio station with the specified station ID |
- Song and station IDs
- To get the ID of a song or a radio station refer to Heos Utility
User Interface
UISET Actions
ID | Attribute | Set to | |
---|---|---|---|
connection | visible | true | when datapoint connection = offline |
false | when datapoint connection = online | ||
<name>.state.play | visible | true | when datapoint <name>.state = play |
false | otherwise | ||
<name>.state.pause | visible | true | when datapoint <name>.state = pause |
false | otherwise | ||
<name>.state.stop | visible | true | when datapoint <name>.state = stop |
false | otherwise | ||
<name>.volume | value | the current volume's value (0 ... 100) | |
<name>.mute.0 | visible | true | when datapoint mute = 0 |
false | when datapoint mute = 1 | ||
<name>.mute.1 | visible | true | when datapoint mute = 1 |
false | when datapoint mute = 0 | ||
<name>.repeat.off | visible | true | when datapoint <name>.repeat = off |
false | otherwise | ||
<name>.repeat.on_all | visible | true | when datapoint <name>.repeat = on_all |
false | otherwise | ||
<name>.repeat.on_one | visible | true | when datapoint <name>.repeat = on_one |
false | otherwise | ||
<name>.shuffle.off | visible | true | when datapoint <name>.shuffle = off |
false | when datapoint <name>.shuffle = on | ||
<name>.shuffle.on | visible | true | when datapoint <name>.shuffle = on |
false | when datapoint <name>.shuffle = off | ||
<name>.progress | value | the current track progress value (0% ... 100%) | |
<name>.qid | value | the queue position of the current track | |
<name>.song | value | the title of the song currently playing | |
<name>.album | value | the title of the album currently playing | |
<name>.artist | value | the title of the artist currently playing | |
<name>.queue | values | list of qids of queued tracks | |
labels | list of qid, title, artist and album of queued tracks |
USER Commands
Use the IDs and values listed in the datapoints table respectively as name and param for USER objects to perform the corresponding actions.
Release Notes
3.5.0
- initial release
Heos and Denon are registered trademarks of D&M Holdings, Inc.