This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

SONOS app
Do you use Mosaic? If no just create a floor and a room in it, also make sure it is a latest version.
------------------------------
Ctrl+F5
Reply
(11.09.2019, 07:47)Daniel Wrote: Hi

Here is how to use new Sonos app via script:

The app runs a daemon which keeps communication with each player/group The daemon will be closed down after 120s if no update is send so we need to run such script every 60s to keep communication up and running.
Code:
require('custom.sonos.lib')

groupID=sonos_app.GetStoragePlayerGroups()
for k, v in pairs(groupID) do
   sonos_app.SendApiActionCommand(k, 'watchPlayerGroup', os.time())
end

To control the players we need to know groupID which can be read via such command.
Code:
groupID=sonos_app.GetStoragePlayerGroups()

Basic control is done like this
Code:
-- simle command: play, pause, skipToPrev, skipToNext
sonos_app.SendApiActionCommand(url_group_id, 'play')
Code:
-- set volume
sonos_app.SendApiActionCommand(url_group_id, 'setVolume', 50)

The url_group_id is in the table from the groupID but it can be read automatically when we know group name so example start/pause script would looks like that.
Code:
require('custom.sonos.lib')

groupName='Kitchen'

-------------------------------------------------------------
groupID=sonos_app.GetStoragePlayerGroups()
for k, v in pairs(sonos_app.GetStoragePlayerGroups()) do
  if groupID[k].groupName == groupName then
  groupID=k 
    break
  end
end
-------------------------------------------------------------

value = event.getvalue()
if value then
    sonos_app.SendApiActionCommand(groupID, 'play')
else
  sonos_app.SendApiActionCommand(groupID, 'pause')
end

To read Playlist table use this
Code:
sonos_app.GetStoragePlayerGroupData(groupID, 'Playlists')

To Play a playlist
Code:
-- play playlist by ID
sonos_app.SendApiActionCommand(url_group_id, 'playPlaylist', playlist_id)
playlist_id looks like a number but it is a string!

To read Favorites use
Code:
sonos_app.GetStoragePlayerGroupData(groupID, 'Favorites')

To play a Favorites
Code:
sonos_app.SendApiActionCommand(url_groupID, 'playFavorite', url_favID)

Are there more functions then what is listed here? Specifically I would like to group and ungroup players via script.
Reply


Forum Jump: