plugp100
Controller for TP-Link Tapo P100 and other devices
What it is and what it does
plugp100 is an async Python client for TP-Link Tapo smart home devices. It abstracts device communication behind a component-based architecture, where each device (plug, bulb, hub) is composed of capability components like OnOff, Energy, Overheating, and sensors. The library handles multiple encryption protocols (Klap v1, Klap v2, Passthrough) and can auto-detect device type and protocol when given only an IP address and credentials.
You use it to discover Tapo devices on your network, connect to them by IP, and read or control their state—turning plugs on/off, reading energy consumption, managing hub-connected sensors, and controlling smart bulbs and LED strips. All operations are async, making it suitable for integration into larger home automation systems or concurrent device management.
Use it for:
- Discover and enumerate all Tapo devices on a home network to build a device inventory.
- Build a home automation dashboard that reads real-time energy consumption from Tapo smart plugs.
- Control multiple Tapo bulbs and plugs programmatically based on time, sensor input, or external events.
- Monitor temperature and humidity sensors connected to a Tapo Hub H100 and trigger actions.
- Integrate Tapo device control into a larger IoT orchestration or home assistant platform.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
A Python library for controlling and discovering TP-Link Tapo smart devices (plugs, bulbs, hubs, and sensors) over the network using async I/O and multiple encryption protocols.
Yes, if you own TP-Link Tapo devices and need programmatic control. The library is actively maintained, has low install friction, supports Python 3.10, 3.11, and 3.12, and covers a wide range of Tapo hardware. The GPL-3.0-only copyleft license is a consideration for proprietary integrations. No known security vulnerabilities.
Install
plugp100 on PyPI
pip
pip install plugp100uv
uv add plugp100poetry
poetry add plugp100Installing plugp100
Before you install
Low install friction with a pure-Python wheel. Active maintenance with a recent release and steady repository activity. Requires Python 3.10 or later.
License in practice
GPL-3.0-only copyleft license means any derivative work must also be licensed under GPL-3.0; suitable for open-source projects but requires careful review if integrating into proprietary software.
Quickstart
pip install plugp100
import asyncio
from plugp100.common.credentials import AuthCredential
from plugp100.devices.factory import connect, DeviceConnectConfiguration
async def main():
credentials = AuthCredential("username", "password")
config = DeviceConnectConfiguration(host="device_ip", credentials=credentials)
device = await connect(config)
await device.update()
print(device.raw_state)
asyncio.run(main())
Requires Python 3.10 or later; device must be on the same network and credentials must be valid Tapo account credentials.
Verify before relying
- Whether all listed device types (water leak sensors, door locks, temperature/humidity sensors) are fully functional or still in development.
- Performance characteristics when controlling many devices simultaneously or on high-latency networks.
- Compatibility with Tapo devices released after the library's last update.
Package facts
| License | GPL-3.0-only (copyleft) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 10 — aiohttp, certifi, cryptography, ecdsa, jsons, passlib, requests, scapy, semantic-version, urllib3 |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 137,489/month — #11,364 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: plugp100-6.0.1-py3-none-any.whl
Keywords: Tapo, P100
Tags
More Networking packages
h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
psutilpsutil retrieves real-time information about…
permissive · top 1,000 on PyPI
pyOpenSSLpyOpenSSL wraps OpenSSL's SSL/TLS functionality…
permissive · top 1,000 on PyPI
uvloopuvloop is a drop-in replacement for Python's…
permissive · top 1,000 on PyPI
execnetexecnet lets you spawn and communicate with…
permissive · top 1,000 on PyPI
pyzmqPyZMQ provides Python bindings for ZeroMQ…
permissive · top 1,000 on PyPI
pytapoPyTapo is a Python library that communicates…
permissive · top 15,000 on PyPI
python-kasaControl TP-Link Kasa and Tapo smart home…
copyleft · top 15,000 on PyPI
meross-iotA Python library for controlling Meross IoT…
permissive · top 15,000 on PyPI
pyvesyncAsynchronous Python library to discover,…
permissive · top 15,000 on PyPI
pywizlightA Python library and CLI tool for discovering…
permissive · top 15,000 on PyPI
tinytuyaControls and monitors Tuya WiFi smart devices…
permissive · top 15,000 on PyPI
pyswitchbeeA Python library for controlling SwitchBee…
permissive · top 15,000 on PyPI
flux-ledControls Magic Home and Surp Life WiFi LED…
copyleft · top 15,000 on PyPI
python-miioPython library and CLI tool for controlling…
copyleft · top 15,000 on PyPI
broadlinkA Python module and CLI for discovering,…
permissive · top 15,000 on PyPI