skillfed

plugp100

Controller for TP-Link Tapo P100 and other devices

plugp100 v6.0.1 137.5K downloads/30d#11,364 on PyPI89
Copyleft license GPL-3.0-only Active released

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 plugp100

uv

uv add plugp100

poetry

poetry add plugp100

Installing 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

Development Status :: 5 - Production/StableProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12

Tags

tapo smart plug controltp-link tapo device librarysmart home device automationtapo device discoverytapo bulb plug hub controltapo async python clientsmart plug energy monitoring
smart-homeasync-iodevice-control

More Networking packages