1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//! Tapo API Client.
//!
//! Tested with light bulbs (L510, L520, L530, L535, L610, L630), light strips (L900, L920, L930),
//! plugs (P100, P105, P110, P110M, P115), power strips (P300, P304M, P306, P316M), hubs (H100), switches (S200B, S200D, S210)
//! and sensors (KE100, T100, T110, T300, T310, T315).
//!
//! # Example with L530
//! ```rust,no_run
//! 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](https://github.com/mihai-dinculescu/tapo/tree/main/tapo/examples).
pub use *;
pub use *;