PyP100 is a Python library for controlling TP-Link Tapo smart devices including P100, P105, P110 plugs and L530, L510E bulbs.
Compatibility: Supports firmware version 1.2 and above with automatic fallback to older authentication methods.
Important: For firmware 1.4.0 and above, you must enable "Third-Party Compatibility" in the Tapo app.
Go to: Me > Third-Party Services > Third-Party Compatibility and toggle it on.
PyP100 can be installed using the package manager pip.
pip install git+https://github.com/almottier/TapoP100.git@mainNote: If you previously installed PyP100 from another source, use
--force-reinstallto ensure you get this version:pip install --force-reinstall git+https://github.com/almottier/TapoP100.git@main
from PyP100 import PyP100
p100 = PyP100.P100("192.168.X.X", "email@gmail.com", "Password123") # Creates a P100 plug object
p100.turnOn() # Turns the connected plug on
p100.turnOff() # Turns the connected plug off
p100.toggleState() # Toggles the state of the connected plug
p100.getDeviceInfo() # Returns dict with all the device info of the connected plug
p100.getDeviceName() # Returns the name of the connected plug set in the app
p100.getCountDownRules() # Returns the countdown rule. Useful to check if you need to update them
p100.handshake() # DEPRECATED
p100.login() # DEPRECATEDThe old authentication method is used as a fallback if the new authentication method fails. It can be forced by setting
the preferred_protocol parameter to "old" when creating the plug object.
from PyP100 import PyP100
p100 = PyP100.P100("192.168.X.X", "email@gmail.com", "Password123",
preferred_protocol="old") # Creates a P100 plug object using the old authentication method onlyfrom PyP100 import PyL530
l530 = PyL530.L530("192.168.X.X", "email@gmail.com", "Password123")
# All the bulbs have the same basic functions as the plugs and additionally allow for the following functions.
l530.setBrightness(50) # Sets the brightness of the connected bulb to 50% brightness
l530.setColorTemp(2700) # Sets the color temperature of the connected bulb to 2700 Kelvin (Warm White)
l530.setColor(30, 80) # Sets the color of the connected bulb to Hue: 30°, Saturation: 80% (Orange)from PyP100 import PyP110
p110 = PyP110.P110("192.168.X.X", "email@gmail.com", "Password123")
# The P110 has all the same basic functions as the plugs and additionally allow for energy monitoring.
p110.getEnergyUsage() # Returns dict with all of the energy usage of the connected plug
p110.getEnergyData(1706825847, 1708643847, MeasureInterval.DAYS) # Returns power consumption per day since 1st Feb 24If you call getEnergyData function, power consumption could be collected per HOURS, DAYS or MONTHS interval. The start timestamp is (most probably) rounded to the midnight, the first day of month or the first of January based on interval.
Contributions are always welcome!
Please submit a pull request or open an issue for any changes.
Thanks to OctoPrint-PSUControl-Tapo project.