Crate tplink

Crate tplink 

Source
Expand description

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::*;

Modules§

client
devices
discovery
error
protocol
registry
types