16.09.2024, 09:23
(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
playlist_id looks like a number but it is a string!Code:-- play playlist by ID sonos_app.SendApiActionCommand(url_group_id, 'playPlaylist', playlist_id)
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.