Skip to content

Latest commit

 

History

History
87 lines (56 loc) · 3.15 KB

README.md

File metadata and controls

87 lines (56 loc) · 3.15 KB

PyP100

PyP100 is a Python library for controlling many of the TP-Link Tapo devices including the P100, P105, P110 plugs and the L530 and L510E bulbs.

This fork is designed to support the new authentication method and is currently compatible with the P100 version 1.2.1. It also supports the old authentication method.

Most of the code originates from OctoPrint-PSUControl-Tapo.

Installation

PyP100 can be installed using the package manager pip.

pip install git+https://github.com/almottier/TapoP100.git@main

Usage

Plugs - P100, P105 etc.

from PyP100 import PyP100

p100 = PyP100.P100("192.168.X.X", "[email protected]", "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()  # DEPRECATED

Old Authentication Method

The 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 protected]", "Password123",
                   preferred_protocol="old")  # Creates a P100 plug object using the old authentication method only

Bulbs - L530, L510E etc.

from PyP100 import PyL530

l530 = PyL530.L530("192.168.X.X", "[email protected]", "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)

Energy Monitoring - P110

from PyP100 import PyP110

p110 = PyP110.P110("192.168.X.X", "[email protected]", "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 24

If 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.

Contributing

Contributions are always welcome!

Please submit a pull request or open an issue for any changes.

License

MIT