diff --git a/CHANGELOG b/CHANGELOG index 85fbb859..1dce997b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,77 @@ Changelog ========= +0.2.4 (2017-03-20) +------------------ + +- Add new client tool (#42) [Teemu R] + + * Add new client tool + + After installing the package pyhs100 command-line tool can be used + to control the plug. + + See --help for its usage, most of the features for plugs are implemented, + some of the shared functionality works for bulbs too. + + * Add discover command + + * Delete old examples, the cli works as an example well enough + +- Ignore OSError on socket.shutdown() [Teemu Rytilahti] + + This fixes #22 and obsoletes PR #23. +- Set color temp to 0 when trying to change color (#36) [pete1450] + + * set color temp to 0 when trying to change color + + * changed tabs to spaces + +- Add changelog & add .gitchangelog.rc (#28) [Teemu R] + + This commits adds .gitchangelog.rc for changelog generation. + To generate, simply run gitchangelog. + +- Discover: Catch socket.timeout and debug log it (#34) [Teemu R] + + Fixes #33 + +- Add flake8 to tox, disable qa on pyHS100/__init__.py, fix py27 + compatibility (#31) [Teemu R] + +- Add support for TP-Link smartbulbs (#30) [Matthew Garrett] + + * Add support for new-style protocol + + Newer devices (including my LB130) seem to include the request length in + the previously empty message header, and ignore requests that lack it. They + also don't send an empty packet as the final part of a response, which can + lead to hangs. Add support for this, with luck not breaking existing devices + in the process. + + * Fix tests + + We now include the request length in the encrypted packet header, so strip + the header rather than assuming that it's just zeroes. + + * Create a SmartDevice parent class + + Add a generic SmartDevice class that SmartPlug can inherit from, in + preparation for adding support for other device types. + + * Add support for TP-Link smartbulbs + + These bulbs use the same protocol as the smart plugs, but have additional + commands for controlling bulb-specific features. In addition, the bulbs + have their emeter under a different target and return responses that + include the energy unit in the key names. + + * Add tests for bulbs + + Not entirely comprehensive, but has pretty much the same level of testing + as plugs + + 0.2.3 (2017-01-11) ------------------ diff --git a/HOWTO_RELEASE b/HOWTO_RELEASE new file mode 100644 index 00000000..6174eb52 --- /dev/null +++ b/HOWTO_RELEASE @@ -0,0 +1,22 @@ +# Preparing the changelog + +Looks like gitchangelog is not as nice as thought before, +however, you can generate the changelog by doing this: + +$ gitchangelog 0.x.y..HEAD + +and manually placing the output to CHANGELOG and fixing +the newlines between commit messages, and cleaning up the +unnecessary entries, and finally commiting the file. + +After that prepare a pull request containing the changed, +release-related files (CHANGELOG, setup.py, README, ..). + +# After release merge is done + +$ git tag -a v0.x.y -m "0.x.y" +$ git push --tags + +# Pushing to pypi + +$ python setup.py sdist bdist_wheel upload diff --git a/README.md b/README.md index c0e1c9a4..b72a4dd9 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,47 @@ # pyHS100 -Python Library to control TPLink Switch (HS100 / HS110) + +Python Library to control TPLink smart plugs (HS100, HS105, HS110, HS200) and TPLink smart bulbs (LB1xx). # Usage -For all available API functions run ```help(SmartPlug)``` +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, + +``` + +## 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)```. ```python -from pyHS100 import SmartPlug +from pyHS100 import SmartPlug, SmartBulb from pprint import pformat as pf plug = SmartPlug("192.168.250.186") @@ -53,15 +88,3 @@ plug.led = False # turn off led print("New LED state: %s" % plug.led) ``` - -# Example -There is also a simple tool for testing connectivity in examples, to use: -```python -python -m examples.cli -``` - -# Discovering devices -```python -python3 -m examples.discover -``` - diff --git a/setup.py b/setup.py index ff863148..eae50f26 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup setup(name='pyHS100', - version='0.2.3', + version='0.2.4', description='Interface for TPLink HS100 Smart Plugs.', url='https://github.com/GadgetReactor/pyHS100', author='Sean Seah (GadgetReactor)',