tapo 0.8.4

Unofficial Tapo API Client. Works with TP-Link Tapo smart devices. Tested with light bulbs (L510, L520, L530, L535, L610, L630), light strips (L900, L920, L930), plugs (P100, P105, P110, P110M, P115), power strips (P300, P304), hubs (H100), switches (S200B) and sensors (KE100, T100, T110, T300, T310, T315).
Documentation

Tapo

License Crates Documentation Crates.io PyPI Python PyPI
Unofficial Tapo API Client. Works with TP-Link Tapo smart devices. Tested with light bulbs (L510, L520, L530, L535, L610, L630), light strips (L900, L920, L930), plugs (P100, P105, P110, P110M, P115), power strips (P300, P304), hubs (H100), switches (S200B) and sensors (KE100, T100, T110, T300, T310, T315).

Device support

✓ - Rust only
✅ - Rust and Python

Feature GenericDevice L510L520L610 L530L535L630 L900 L920L930 P100P105 P110P110MP115 P300P304MP316M H100
device_reset
get_child_device_component_list_json
get_child_device_list
get_child_device_list_json
get_current_power
get_device_info
get_device_info_json
get_device_usage
get_energy_data
get_energy_usage
get_supported_ringtone_list
off
on
play_alarm
refresh_session
set_brightness
set_color
set_color_temperature
set_hue_saturation
set_lighting_effect
set() API *
stop_alarm

* The set() API allows multiple properties to be set in a single request.

Hub (H100) Child Devices Support

✓ - Rust only
✅ - Rust and Python

Feature KE100 S200B T100 T110 T300 T310T315
get_device_info *
get_device_info_json
get_temperature_humidity_records
get_trigger_logs
set_child_protection
set_frost_protection
set_max_control_temperature
set_min_control_temperature
set_target_temperature
set_temperature_offset

* Obtained by calling get_child_device_list on the hub device or get_device_info on a child device handler.

Rust

Usage

Cargo.toml

[dependencies]
tapo = "0.8"

main.rs

let device = ApiClient::new("<tapo-username>", "tapo-password")
    .p110("<device ip address>")
    .await?;

device.on().await?;

Examples

export TAPO_USERNAME=
export TAPO_PASSWORD=
export IP_ADDRESS=

cargo run --example tapo_l530

See all examples in /tapo/examples.

Wrapper REST API

tapo-rest is a REST wrapper of this library that can be deployed as a service or serve as an advanced example.

Python

Usage

pip install tapo
client = ApiClient("<tapo-username>", "tapo-password")
device = await client.p110("<device ip address>")

await device.on()

Examples

cd tapo-py
poetry install # On the initial run
poetry shell
maturin develop # On the initial run and whenever the Rust code is modified

export TAPO_USERNAME=
export TAPO_PASSWORD=
export IP_ADDRESS=
python examples/tapo_p110.py

See all examples in /tapo-py/examples.

Contributing

Contributions are welcome and encouraged! See /CONTRIBUTING.md.

Credits

Inspired by petretiandrea/plugp100.