Expand description
§TP-Link Smart Device Client Library
A pure Rust library for communicating with TP-Link smart devices including smart plugs, smart lights, smart dimmers, and power strips.
§Features
- Device discovery via UDP broadcast
- Control smart plugs (on/off, alias, reboot)
- Control smart lights (on/off, brightness, color)
- Control smart dimmers (brightness, inactivity timeout)
- Control power strips (individual socket control, energy monitoring)
- Async/await support with Tokio
- Proper error handling
§Examples
§Discover devices on the network
use tplink::{discover_devices, DeviceData};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let devices = discover_devices().await?;
for device in devices {
match device {
DeviceData::SmartPlug(plug) => {
println!("Found smart plug: {}", plug.alias);
}
DeviceData::SmartLight(light) => {
println!("Found smart light: {}", light.alias);
}
_ => {}
}
}
Ok(())
}§Control a smart plug
use tplink::TpLinkClient;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = TpLinkClient::new();
// Turn on the plug
client.turn_plug_on("192.168.1.100").await?;
// Set brightness if it's a dimmer
client.set_dimmer_brightness("192.168.1.101", 75).await?;
Ok(())
}Re-exports§
pub use client::TpLinkClient;pub use devices::Device;pub use devices::PowerStrip;pub use devices::SmartDimmer;pub use devices::SmartLight;pub use devices::SmartPlug;pub use discovery::discover;pub use discovery::discover_devices;pub use discovery::discover_devices_with_client;pub use error::Result;pub use error::TpLinkError;pub use registry::create_registry;pub use registry::DeviceRegistry;pub use registry::SafeDeviceRegistry;pub use types::*;