Difference between revisions of "Sonos"
(17 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Sonos | + | Sonos comprises a set of HiFi audio systems integrated with HSYCO via WiFi or Ethernet connection. A single SONOS I/O Server controls all the devices connected to the local network. |
[[Category:I/O Server]] | [[Category:I/O Server]] | ||
== Communication == | == Communication == | ||
− | Just make sure the Sonos | + | Just make sure the Sonos devices are connected to the same local network as HSYCO server is. |
== HSYCO Configuration == | == HSYCO Configuration == | ||
Line 32: | Line 32: | ||
|- | |- | ||
− | | | + | |localhost |
| | | | ||
− | |< | + | |<host_name> |
− | | | + | |host name (or IP address) to be used by the players to reach HSYCO and send status notifications. If not specified the driver will select a random local address among the available ones. It is therefore recommended to specify one |
|} | |} | ||
== Datapoints == | == Datapoints == | ||
+ | In the following table, replace <player> with the name assigned to a player. Names are transformed to lowercase and spaces are replaced by '-'. For instance, if the name assigned to a player is "Example Name", the <player> part of the corresponding datapoints will be "example-name". | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 60: | Line 61: | ||
|- | |- | ||
− | |rowspan=" | + | |rowspan="8" |<player>.state |
− | | | + | |rowspan="2" |play |
|R | |R | ||
|the audio is playing | |the audio is playing | ||
|- | |- | ||
− | | | + | |W |
+ | |start playing | ||
+ | |- | ||
+ | |rowspan="2" |pause | ||
|R | |R | ||
|the audio is paused | |the audio is paused | ||
+ | |- | ||
+ | |W | ||
+ | |pause the audio | ||
+ | |- | ||
+ | |rowspan="2" |stop | ||
+ | |R | ||
+ | |the audio is stopped | ||
+ | |- | ||
+ | |W | ||
+ | |stop the audio stream | ||
|- | |- | ||
|transitioning | |transitioning | ||
|R | |R | ||
|the device is transitioning between audio streams | |the device is transitioning between audio streams | ||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|unknown | |unknown | ||
Line 83: | Line 93: | ||
|- | |- | ||
− | |track.number | + | |<player>.track.number |
|<n> | |<n> | ||
|R | |R | ||
Line 89: | Line 99: | ||
|- | |- | ||
− | |track.title | + | |<player>.track.title |
|<title> | |<title> | ||
|R | |R | ||
Line 96: | Line 106: | ||
|- | |- | ||
− | |track.creator | + | |<player>.track.creator |
|<name> | |<name> | ||
|R | |R | ||
Line 103: | Line 113: | ||
|- | |- | ||
− | |track.album | + | |<player>.track.album |
|<name> | |<name> | ||
|R | |R | ||
Line 110: | Line 120: | ||
|- | |- | ||
− | |track.albumarturi | + | |<player>.track.albumarturi |
|<uri> | |<uri> | ||
|R | |R | ||
Line 117: | Line 127: | ||
|- | |- | ||
− | |rowspan="4" |mute | + | |rowspan="4" |<player>.mute |
|rowspan="2" |1 | |rowspan="2" |1 | ||
|R | |R | ||
Line 134: | Line 144: | ||
|- | |- | ||
− | |rowspan="4" |volume | + | |rowspan="4" |<player>.volume |
|rowspan="2" |0 ... 100 | |rowspan="2" |0 ... 100 | ||
|R | |R | ||
Line 152: | Line 162: | ||
|- | |- | ||
− | | | + | |<player>.play |
− | |||
− | |||
− | |||
− | |||
|<uri> | |<uri> | ||
|W | |W | ||
Line 163: | Line 169: | ||
|- | |- | ||
− | | | + | |rowspan="3" |<player>.queue |
− | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|next | |next | ||
− | |||
|W | |W | ||
|go to the next queued track | |go to the next queued track | ||
− | |||
|- | |- | ||
− | + | |prev | |
− | |||
− | | | ||
|W | |W | ||
|go to the previous queued track | |go to the previous queued track | ||
− | |||
|- | |- | ||
− | |||
− | |||
|<n>:<uri> | |<n>:<uri> | ||
|W | |W | ||
|add to the current queue, in <n>-th position, the audio file located at the specified URI (set <n> to 0 to add it at the end of the queue) | |add to the current queue, in <n>-th position, the audio file located at the specified URI (set <n> to 0 to add it at the end of the queue) | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2" |<player>.reachable | ||
+ | |1 | ||
+ | |R | ||
+ | |the player is normally connected | ||
+ | |- | ||
+ | |0 | ||
+ | |R | ||
+ | |the driver cannot communicate with the player | ||
|} | |} | ||
+ | |||
+ | == Public Announcement == | ||
+ | |||
+ | This driver supports the function of [[Audio_and_Public_Announcement|Public Announcement]]. The audio will be played as if the URL of the audio file would be passed to the corresponding "<player>.play" datapoint. | ||
+ | |||
+ | The general action syntax is: | ||
+ | |||
+ | <pre> | ||
+ | audio io@<io_server_id>.<player> = <audio> | ||
+ | </pre> | ||
+ | |||
+ | For instance: | ||
+ | |||
+ | <pre> | ||
+ | TIME : audio io@sonos.kitchen = file "audio/music.mp3" | ||
+ | TIME : audio io@sonos.kitchen = voice:Alex "Hello world" | ||
+ | </pre> | ||
== User Interface == | == User Interface == | ||
Line 219: | Line 233: | ||
|- | |- | ||
− | |rowspan="2"|state. | + | |rowspan="2"|<player>.state.play |
|rowspan="2"|visible | |rowspan="2"|visible | ||
|true | |true | ||
− | |when datapoint state = | + | |when datapoint <player>.state = play |
|- | |- | ||
|false | |false | ||
Line 229: | Line 243: | ||
|- | |- | ||
− | |rowspan="2"|state. | + | |rowspan="2"|<player>.state.pause |
|rowspan="2"|visible | |rowspan="2"|visible | ||
|true | |true | ||
− | |when datapoint state = | + | |when datapoint <player>.state = pause |
|- | |- | ||
|false | |false | ||
Line 239: | Line 253: | ||
|- | |- | ||
− | |rowspan="2"|state.transitioning | + | |rowspan="2"|<player>.state.transitioning |
|rowspan="2"|visible | |rowspan="2"|visible | ||
|true | |true | ||
− | |when datapoint state = transitioning | + | |when datapoint <player>.state = transitioning |
|- | |- | ||
|false | |false | ||
Line 249: | Line 263: | ||
|- | |- | ||
− | |rowspan="2"|state. | + | |rowspan="2"|<player>.state.stop |
|rowspan="2"|visible | |rowspan="2"|visible | ||
|true | |true | ||
− | |when datapoint state = stopped | + | |when datapoint <player>.state = stopped |
|- | |- | ||
|false | |false | ||
Line 259: | Line 273: | ||
|- | |- | ||
− | |track.number | + | |<player>.track.number |
|value | |value | ||
|colspan="2"|the current track number | |colspan="2"|the current track number | ||
Line 265: | Line 279: | ||
|- | |- | ||
− | |track.title | + | |<player>.track.title |
|value | |value | ||
|colspan="2"|the current track's title | |colspan="2"|the current track's title | ||
Line 271: | Line 285: | ||
|- | |- | ||
− | |track.creator | + | |<player>.track.creator |
|value | |value | ||
|colspan="2"|the current track's author | |colspan="2"|the current track's author | ||
Line 277: | Line 291: | ||
|- | |- | ||
− | |track.album | + | |<player>.track.album |
|value | |value | ||
|colspan="2"|the name of the current track's album | |colspan="2"|the name of the current track's album | ||
Line 283: | Line 297: | ||
|- | |- | ||
− | |rowspan="2"|mute.1 | + | |rowspan="2"|<player>.mute.1 |
|rowspan="2"|visible | |rowspan="2"|visible | ||
|true | |true | ||
− | |when datapoint mute = 1 | + | |when datapoint <player>.mute = 1 |
|- | |- | ||
|false | |false | ||
− | |when datapoint mute = 0 | + | |when datapoint <player>.mute = 0 |
|- | |- | ||
− | |rowspan="2"|mute.0 | + | |rowspan="2"|<player>.mute.0 |
|rowspan="2"|visible | |rowspan="2"|visible | ||
|true | |true | ||
− | |when datapoint mute = 0 | + | |when datapoint <player>.mute = 0 |
|- | |- | ||
|false | |false | ||
Line 303: | Line 317: | ||
|- | |- | ||
− | |volume | + | |<player>.volume |
|value | |value | ||
|colspan="2"|the current volume's value (0 ... 100) | |colspan="2"|the current volume's value (0 ... 100) | ||
Line 311: | Line 325: | ||
=== USER Commands === | === USER Commands === | ||
+ | {| class="wikitable" | ||
+ | !Name | ||
+ | !Param | ||
+ | !Action | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="3"|<player>.state | ||
+ | |play | ||
+ | |start playing | ||
+ | |- | ||
+ | |pause | ||
+ | |pause the audio | ||
+ | |- | ||
+ | |stop | ||
+ | |stop the audio stream | ||
+ | |||
+ | |- | ||
+ | |<player>.play | ||
+ | |<uri> | ||
+ | |play the audio file located at the specified URI | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="3"|<player>.volume | ||
+ | |0 ... 100 | ||
+ | |set the volume to the specified value | ||
+ | |- | ||
+ | | +<n> | ||
+ | |increase the volume of the specified value | ||
+ | |- | ||
+ | | -<n> | ||
+ | |decrease the volume of the specified value | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="2"|<player>.mute | ||
+ | |1 | ||
+ | |mute the audio | ||
+ | |- | ||
+ | |0 | ||
+ | |unmute the audio | ||
+ | |||
+ | |- | ||
+ | |||
+ | |rowspan="3"|<player>.queue | ||
+ | |next | ||
+ | |go to the next queued track | ||
+ | |- | ||
+ | |previous | ||
+ | |go to the previous queued track | ||
+ | |- | ||
+ | |<n>:<uri> | ||
+ | |add to the current queue, in <n>-th position, the audio file located at the specified URI (set <n> to 0 to add it at the end of the queue) | ||
+ | |||
+ | |} | ||
== Release Notes == | == Release Notes == | ||
+ | |||
+ | === 3.5.1 === | ||
+ | *fixed bug preventing the driver to initialize correctly when a sonos bridge was in the network | ||
=== 3.5.0 === | === 3.5.0 === | ||
Line 320: | Line 393: | ||
− | ''Sonos is a registered | + | ''Sonos is a registered trademark of Sonos, Inc.'' |
Latest revision as of 16:34, 12 January 2016
Sonos comprises a set of HiFi audio systems integrated with HSYCO via WiFi or Ethernet connection. A single SONOS I/O Server controls all the devices connected to the local network.
Contents
Communication
Just make sure the Sonos devices are connected to the same local network as HSYCO server is.
HSYCO Configuration
Add a SONOS I/O Server in the I/O Servers section of the Settings and set its parameters:
High Availability
- 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 | ||
localhost | <host_name> | host name (or IP address) to be used by the players to reach HSYCO and send status notifications. If not specified the driver will select a random local address among the available ones. It is therefore recommended to specify one |
Datapoints
In the following table, replace <player> with the name assigned to a player. Names are transformed to lowercase and spaces are replaced by '-'. For instance, if the name assigned to a player is "Example Name", the <player> part of the corresponding datapoints will be "example-name".
ID | Value | R/W | Description |
---|---|---|---|
connection | online | R | connection established |
offline | R | HSYCO can't connect to the device | |
<player>.state | play | R | the audio is playing |
W | start playing | ||
pause | R | the audio is paused | |
W | pause the audio | ||
stop | R | the audio is stopped | |
W | stop the audio stream | ||
transitioning | R | the device is transitioning between audio streams | |
unknown | R | the current state is unknown | |
<player>.track.number | <n> | R | the current track is the number <n> in the current queue (can be "unknown") |
<player>.track.title | <title> | R | title of the current track (can be "unknown") |
<player>.track.creator | <name> | R | name of the author of the current track (can be "unknown") |
<player>.track.album | <name> | R | name of the album of the current track (can be "unknown") |
<player>.track.albumarturi | <uri> | R | uri of the album art of the current track (can be "unknown") |
<player>.mute | 1 | R | the audio is muted |
W | mute the audio | ||
0 | R | the audio is not muted | |
W | unmute the audio | ||
<player>.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 | |
-<n> | W | decrease the volume of the specified value | |
<player>.play | <uri> | W | play the audio file located at the specified URI |
<player>.queue | next | W | go to the next queued track |
prev | W | go to the previous queued track | |
<n>:<uri> | W | add to the current queue, in <n>-th position, the audio file located at the specified URI (set <n> to 0 to add it at the end of the queue) | |
<player>.reachable | 1 | R | the player is normally connected |
0 | R | the driver cannot communicate with the player |
Public Announcement
This driver supports the function of Public Announcement. The audio will be played as if the URL of the audio file would be passed to the corresponding "<player>.play" datapoint.
The general action syntax is:
audio io@<io_server_id>.<player> = <audio>
For instance:
TIME : audio io@sonos.kitchen = file "audio/music.mp3" TIME : audio io@sonos.kitchen = voice:Alex "Hello world"
User Interface
UISET Actions
ID | Attribute | Set to | |
---|---|---|---|
connection | visible | true | when datapoint connection = offline |
false | when datapoint connection = online | ||
<player>.state.play | visible | true | when datapoint <player>.state = play |
false | otherwise | ||
<player>.state.pause | visible | true | when datapoint <player>.state = pause |
false | otherwise | ||
<player>.state.transitioning | visible | true | when datapoint <player>.state = transitioning |
false | otherwise | ||
<player>.state.stop | visible | true | when datapoint <player>.state = stopped |
false | otherwise | ||
<player>.track.number | value | the current track number | |
<player>.track.title | value | the current track's title | |
<player>.track.creator | value | the current track's author | |
<player>.track.album | value | the name of the current track's album | |
<player>.mute.1 | visible | true | when datapoint <player>.mute = 1 |
false | when datapoint <player>.mute = 0 | ||
<player>.mute.0 | visible | true | when datapoint <player>.mute = 0 |
false | when datapoint mute = 1 | ||
<player>.volume | value | the current volume's value (0 ... 100) |
USER Commands
Name | Param | Action |
---|---|---|
<player>.state | play | start playing |
pause | pause the audio | |
stop | stop the audio stream | |
<player>.play | <uri> | play the audio file located at the specified URI |
<player>.volume | 0 ... 100 | set the volume to the specified value |
+<n> | increase the volume of the specified value | |
-<n> | decrease the volume of the specified value | |
<player>.mute | 1 | mute the audio |
0 | unmute the audio | |
<player>.queue | next | go to the next queued track |
previous | go to the previous queued track | |
<n>:<uri> | add to the current queue, in <n>-th position, the audio file located at the specified URI (set <n> to 0 to add it at the end of the queue) |
Release Notes
3.5.1
- fixed bug preventing the driver to initialize correctly when a sonos bridge was in the network
3.5.0
- initial release
Sonos is a registered trademark of Sonos, Inc.