Crate tapo

source ·
Expand description

Tapo API Client.

Tested with light bulbs (L510, L520, L530, L610, L630), light strips (L900, L920, L930), plugs (P100, P105, P110, P115, P300), hubs (H100), switches (S200B) and sensors (KE100, T100, T110, T300, T310, T315).

§Example with L530

use std::{env, thread, time::Duration};

use tapo::{requests::Color, ApiClient};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let tapo_username = env::var("TAPO_USERNAME")?;
    let tapo_password = env::var("TAPO_PASSWORD")?;
    let ip_address = env::var("IP_ADDRESS")?;

    let device = ApiClient::new(tapo_username, tapo_password)
        .l530(ip_address)
        .await?;

    println!("Turning device on...");
    device.on().await?;

    println!("Setting the brightness to 30%...");
    device.set_brightness(30).await?;

    println!("Setting the color to `Chocolate`...");
    device.set_color(Color::Chocolate).await?;

    println!("Waiting 2 seconds...");
    thread::sleep(Duration::from_secs(2));

    println!("Setting the color to `Deep Sky Blue` using the `hue` and `saturation`...");
    device.set_hue_saturation(195, 100).await?;

    println!("Waiting 2 seconds...");
    thread::sleep(Duration::from_secs(2));

    println!("Setting the color to `Incandescent` using the `color temperature`...");
    device.set_color_temperature(2700).await?;

    println!("Waiting 2 seconds...");
    thread::sleep(Duration::from_secs(2));

    println!("Using the `set` API to change multiple properties in a single request...");
    device
        .set()
        .brightness(50)
        .color(Color::HotPink)
        .send(&device)
        .await?;

    println!("Waiting 2 seconds...");
    thread::sleep(Duration::from_secs(2));

    println!("Turning device off...");
    device.off().await?;

    let device_info = device.get_device_info().await?;
    println!("Device info: {device_info:?}");

    let device_usage = device.get_device_usage().await?;
    println!("Device usage: {device_usage:?}");

    Ok(())
}

See more examples.

Modules§

Structs§

Enums§

Traits§