-
-
Notifications
You must be signed in to change notification settings - Fork 223
Add emeter support for strip sockets #203
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov Report
@@ Coverage Diff @@
## master #203 +/- ##
==========================================
+ Coverage 75.04% 76.45% +1.41%
==========================================
Files 11 12 +1
Lines 1250 1270 +20
Branches 181 183 +2
==========================================
+ Hits 938 971 +33
+ Misses 273 264 -9
+ Partials 39 35 -4
Continue to review full report at Codecov.
|
testing
|
import asyncio
from kasa import SmartStrip
import logging
logging.basicConfig(level=logging.DEBUG)
strip = SmartStrip("192.168.211.210")
import pprint
async def print_eme():
res = await strip.get_emeter_realtime()
pprint.pprint(dict(res))
res = await strip.get_emeter_daily(year=2021, month=9)
pprint.pprint(dict(res))
res = await strip.get_emeter_monthly(year=2021)
pprint.pprint(dict(res))
asyncio.run(strip.update())
asyncio.run(print_eme())
pprint.pprint(strip) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR and the cleanups you made alongside! I added some comments inline, what I'd like to see is to see is containing the emeter query inside the SmartStripPlug, which will allow downstreams to directly use the same API (i.e., simply using the emeter_*
properties) for accessing the emeter information as is done on the smartplugs.
Co-authored-by: Teemu R. <tpr@iki.fi>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! 👍 I'm a bit hesitant on creating a separate, generic utils module for the methods that are only used in a single module though.
Looking at the emeter requests from your test output, did you check if single sockets also deliver daily/monthly information now? |
Co-authored-by: Teemu R. <tpr@iki.fi>
Yes import asyncio
from kasa import SmartStrip
import logging
# logging.basicConfig(level=logging.DEBUG)
strip = SmartStrip("192.168.211.210")
import pprint
async def print_eme():
pprint.pprint(["emeter_this_month", strip.emeter_this_month])
pprint.pprint(["emeter_today", strip.emeter_today])
pprint.pprint(["emeter_realtime", strip.emeter_realtime])
res = await strip.get_emeter_realtime()
pprint.pprint(dict(res))
res = await strip.get_emeter_daily(year=2021, month=9)
pprint.pprint(dict(res))
res = await strip.get_emeter_monthly(year=2021)
pprint.pprint(dict(res))
for plug in strip.children:
pprint.pprint(await plug.get_emeter_daily(year=2021, month=9))
asyncio.run(strip.update())
asyncio.run(print_eme())
pprint.pprint(strip) output
|
I mean using the property getters, so something like:
|
|
Yay, great! 🎉 Let's get this merged and I'll prepare a new dev release. |
* Add support for plugs with emeters. * Tweaks for emeter * black * tweaks * tweaks * more tweaks * dry * flake8 * flake8 * legacy typing * Update kasa/smartstrip.py Co-authored-by: Teemu R. <tpr@iki.fi> * reduce * remove useless delegation * tweaks * tweaks * dry * tweak * tweak * tweak * tweak * update tests * wrap * preen * prune * prune * prune * guard * adjust * robust * prune * prune * reduce dict lookups by 1 * Update kasa/smartstrip.py Co-authored-by: Teemu R. <tpr@iki.fi> * delete utils * isort Co-authored-by: Brendan Burns <brendan.d.burns@gmail.com> Co-authored-by: Teemu R. <tpr@iki.fi>
The most important enhancements in this release are: * Support for emeter on strip sockets * Fix discovery and update() on some devices that do not support multi-module queries (e.g., HS200) * Improved support for bulbs [Full Changelog](python-kasa/python-kasa@0.4.0.dev3...0.4.0.dev4) **Implemented enhancements:** - HS300 Children plugs have emeter [\python-kasa#64](python-kasa#64) - Improve emeterstatus API, move into own module [\python-kasa#205](python-kasa#205) ([rytilahti](https://github.com/rytilahti)) - Avoid temp array during encrypt and decrypt [\python-kasa#204](python-kasa#204) ([bdraco](https://github.com/bdraco)) - Add emeter support for strip sockets [\python-kasa#203](python-kasa#203) ([bdraco](https://github.com/bdraco)) - Add own device type for smartstrip children [\python-kasa#201](python-kasa#201) ([rytilahti](https://github.com/rytilahti)) - bulb: allow set\_hsv without v, add fallback ct range [\python-kasa#200](python-kasa#200) ([rytilahti](https://github.com/rytilahti)) - Improve bulb support \(alias, time settings\) [\python-kasa#198](python-kasa#198) ([rytilahti](https://github.com/rytilahti)) - Improve testing harness to allow tests on real devices [\python-kasa#197](python-kasa#197) ([rytilahti](https://github.com/rytilahti)) - cli: add human-friendly printout when calling temperature on non-supported devices [\python-kasa#196](python-kasa#196) ([JaydenRA](https://github.com/JaydenRA)) **Fixed bugs:** - KL430: Throw error for Device specific information [\python-kasa#189](python-kasa#1 10000 89) - dump\_devinfo: handle latitude/longitude keys properly [\python-kasa#175](python-kasa#175) ([rytilahti](https://github.com/rytilahti)) **Closed issues:** - Feature Request - Toggle Command [\python-kasa#188](python-kasa#188) - Is It Compatible With HS105? [\python-kasa#186](python-kasa#186) - Cannot use some functions with KP303 [\python-kasa#181](python-kasa#181) - Help needed - awaiting game [\python-kasa#179](python-kasa#179) - Version inconsistency between CLI and pip [\python-kasa#177](python-kasa#177) - Release 0.4.0.dev3? [\python-kasa#169](python-kasa#169) - Discover does not support specifying network interface [\python-kasa#167](python-kasa#167) - Can't command or query HS200 v5 switch [\python-kasa#161](python-kasa#161) **Merged pull requests:** - More CI fixes [\python-kasa#208](python-kasa#208) ([rytilahti](https://github.com/rytilahti)) - Fix CI dep installation [\python-kasa#207](python-kasa#207) ([rytilahti](https://github.com/rytilahti)) - Use github actions instead of azure pipelines [\python-kasa#206](python-kasa#206) ([rytilahti](https://github.com/rytilahti)) - Add KP115 fixture [\python-kasa#202](python-kasa#202) ([rytilahti](https://github.com/rytilahti)) - Perform initial update only using the sysinfo query [\python-kasa#199](python-kasa#199) ([rytilahti](https://github.com/rytilahti)) - Add real kasa KL430\(UN\) device dump [\python-kasa#192](python-kasa#192) ([iprodanovbg](https://github.com/iprodanovbg)) - Use less strict matcher for kl430 color temperature [\python-kasa#190](python-kasa#190) ([rytilahti](https://github.com/rytilahti)) - Add EP10\(US\) 1.0 1.0.2 fixture [\python-kasa#174](python-kasa#174) ([nbrew](https://github.com/nbrew)) - Add a note about using the discovery target parameter [\python-kasa#168](python-kasa#168) ([leandroreox](https://github.com/leandroreox))
The most important enhancements in this release are: * Support for emeter on strip sockets * Fix discovery and update() on some devices that do not support multi-module queries (e.g., HS200) * Improved support for bulbs [Full Changelog](python-kasa/python-kasa@0.4.0.dev3...0.4.0.dev4) **Implemented enhancements:** - HS300 Children plugs have emeter [\python-kasa#64](python-kasa#64) - Improve emeterstatus API, move into own module [\python-kasa#205](python-kasa#205) ([rytilahti](https://github.com/rytilahti)) - Avoid temp array during encrypt and decrypt [\python-kasa#204](python-kasa#204) ([bdraco](https://github.com/bdraco)) - Add emeter support for strip sockets [\python-kasa#203](python-kasa#203) ([bdraco](https://github.com/bdraco)) - Add own device type for smartstrip children [\python-kasa#201](python-kasa#201) ([rytilahti](https://github.com/rytilahti)) - bulb: allow set\_hsv without v, add fallback ct range [\python-kasa#200](python-kasa#200) ([rytilahti](https://github.com/rytilahti)) - Improve bulb support \(alias, time settings\) [\python-kasa#198](python-kasa#198) ([rytilahti](https://github.com/rytilahti)) - Improve testing harness to allow tests on real devices [\python-kasa#197](python-kasa#197) ([rytilahti](https://github.com/rytilahti)) - cli: add human-friendly printout when calling temperature on non-supported devices [\python-kasa#196](python-kasa#196) ([JaydenRA](https://github.com/JaydenRA)) **Fixed bugs:** - KL430: Throw error for Device specific information [\python-kasa#189](python-kasa#189) - dump\_devinfo: handle latitude/longitude keys properly [\python-kasa#175](python-kasa#175) ([rytilahti](https://github.com/rytilahti)) **Closed issues:** - Feature Request - Toggle Command [\python-kasa#188](python-kasa#188) - Is It Compatible With HS105? [\python-kasa#186](python-kasa#186) - Cannot use some functions with KP303 [\python-kasa#181](python-kasa#181) - Help needed - awaiting game [\python-kasa#179](python-kasa#179) - Version inconsistency between CLI and pip [\python-kasa#177](python-kasa#177) - Release 0.4.0.dev3? [\python-kasa#169](python-kasa#169) - Discover does not support specifying network interface [\python-kasa#167](python-kasa#167) - Can't command or query HS200 v5 switch [\python-kasa#161](python-kasa#161) **Merged pull requests:** - More CI fixes [\python-kasa#208](python-kasa#208) ([rytilahti](https://github.com/rytilahti)) - Fix CI dep installation [\python-kasa#207](python-kasa#207) ([rytilahti](https://github.com/rytilahti)) - Use github actions instead of azure pipelines [\python-kasa#206](python-kasa#206) ([rytilahti](https://github.com/rytilahti)) - Add KP115 fixture [\python-kasa#202](python-kasa#202) ([rytilahti](https://github.com/rytilahti)) - Perform initial update only using the sysinfo query [\python-kasa#199](python-kasa#199) ([rytilahti](https://github.com/rytilahti)) - Add real kasa KL430\(UN\) device dump [\python-kasa#192](python-kasa#192) ([iprodanovbg](https://github.com/iprodanovbg)) - Use less strict matcher for kl430 color temperature [\python-kasa#190](python-kasa#190) ([rytilahti](https://github.com/rytilahti)) - Add EP10\(US\) 1.0 1.0.2 fixture [\python-kasa#174](python-kasa#174) ([nbrew](https://github.com/nbrew)) - Add a note about using the discovery target parameter [\python-kasa#168](python-kasa#168) ([leandroreox](https://github.com/leandroreox))
* Release 0.4.0.dev4 The most important enhancements in this release are: * Support for emeter on strip sockets * Fix discovery and update() on some devices that do not support multi-module queries (e.g., HS200) * Improved support for bulbs [Full Changelog](0.4.0.dev3...0.4.0.dev4) **Implemented enhancements:** - HS300 Children plugs have emeter [\#64](#64) - Improve emeterstatus API, move into own module [\#205](#205) ([rytilahti](https://github.com/rytilahti)) - Avoid temp array during encrypt and decrypt [\#204](#204) ([bdraco](https://github.com/bdraco)) - Add emeter support for strip sockets [\#203](#203) ([bdraco](https://github.com/bdraco)) - Add own device type for smartstrip children [\#201](#201) ([rytilahti](https://github.com/rytilahti)) - bulb: allow set\_hsv without v, add fallback ct range [\#200](#200) ([rytilahti](https://github.com/rytilahti)) - Improve bulb support \(alias, time settings\) [\#198](#198) ([rytilahti](https://github.com/rytilahti)) - Improve testing harness to allow tests on real devices [\#197](#197) ([rytilahti](https://github.com/rytilahti)) - cli: add human-friendly printout when calling temperature on non-supported devices [\#196](#196) ([JaydenRA](https://github.com/JaydenRA)) **Fixed bugs:** - KL430: Throw error for Device specific information [\#189](#189) - dump\_devinfo: handle latitude/longitude keys properly [\#175](#175) ([rytilahti](https://github.com/rytilahti)) **Closed issues:** - Feature Request - Toggle Command [\#188](#188) - Is It Compatible With HS105? [\#186](#186) - Cannot use some functions with KP303 [\#181](#181) - Help needed - awaiting game [\#179](#179) - Version inconsistency between CLI and pip [\#177](#177) - Release 0.4.0.dev3? [\#169](#169) - Discover does not support specifying network interface [\#167](#167) - Can't command or query HS200 v5 switch [\#161](#161) **Merged pull requests:** - More CI fixes [\#208](#208) ([rytilahti](https://github.com/rytilahti)) - Fix CI dep installation [\#207](#207) ([rytilahti](https://github.com/rytilahti)) - Use github actions instead of azure pipelines [\#206](#206) ([rytilahti](https://github.com/rytilahti)) - Add KP115 fixture [\#202](#202) ([rytilahti](https://github.com/rytilahti)) - Perform initial update only using the sysinfo query [\#199](#199) ([rytilahti](https://github.com/rytilahti)) - Add real kasa KL430\(UN\) device dump [\#192](#192) ([iprodanovbg](https://github.com/iprodanovbg)) - Use less strict matcher for kl430 color temperature [\#190](#190) ([rytilahti](https://github.com/rytilahti)) - Add EP10\(US\) 1.0 1.0.2 fixture [\#174](#174) ([nbrew](https://github.com/nbrew)) - Add a note about using the discovery target parameter [\#168](#168) ([leandroreox](https://github.com/leandroreox)) * replace pypy3 with pypy-3.7 as we do not support python3.6 anyway * skip pypy-3.7 on windows to avoid flaky ci
* Add support for plugs with emeters. * Tweaks for emeter * black * tweaks * tweaks * more tweaks * dry * flake8 * flake8 * legacy typing * Update kasa/smartstrip.py Co-authored-by: Teemu R. <tpr@iki.fi> * reduce * remove useless delegation * tweaks * tweaks * dry * tweak * tweak * tweak * tweak * update tests * wrap * preen * prune * prune * prune * guard * adjust * robust * prune * prune * reduce dict lookups by 1 * Update kasa/smartstrip.py Co-authored-by: Teemu R. <tpr@iki.fi> * delete utils * isort Co-authored-by: Brendan Burns <brendan.d.burns@gmail.com> Co-authored-by: Teemu R. <tpr@iki.fi>
* Release 0.4.0.dev4 The most important enhancements in this release are: * Support for emeter on strip sockets * Fix discovery and update() on some devices that do not support multi-module queries (e.g., HS200) * Improved support for bulbs [Full Changelog](python-kasa/python-kasa@0.4.0.dev3...0.4.0.dev4) **Implemented enhancements:** - HS300 Children plugs have emeter [\python-kasa#64](python-kasa#64) - Improve emeterstatus API, move into own module [\python-kasa#205](python-kasa#205) ([rytilahti](https://github.com/rytilahti)) - Avoid temp array during encrypt and decrypt [\python-kasa#204](python-kasa#204) ([bdraco](https://github.com/bdraco)) - Add emeter support for strip sockets [\python-kasa#203](python-kasa#203) ([bdraco](https://github.com/bdraco)) - Add own device type for smartstrip children [\python-kasa#201](python-kasa#201) ([rytilahti](https://github.com/rytilahti)) - bulb: allow set\_hsv without v, add fallback ct range [\python-kasa#200](python-kasa#200) ([rytilahti](https://github.com/rytilahti)) - Improve bulb support \(alias, time settings\) [\python-kasa#198](python-kasa#198) ([rytilahti](https://github.com/rytilahti)) - Improve testing harness to allow tests on real devices [\python-kasa#197](python-kasa#197) ([rytilahti](https://github.com/rytilahti)) - cli: add human-friendly printout when calling temperature on non-supported devices [\python-kasa#196](python-kasa#196) ([JaydenRA](https://github.com/JaydenRA)) **Fixed bugs:** - KL430: Throw error for Device specific information [\python-kasa#189](python-kasa#189) - dump\_devinfo: handle latitude/longitude keys properly [\python-kasa#175](python-kasa#175) ([rytilahti](https://github.com/rytilahti)) **Closed issues:** - Feature Request - Toggle Command [\python-kasa#188](python-kasa#188) - Is It Compatible With HS105? [\python-kasa#186](python-kasa#186) - Cannot use some functions with KP303 [\python-kasa#181](python-kasa#181) - Help needed - awaiting game [\python-kasa#179](python-kasa#179) - Version inconsistency between CLI and pip [\python-kasa#177](python-kasa#177) - Release 0.4.0.dev3? [\python-kasa#169](python-kasa#169) - Discover does not support specifying network interface [\python-kasa#167](python-kasa#167) - Can't command or query HS200 v5 switch [\python-kasa#161](python-kasa#161) **Merged pull requests:** - More CI fixes [\python-kasa#208](python-kasa#208) ([rytilahti](https://github.com/rytilahti)) - Fix CI dep installation [\python-kasa#207](python-kasa#207) ([rytilahti](https://github.com/rytilahti)) - Use github actions instead of azure pipelines [\python-kasa#206](python-kasa#206) ([rytilahti](https://github.com/rytilahti)) - Add KP115 fixture [\python-kasa#202](python-kasa#202) ([rytilahti](https://github.com/rytilahti)) - Perform initial update only using the sysinfo query [\python-kasa#199](python-kasa#199) ([rytilahti](https://github.com/rytilahti)) - Add real kasa KL430\(UN\) device dump [\python-kasa#192](python-kasa#192) ([iprodanovbg](https://github.com/iprodanovbg)) - Use less strict matcher for kl430 color temperature [\python-kasa#190](python-kasa#190) ([rytilahti](https://github.com/rytilahti)) - Add EP10\(US\) 1.0 1.0.2 fixture [\python-kasa#174](python-kasa#174) ([nbrew](https://github.com/nbrew)) - Add a note about using the discovery target parameter [\python-kasa#168](python-kasa#168) ([leandroreox](https://github.com/leandroreox)) * replace pypy3 with pypy-3.7 as we do not support 7CFC python3.6 anyway * skip pypy-3.7 on windows to avoid flaky ci
Continuation of #154
Fixes #64