mirror of
https://github.com/python-kasa/python-kasa.git
synced 2024-12-22 19:23:34 +00:00
b80923061f
* update the changelog * revise README, fixes #86 * bump the version * final changelog update for 0.3.0
459 lines
15 KiB
Plaintext
459 lines
15 KiB
Plaintext
Changelog
|
|
=========
|
|
|
|
0.3.0 (2017-09-14)
|
|
------------------
|
|
|
|
This is the first release after a while and aims to improve the robustness all-around.
|
|
To make this happen we have decided to break the API and drop the support for Python 2.
|
|
|
|
API break:
|
|
* Python2 support has been dropped.
|
|
* pyHS100/pyHS100.py has been splitted to smartdevice.py, smartplug.py and smartbulb.py, no one should have ever accessed these directly though.
|
|
* SmartPlugException is no more, SmartDeviceException is used by both SmartPlug and SmartBulb
|
|
* Discovery has been moved from TPLinkSmartHomeProtocol into its own class for easier 3rd party use.
|
|
* SmartDevice's identify() and `features` will emit a warning when used. These will likely be dropped or revised in the future and their use should be avoided.
|
|
|
|
Other changes:
|
|
|
|
* CLI tool supports device discovery and is usable without specifying device type or IP for testing
|
|
* CLI tool supports changing bulb-specific settings
|
|
* Library support & unit tests are extended to cover more devices.
|
|
- Supported plugs: HS100, HS105, HS110
|
|
- Supported switches: HS200
|
|
- Supported bulbs: LB100, LB110, LB120, LB130
|
|
|
|
- Bump the version. [Teemu Rytilahti]
|
|
|
|
- Revise README, fixes #86. [Teemu Rytilahti]
|
|
|
|
- Update the changelog. [Teemu Rytilahti]
|
|
|
|
- Local test clean (#96) [Sean Gollschewsky]
|
|
|
|
* Add ignores for working coverage/tox/IDE files.
|
|
|
|
* Allow tox not to fail if python version is not available.
|
|
|
|
- Move SmartDeviceException to SmartDevice, and remove types.py complet…
|
|
(#95) [Teemu R]
|
|
|
|
* move SmartDeviceException to SmartDevice, and remove types.py completely. fixes #94
|
|
|
|
* do not import skipIf anymore
|
|
|
|
- Move has_emeter implementation from SmartDevice to SmartPlug, avoid
|
|
using features() internally (#93) [Teemu R]
|
|
|
|
* move has_emeter implementation from SmartDevice to SmartPlug, avoid using features() internally
|
|
|
|
* add stacklevel to deprecation warnings to see where they are really called
|
|
|
|
* make tests pass on a real device. if PLUG_IP is not None, the tests will be run on a device at the defined IP address
|
|
|
|
- Add typing hints to make it easier for 3rd party developers to use the
|
|
library (#90) [Teemu R]
|
|
|
|
* add typing hints to make it easier for 3rd party developers to use the library
|
|
|
|
* remove unused devicetype enum to support python3.3
|
|
|
|
* add python 3.3 to travis and tox, install typing module in setup.py
|
|
- Execute coveralls only on travis, fixes #84 (#91) [Teemu R]
|
|
|
|
- Make flake8 pass by some rewording. [Teemu Rytilahti]
|
|
|
|
- Make hound a bit more happier. [Teemu Rytilahti]
|
|
|
|
- Deprecate features and identify, use state_information in __repr__ instead of identify. [Teemu Rytilahti]
|
|
|
|
- Fix smartbulb hsv documentation, values are degrees and percentages instead of 0-255. [Teemu Rytilahti]
|
|
|
|
- Another try, just with module name. [Teemu Rytilahti]
|
|
|
|
- Make tox run pytest-cov, add coveralls. [Teemu Rytilahti]
|
|
|
|
- Prevent failure if device's sysinfo does not have a "feature" attribute. (#77) [Sean Gollschewsky]
|
|
|
|
- Allow None for rssi, add a missing newline to fakes.py. [Teemu Rytilahti]
|
|
|
|
- Add hs100 tests. [Teemu Rytilahti]
|
|
|
|
- Make tests to test against all known device variants. [Teemu Rytilahti]
|
|
|
|
- Remove unused tplinksmarthomeprotocol import. [Teemu Rytilahti]
|
|
|
|
- Fix hs105 mac to pass the test, wrap sysinfo_lb110 properly inside 'system' [Teemu Rytilahti]
|
|
|
|
- Return None instead of False for emeter related actions. [Teemu Rytilahti]
|
|
|
|
- Wrap sysinfo to defaultdict to return None for keys which do not exist, makes unsupported keys not to fail hard (#72) [Teemu R]
|
|
|
|
- Add hs100 example to fakes.py, thanks to Semant1ka on #67 (#74) [Teemu R]
|
|
|
|
- Discover refactoring, enhancements to the cli tool (#71) [Teemu R]
|
|
|
|
* 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
|
|
|
|
- Add LB110 sysinfo (#75) [Sean Gollschewsky]
|
|
|
|
* Add LB110 sysinfo
|
|
|
|
* Linting.
|
|
|
|
- Add @pass_dev to hsv, adjust ranges (#70) [Teemu R]
|
|
|
|
* add @pass_dev to hsv command, it was always broken
|
|
|
|
* Hue goes up to 360, saturation and value are up to 100(%)
|
|
|
|
- Extract shared types (exceptions, enums), add module level doc, rename exception to be generic. [Teemu Rytilahti]
|
|
|
|
- Add check to ensure devices with lat/lon with `_i` suffix are supported (#54) (#56) [Matt LeBrun]
|
|
|
|
* Add check to ensure devices with lat/lon with `_i` suffix are supported (#54)
|
|
|
|
* Add .gitignore for posterity
|
|
|
|
- Generalize smartdevice class and add bulb support for the cli tool (#50) [Teemu R]
|
|
|
|
Fixes #48 and #51. The basic functionality should work on all types of supported devices, for bulb specific commands it is currently necessary to specify ```--bulb```.
|
|
|
|
- Refactor and drop py2 support (#49) [Teemu R]
|
|
|
|
* move is_off property to SmartDevice, implement is_on for bulb and use it
|
|
|
|
* refactor by moving smartbulb and smartplug to their own classes
|
|
|
|
* drop python2 compatibility, make flake8 happy
|
|
|
|
* travis: remove 2.7, add 3.6
|
|
|
|
0.2.4.2 (2017-04-08)
|
|
--------------------
|
|
- Add installation requirement for future package. [Teemu Rytilahti]
|
|
|
|
0.2.4.1 (2017-03-26)
|
|
--------------------
|
|
- Cli: display an error if no ip is given. [Teemu Rytilahti]
|
|
|
|
|
|
0.2.4 (2017-03-26)
|
|
------------------
|
|
|
|
- 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)
|
|
------------------
|
|
|
|
- Add .gitchnagelog.rc for changelog generation. to generate, simply
|
|
install and run gitchangelog. [Teemu Rytilahti]
|
|
|
|
- Version bump. [GadgetReactor]
|
|
|
|
- Initial steps to remove caching (#26) [Teemu R]
|
|
|
|
This commit removes caching of sysinfo to avoid
|
|
inconsistent states as described in issue #14.
|
|
|
|
Each an every access for properties will cause a request
|
|
to be made to the device. To avoid this, user of the library
|
|
may want to access sys_info() directly instead of using the helpers.
|
|
|
|
Currently sys_info() returns raw json object where-as helpers do
|
|
parse information for easier consumption; current state is just to
|
|
provide a PoC how it looks compared to having an active update()
|
|
for fetching the info.
|
|
|
|
- Make tests runnable without device (#24) [Teemu R]
|
|
|
|
* Make tests runnable without device
|
|
|
|
Adds preliminary support for fake devices, thanks to
|
|
hoveeman's sysinfos from issue #14,
|
|
making running tests possible without a device.
|
|
|
|
At the moment we have only HS110 and HS200 infos available, and tests
|
|
are currently run only against HS110 data.
|
|
|
|
* Make tests py27 compatible
|
|
|
|
- Add device discovery (#25) [Teemu R]
|
|
|
|
* add (untested) discover mode
|
|
|
|
* Keep discovery and normal communication separate, uppercase magic consts
|
|
|
|
This sepearates the earlier test code for discovering devices,
|
|
and adds 5 sec timeout for gathering responses from potential devices.
|
|
|
|
This commit also uppercases magic constants.
|
|
|
|
Discovery & communication tested with HS110.
|
|
|
|
* update readme with example how to discover devices, pep8ify
|
|
|
|
- Add timeout to query (#19) [Austin]
|
|
|
|
- Refactor & add unittests for almost all functionality, add tox for
|
|
running tests on py27 and py35 (#17) [Teemu R]
|
|
|
|
* Refactor & add unittests for almost all functionality, add tox for running tests on py27 and py35
|
|
|
|
This commit adds unit tests for current api functionality.
|
|
- currently no mocking, all tests are run on the device.
|
|
- the library is now compatible with python 2.7 and python 3.5, use tox for tests
|
|
- schema checks are done with voluptuous
|
|
|
|
refactoring:
|
|
- protocol is separated into its own file, smartplug adapted to receive protocol worker as parameter.
|
|
- cleaned up the initialization routine, initialization is done on use, not on creation of smartplug
|
|
- added model and features properties, identity kept for backwards compatibility
|
|
- no more storing of local variables outside _sys_info, paves a way to handle state changes sanely (without complete reinitialization)
|
|
|
|
* Fix CI warnings, remove unused leftover code
|
|
|
|
* Rename _initialize to _fetch_sysinfo, as that's what it does.
|
|
|
|
* examples.cli: fix identify call, prettyprint sysinfo, update readme which had false format for led setting
|
|
|
|
* Add tox-travis for automated testing.
|
|
|
|
0.2.2 (2016-12-13)
|
|
------------------
|
|
|
|
- Version bump (#16) [Georgi Kirichkov]
|
|
|
|
- Read all data from the device, disable double-encoding, implement more
|
|
APIs, refactor querying, update README (#11) [Teemu R]
|
|
|
|
* Read from socket until no data available, disable double string encoding
|
|
|
|
HS110 sends sometimes datagrams in chunks especially for get_daystat,
|
|
this patch makes it to read until there is no more data to be read.
|
|
|
|
As json.dumps() does JSON encoding already, there's no need to str()
|
|
the year or month either.
|
|
|
|
* Add cli.py, a simple script to query devices for debugging purposes.
|
|
|
|
* allow easier importing with from pyHS100 import SmartPlug
|
|
|
|
* move cli.py to examples, add short usage into README.md
|
|
|
|
* Implement more available APIs, refactor querying code.
|
|
|
|
This commit adds access to new properties, both read & write, while keeping the old one (mostly) intact.
|
|
Querying is refactored to be done inside _query_helper() method,
|
|
which unwraps results automatically and rises SmartPlugException() in case of errors.
|
|
Errors are to be handled by clients.
|
|
|
|
New features:
|
|
* Setting device alias (plug.alias = "name")
|
|
* led read & write
|
|
* icon read (doesn't seem to return anything without cloud support at least), write API is not known, throws an exception currently
|
|
* time read (returns datetime), time write implemented, but not working even when no error is returned from the device
|
|
* timezone read
|
|
* mac read & write, writing is untested for now.
|
|
|
|
Properties for easier access:
|
|
* hw_info: return hw-specific elements from sysinfo
|
|
* on_since: pretty-printed from sysinfo
|
|
* location: latitude and longitued from sysinfo
|
|
* rssi: rssi from sysinfo
|
|
|
|
* Update README.md with examples of available features.
|
|
|
|
* Handle comments from mweinelt
|
|
|
|
* Refactor state handling, use booleans instead of strings
|
|
|
|
* Fix issues raised during the review.
|
|
|
|
Following issues are addressed by this commit:
|
|
* All API is more or less commented (including return types, exceptions, ..)
|
|
* Converted state to use
|
|
* Added properties is_on, is_off for those who don't want to check against strings.
|
|
* Handled most issues reported by pylint.
|
|
* Adjusted _query_helper() to strip off err_code from the result object.
|
|
* Fixed broken format() syntax for string formattings.
|
|
|
|
* Fix ci woes plus one typo.
|
|
|
|
* Do initialization after changing device properties, fix nits.
|
|
|
|
- Constants will be static members of SmartPlug. [Martin Weinelt]
|
|
|
|
- Set up hound-ci. [Martin Weinelt]
|
|
|
|
- Normalize docstrings, address flake8 & pylint recommendations. [Martin
|
|
Weinelt]
|
|
|
|
- Properly detect advertised features, expose alias. [Martin Weinelt]
|
|
|
|
- Externalize the TP-Link Smart Home Protocol. [Martin Weinelt]
|
|
|
|
- HS200 support. [GadgetReactor]
|
|
|
|
Update version to reflect latest changes
|
|
|
|
- Adding in support for the HS200 Wall switch referencing issues (#4),
|
|
simplifying model determination. [Stephen Maggard]
|
|
|
|
- Adding in support for the HS200 Wall switch referencing issues (#4),
|
|
simplifying model determination. [Stephen Maggard]
|
|
|
|
- Adding in support for the HS200 Wall switch referencing issues (#4)
|
|
[Stephen Maggard]
|
|
|
|
- Refactors state property to use get_info() and removes hs100_status()
|
|
[Georgi Kirichkov]
|
|
|
|
- Adds model check to current_consumption() and removes whitespace.
|
|
[Georgi Kirichkov]
|
|
|
|
- Fixes indentation and removes extra whitespaces. [Georgi Kirichkov]
|
|
|
|
- Update setup.py. [GadgetReactor]
|
|
|
|
- Update LICENSE. [GadgetReactor]
|
|
|
|
Updated to GPLv3 (instead of just copy and pasting)
|
|
|
|
0.2.0 (2016-10-17)
|
|
------------------
|
|
|
|
- Bumps the module version to 0.2.0. [Georgi Kirichkov]
|
|
|
|
- Adds additional comments, for better compliance with the Apache
|
|
license. [Georgi Kirichkov]
|
|
|
|
- Makes the socket sending code compatible with both Python 2 and python
|
|
3. [Georgi Kirichkov]
|
|
|
|
Adds a shutdown to the socket used to send commands
|
|
|
|
- Refactors state() to use turn_on() and turn_off() [Georgi Kirichkov]
|
|
|
|
- Adds Energy Meter commands available on the TP-Link HS110. [Georgi
|
|
Kirichkov]
|
|
|
|
Also adds turn_on() and turn_off() commands to supplement the state
|
|
|
|
- Update pyHS100.py. [GadgetReactor]
|
|
|
|
- Update __init__.py. [GadgetReactor]
|
|
|
|
- Update __init__.py. [GadgetReactor]
|
|
|
|
0.1.2 (2016-07-09)
|
|
------------------
|
|
|
|
- 0.1.2. [GadgetReactor]
|
|
|
|
- Update setup.py. [GadgetReactor]
|
|
|
|
- Update setup.py. [GadgetReactor]
|
|
|
|
- Delete pyHS100.py. [GadgetReactor]
|
|
|
|
- Create pyHS100.py. [GadgetReactor]
|
|
|
|
- Create __init__.py. [GadgetReactor]
|
|
|
|
- Create setup.py. [GadgetReactor]
|
|
|
|
- Create pyHS100.py. [GadgetReactor]
|
|
|
|
- Initial commit. [GadgetReactor]
|
|
|
|
|