Skip to content
/ sonor Public
forked from jakobhellermann/sonor

Idiomatic wrapper around upnp_zoneplayer1 for Rust

Notifications You must be signed in to change notification settings

wdcocq/sonor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub last commit Crates.io

This crate is a Sonos controller library written in Rust. It operates asynchronously and aims for a simple to use yet powerful API.

Example

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 docs.

If your use case isn't covered, this crate also exposes the raw UPnP Action API here. It can be used like this:

use sonor::URN;

let service = URN::service("schemas-upnp-org", "GroupRenderingControl", 1);
let args = "<InstanceID>0</InstanceID>";
let response = speaker.action(&service, "GetGroupMute", args).await?;

println!("{}", response["CurrentMute"]);

About

Idiomatic wrapper around upnp_zoneplayer1 for Rust

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 100.0%