![GitHub last commit](https://img.shields.io/github/last-commit/jakobhellermann/sonor.svg) [![Crates.io](https://img.shields.io/crates/v/sonor.svg)](https://crates.io/crates/sonor) This crate is a Sonos controller library written in Rust. It operates asynchronously and aims for a simple to use yet powerful API. # Example ```rust let speaker = sonor::find("your room name", Duration::from_secs(2)).await? .expect("room exists"); println!("The volume is currently at {}", speaker.volume().await?); match speaker.track().await? { Some(track_info) => println!("- Currently playing '{}", track_info.track()), None => println!("- No track currently playing"), } speaker.clear_queue().await?; speaker.join("some other room").await?; ``` For a full list of actions implemented, look at the [Speaker](struct.Speaker.html) docs. If your use case isn't covered, this crate also exposes the raw UPnP Action API [here](struct.Speaker.html#method.action). It can be used like this: ```rust use sonor::URN; let service = URN::service("schemas-upnp-org", "GroupRenderingControl", 1); let args = "0"; let response = speaker.action(&service, "GetGroupMute", args).await?; println!("{}", response["CurrentMute"]); ```