mirror of
https://github.com/python-kasa/python-kasa.git
synced 2025-04-26 16:46:23 +00:00

* Discover refactoring, enhancements to the cli tool * Discover tries to detect the type of the device from sysinfo response * Discover.discover() returns an IP address keyed dictionary, values are initialized instances of the automatically detected device type. * When no IP is given, autodetect all supported devices and print out their states * When only IP but no type is given, autodetect type and make a call based on that information. * One can define --bulb or --plug to skip the detection. * renamed pyHS100.py -> smartdevice.py * SmartPlugException -> SmartDeviceException in comments * fix mic_type check * make time() return None on failure as we don't know which devices support getting the time and it's used in the cli tool * hw_info: check if key exists before accessing it, add mic_mac and mic_type * Check for mic_mac on mac, based on work by kdschloesser on issue #59 * make hound happy, __init__ on SmartDevice cannot error out so removing 'raises' documentation
pyHS100
Python Library to control TPLink smart plugs (HS100, HS105, HS110, HS200) and TPLink smart bulbs (LB1xx).
Usage
The package is shipped with a console tool named pyhs100, please refer to pyhs100 --help
for detailed usage.
Note: The tool does not currently support bulb-specific commands, please feel free to prepare a pull request!
Discovering devices
$ pyhs100 discover
Discovering devices for 5 seconds
Found device: {'ip': '192.168.250.186',
'port': 9999,
'sys_info': {'emeter': {'get_realtime': {'current': 0.013309,
<snip>
Querying the state
$ pyhs100 --ip 192.168.250.186
== My Smart Plug - HS110(EU) ==
Device state: OFF
LED state: False
Time: 1970-01-01 01:52:35
On since: 2017-03-19 17:09:16.408657
Hardware: 1.0
Software: 1.0.8 Build 151101 Rel.24452
MAC (rssi): 50:C7:BF:XX:XX:XX (-61)
Location: {'longitude': XXXX, 'latitude': XXXX}
== Emeter ==
Current state: {'power': 0, 'total': 0.001, 'current': 0.013552, 'voltage': 223.394238}
Library usage
For all available API functions run help(SmartPlug)
or help(SmartBulb)
.
from pyHS100 import SmartPlug, SmartBulb
from pprint import pformat as pf
plug = SmartPlug("192.168.250.186")
print("Alias, type and supported features: %s" % (plug.identify(),))
print("Hardware: %s" % pf(plug.hw_info))
print("Full sysinfo: %s" % pf(plug.get_sysinfo())) # this prints lots of information about the device
Time information
print("Current time: %s" % plug.time)
print("Timezone: %s" % plug.timezone)
Getting and setting the name
print("Alias: %s" % plug.alias)
plug.alias = "My New Smartplug"
State & switching
print("Current state: %s" % plug.state)
plug.turn_off()
plug.turn_on()
or
plug.state = "ON"
plug.state = "OFF"
Getting emeter status (on HS110)
print("Current consumption: %s" % plug.get_emeter_realtime())
print("Per day: %s" % plug.get_emeter_daily(year=2016, month=12))
print("Per month: %s" % plug.get_emeter_monthly(year=2016))
Switching the led
print("Current LED state: %s" % plug.led)
plug.led = False # turn off led
print("New LED state: %s" % plug.led)
Languages
Python
100%