sonos-discovery
A Rust library for discovering Sonos devices on your local network using SSDP (Simple Service Discovery Protocol).
Features
- Simple API for one-time device discovery
- Iterator-based streaming for flexible processing
- Automatic deduplication of devices
- Filters out non-Sonos devices
- Configurable timeout
- Resource cleanup on early termination
Usage
Add to your Cargo.toml:
[]
= { = "../sonos-discovery" }
Quick Start
Discover all Sonos devices with default settings:
use get;
Custom Timeout
Specify a custom timeout for discovery:
use get_with_timeout;
use Duration;
Iterator API
Use the iterator API for more control:
use ;
Device Information
Each discovered device includes:
id: Unique device identifier (UDN)name: Friendly nameroom_name: Room where the device is locatedip_address: IP address on the networkport: Port number (typically 1400)model_name: Model name (e.g., "Sonos One")
How It Works
- Sends SSDP M-SEARCH multicast request for Sonos ZonePlayer devices
- Receives SSDP responses from devices on the network
- Filters responses to identify likely Sonos devices
- Fetches device description XML via HTTP
- Parses and validates device information
- Yields discovered devices as events
License
This crate is part of a larger Sonos control project.