- [Support] Added support for Guzzle 7.
- [Support] Added support for PHP 8.2.
- [Dependencies] Added support for a domparser 2.0.
- [Device] Added support for a bunch of other speaker models (#122).
- [Device] Added support for the Play:5 Gen2 speaker (#117).
- [Dependencies] Avoid a security issue in league/flysystem (#121).
- [Support] Added support for PHP 8.0, and 8.1.
- [Support] Dropped support for PHP 7.1, and 7.2.
- [Device] Added support for the new Move speakers.
- [Alarms] Allow music to be get/set via
getMusic()
andsetMusic()
. - [Queues]
addTrack()
now acceptsPlaylistInterface
instances for efficiency.
- [Device] Added support for the new SYMFONISK speakers.
- [Device] Added support for the new version of the PLAY:ONE.
- [Queues] Correct the handling of errors when adding a lot of tracks.
- [Device] Added support for the new CONNECT (S15) device.
- [Device] Resolved a cache issue causing XML errors.
- [Logging] Ensure network loggers are passed all the way down to new devices.
- [Controllers] Resolved several grouping/coordinator issues.
- [Support] Added support for PHP 7.3
- [Network] Ignore speakers that are hidden as part of a stereo pair.
- [Streams] Ensure Amazon Radio streams are recognised.
- [Time] Avoid confusing parse() results by using fromFormat().
- [Network] Added support for the BEAM devices.
- [Collection] The collection class no longer requires a factory, it will create the default one if none is provided.
- [Discovery] The Discovey class no longer requires a collection, it will create the default one if none is provided.
- [Network] A new DeviceCollection class can be used to manually add devices to the network.
- [Time] A Time class has been added to normalise the various representations of time used by Sonos.
- [Network] The construction of a new instance now only accepts a DeviceCollection instance.
- [Network] Replaced the doctrine/cache dependency with any PSR-16 compatible cache library.
- [Controllers] An exception is now throw when adding track(s) fails.
- [General] Scalar parameter type hints have been added where possible.
- [General] Return type hints have been added where possible.
- [General] All classes now implement an interface, and are marked as final to prevent inheritance.
- [General] All public properties are no longer visible and should be accessed/updated using their getters/setters.
- [General] NotFoundException is now thrown instead of methods returning null.
- [Controllers] The class constants are now on ControllerInterface.
- [Alarms] The class constants are now on the AlarmInterface.
- [TextToSpeech] You must pass the provider you want to use, there is no default.
- [Support] Drop support for PHP 5.6 and PHP 7.0
- [Support] Drop support for HHVM as there is little demand to make it worthwhile.
- [Tracks] The deprecated
getTitle()
method has been removed, usegetName()
instead. - [Radio] The deprecated
getRadioStations()
andgetRadioShows()
methods have been removed, usegetRadio()->getFavouriteShows()
andgetRadio()->getFavouriteStations()
instead. - [Controllers] The getNetwork() method has been removed.
- [Controllers] Corrected the group look ups for Sonos version 9.1
- [Support] Loosen the requirement on psr/log.
- [Network] Added support for the new ONE devices.
- [Network] Added support for the PLAYBASE devices.
- [Support] Added support for PHP 7.1
- [Support] Dropped support for HHVM
- [Tracks] Added a GoogleUnlimited track to support Google unlimited tracks.
- [Controllers] Ensure PlayBar streaming continues after using interrupt().
- [Tracks] Allow text-to-speech messages longer than 100 characters.
- [Logging] Soap request and responses are now logged under the Debug level.
- [Support] Added support for PHP 7.1
- [Network] Added support for the new version of the PLAY:1.
- [Streams] Ensure the title is picked up when available.
- [Queues] Prevent inifite loop when the start position is invalid.
- [Controller] Allow the Network instance in use to be retrieved using getNetwork().
- [Tracks] Fix the caching of text-to-speech files.
- [Network] Add support for the ZP100 device.
- [Controller] Allow the Line-In to be controlled.
- [Controller] The isStreaming() method now returns true when streaming from Line-In.
- [Network] Allow the network interface to be specified using Network::setNetworkInterface().
- [Network] Correct the cache lookup to only use cache from the same network interface and multicast address.
- [Controllers] The getStateDetails() method can now handle Line-In streams and return a valid State instance.
- [Radio] Correct the constants used for retrieving favourites.
- [Alarms] Fix HHVM handling of days (array constants not valid).
- [Alarms] Correct the handling of days (Sunday is zero and the rest were off by one).
- [Playlists] Correct the adding of tracks that was broken in 1.5.0.
- [Tracks] Created a Google track to handle their specific metadata.
- [Tracks] Allow the Spotify region to be overridden.
- [Tracks] Prevent other services being incorrectly treated as Deezer tracks.
- [Support] Drop support for PHP 5.5, as it nears end-of-life and constant expressions require 5.6
- [Playlist] Ensure the TrackFactory is available when working with playlists.
- [Tracks] Created Spotify/Deezer tracks to handle their specific metadata.
- [Tracks] The album art now only prepends a host if it is missing one
- [Tracks] The QueueTrack has been merged with the Track class.
- [Network] Add support for the ZP80 ZonePlayer device.
- [Tracks] Use league/flysystem to allow access to SMB shares from other machines.
- [Queues] Improve efficiency of adding tracks by adding up to 16 tracks at once.
- [Network] Improve the topology caching as these change fairly frequently.
- [Streams] Allow the name/title of a stream to be retrieved.
- [Spotify] Enable metadata (artist, album, etc) to display correctly in some cases.
- [Network] Cache the device descriptions and topology (these rarely change so the performance improvement is preferable).
- [Support] Drop support for PHP 5.4, as it nears end-of-life and Guzzle 6 requires 5.5
- [Network] Add methods for getting radio station/show information.
- [Tracks] Created a Radio class.
- [Tracks] Use duncan3dc/speaker for text-to-speech handling
- [Tracks] Correct the handling of queueid to avoid metadata loss.
- [Controllers] Only seek if we have some tracks in the queue.
- [Network] Added support for the PLAYBAR and CONNECT devices (treated as the same as PLAY:1, PLAY:3, etc).
- [Tracks] Created a Directory class to handle SMB music library shares.
- [Tracks] Created a TextToSpeech class.
- [Controllers] Added a method to interrupt playback with a single track.
- [Controllers] Created selectTrack() and seek() methods.
- [Controllers] Allowed state to be exported and restored.
- [Controllers] Added methods to check if a controller is streaming or using a queue.
- [Speakers] Added speaker LED functionality to turn on and off, and check status.
- [Speakers] Added equaliser functionality (treble, bass, loudness).
- [Queues] Detect and throw an understandable error when an empty queue is attempted to be played.
- [Alarms] Allow the room/speaker of an alarm to be get and set.
- [Logging] Allow a PSR-3 compatible logger to be passed for logging support.
- [Network] Ignore any non Sonos devices from the discovery.
- [Network] Ignore any Sonos devices that are not speakers (bridges, etc).
- [Network] Return null from getControllerByRoom() if there are no speakers found for that room.
- [Dependencies] Bumped the doctrine/cache requirement to ~1.4.0
- [Playlists] Created a moveTrack() method to re-order playlist tracks.
- [Playlists] Created a hasPlaylist() method on the Network class to check if a playlist exists.
- [Network] Clear the internal cache of how speakers are grouped when one is removed/added.
- [Network] If no devices are found on the network the result is no longer cached.
- [Alarms] Allow alarm information to be read, and managed using the Alarm class
- [Controllers] Added support for Crossfade.
- [Network] The Network class is no longer static, it should be instantiated before calling its methods.
- [Network] The cache handling is now provided by doctrine/cache
- [Controllers] The getStateDetails() method now returns an instance of the State class.
- [Playlists] Creating playlists is now done using the createPlaylist() method on the Network class.
- [Queues/Playlists] Adding individual tracks is now doing using addTrack(), and addTracks() only supports arrays.
- [Queues/Playlists] The getTracks() method now returns an array of QueueTrack instances.
- [Docs] Created a changelog!
- [Exceptions] Methods that throw exceptions related to parameters now throw InvalidArgumentException
Controller::__construct()
Controller::setState()
Network::getSpeakerByRoom()
Network::getSpeakersByRoom()
Network::getControllerByRoom()
Network::getPlaylistByName()
- [Controllers] The getStateDetails() method can now handle empty queues and return a valid array.