Skip to main content

Unofficial Tapo API Client. Works with TP-Link Tapo smart devices. Tested with plugs (P100, P105, P110, P115).

Project description

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, L530, L610, L630), light strips (L900, L920, L930), plugs (P100, P105, P110, P115), hubs (H100), switches (S200B) and sensors (T100, T110, T310, T315).

Device support

✓ - Rust only
✅ - Rust and Python

Feature GenericDevice L510, L610 L530, L630, L900 L920, L930 P100, P105 P110, P115
on
off
get_device_info
get_device_usage
get_energy_usage
get_energy_data
get_current_power
set_brightness
set_color
set_hue_saturation
set_color_temperature
set_lighting_effect
set() API *

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

Hub (H100) Support

Feature S200B T100 T110 T310, T315
get_device_info *
get_temperature_humidity_records
get_trigger_logs

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

Rust

Usage

Cargo.toml

[dependencies]
tapo = "0.7"

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
poetry shell

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.

Troubleshooting

1. Installing openssl on Windows

With chocolatey

choco install openssl
[System.Environment]::SetEnvironmentVariable('OPENSSL_DIR', $Env:Programfiles + "\OpenSSL-Win64", "User")

or with vcpkg

git clone git@github.com:microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat
./vcpkg.exe install openssl-windows:x64-windows
./vcpkg.exe install openssl:x64-windows-static
./vcpkg.exe integrate install
[System.Environment]::SetEnvironmentVariable('OPENSSL_DIR', (Get-Location).Path + "\installed\x64-windows-static", "User")

Credits

Inspired by petretiandrea/plugp100.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tapo-0.1.2.tar.gz (55.9 kB view hashes)

Uploaded Source

Built Distributions

tapo-0.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

tapo-0.1.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

tapo-0.1.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

tapo-0.1.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

tapo-0.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

tapo-0.1.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

tapo-0.1.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

tapo-0.1.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

tapo-0.1.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

tapo-0.1.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

tapo-0.1.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

tapo-0.1.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

tapo-0.1.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

tapo-0.1.2-pp37-pypy37_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ s390x

tapo-0.1.2-pp37-pypy37_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686

tapo-0.1.2-pp37-pypy37_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

tapo-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

tapo-0.1.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (4.9 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

tapo-0.1.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

tapo-0.1.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

tapo-0.1.2-cp311-none-win_amd64.whl (2.8 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

tapo-0.1.2-cp311-none-win32.whl (2.5 MB view hashes)

Uploaded CPython 3.11 Windows x86

tapo-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

tapo-0.1.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

tapo-0.1.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

tapo-0.1.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

tapo-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (2.8 MB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

tapo-0.1.2-cp311-cp311-macosx_10_7_x86_64.whl (3.1 MB view hashes)

Uploaded CPython 3.11 macOS 10.7+ x86-64

tapo-0.1.2-cp310-none-win_amd64.whl (2.8 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

tapo-0.1.2-cp310-none-win32.whl (2.5 MB view hashes)

Uploaded CPython 3.10 Windows x86

tapo-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

tapo-0.1.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

tapo-0.1.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

tapo-0.1.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

tapo-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (2.8 MB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

tapo-0.1.2-cp310-cp310-macosx_10_7_x86_64.whl (3.1 MB view hashes)

Uploaded CPython 3.10 macOS 10.7+ x86-64

tapo-0.1.2-cp39-none-win_amd64.whl (2.8 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

tapo-0.1.2-cp39-none-win32.whl (2.5 MB view hashes)

Uploaded CPython 3.9 Windows x86

tapo-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

tapo-0.1.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

tapo-0.1.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

tapo-0.1.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

tapo-0.1.2-cp38-none-win_amd64.whl (2.8 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

tapo-0.1.2-cp38-none-win32.whl (2.5 MB view hashes)

Uploaded CPython 3.8 Windows x86

tapo-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

tapo-0.1.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

tapo-0.1.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

tapo-0.1.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

tapo-0.1.2-cp37-none-win_amd64.whl (2.8 MB view hashes)

Uploaded CPython 3.7 Windows x86-64

tapo-0.1.2-cp37-none-win32.whl (2.5 MB view hashes)

Uploaded CPython 3.7 Windows x86

tapo-0.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

tapo-0.1.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (5.0 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ s390x

tapo-0.1.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (4.7 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ppc64le

tapo-0.1.2-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

tapo-0.1.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.3 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARMv7l

tapo-0.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.4 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page