Enhancements:
- Added
zpinfo
command line tool for retrieving ZonePlayer information. Issuezpinfo -h
for help; - Added
excludeAirPlay
key toconfig.json
to exclude zoneplayers that support AirPlay 2 (and already appear in Apple's Home app), see #74. The accessories are still created, but not exposed to HomeKit; - Change Model in Accessory Information to include model name and model id (e.g. "Sonos Playbar (ZPS9)" instead only the model id ("ZPS9"));
- Change debug logging during startup to include the model name as well;
- Re-subscribe to events, after a zoneplayer has rebooted, so you don't have to restart homebridge or wait for the timeout on the old subscriptions before it works.
Code changes:
- Refactored the startup logic of homebridge-zp, so detected capabilities (see #75) can be used to configure which zoneplayers are exposed to HomeKit, and how;
- Start the server for listening to zoneplayer events as soon as first zoneplayer has been discovered, instead of only after homebridge server has started;
- Create the accessory for each zoneplayer as soon as it's discovered, but delay creating the services and characteristics, until after the homebridge server has started;
- Subscribe to
DeviceProperties
events as soon as the accessory has been created, so the discovered capabilities and setup can be used for creating services and characteristics; - Subscribe to
ZoneGroupTopology
events to detect that a zoneplayers has rebooted;
- Removed whitelists for zoneplayers supporting TV Input and supporting Balance (I'm assuming zoneplayers supporting Audio Input support Balance, not sure if this assumption holds);
- Changed how Stereo Pairs (that support Balance) are detected;
- Read zoneplayer's
device_description.xml
for the model name (e.g. "Sonos Playbar"); - Added recursive XML parser (
XmlParser
) that producesstandard
Javascript also fixes some idiosyncrasies in the Sonos API. For now, only used byzpinfo
; - Added ZonePlayer API client library (
ZpClient
) to replace dependency onsonos
. Ultimate goal is to generate Javascript API calls from the service control point definitions published by the ZonePlayer. For now, only used byzpinfo
.
I don't think there's any breaking changes, but as these enhancements involve quite some refactoring, better make it a minor release.