[Full Changelog](https://github.com/python-kasa/python-kasa/compare/0.5.4...0.6.0)
This major brings major changes to the library by adding support for devices that require authentication for communications, all of this being possible thanks to the great work by sdb9696!
This release adds support to a large range of previously unsupported devices, including:
* Newer kasa-branded devices, including Matter-enabled devices like KP125M
* Newer hardware/firmware versions on some models, like EP25, that suddenly changed the used protocol
* Tapo-branded devices like plugs (P110), light bulbs (KL530), LED strips (L900, L920), and wall switches (KS205, KS225)
* UK variant of HS110, which was the first device using the new protocol
If your device that is not currently listed as supported is working, please consider contributing a test fixture file.
Special thanks goes to SimonWilkinson who created the initial PR for the new communication protocol!
**Breaking changes:**
- Add DeviceConfig to allow specifying configuration parameters [\569](https://github.com/python-kasa/python-kasa/pull/569) (sdb9696)
- Move connect\_single to SmartDevice.connect [\538](https://github.com/python-kasa/python-kasa/pull/538) (bdraco)
**Implemented enhancements:**
- Support for KS225\(US\) Light Dimmer and KS205\(US\) Light Switch [\589](https://github.com/python-kasa/python-kasa/issues/589)
- Set timeout using command line parameters [\310](https://github.com/python-kasa/python-kasa/issues/310)
- Implement the new protocol \(HTTP over 80/tcp, 20002/udp for discovery\) [\115](https://github.com/python-kasa/python-kasa/issues/115)
- Get child emeters with CLI [\623](https://github.com/python-kasa/python-kasa/pull/623) (Obbay2)
- Avoid linear search for emeter realtime and emeter\_today [\622](https://github.com/python-kasa/python-kasa/pull/622) (bdraco)
- Add update-credentials command [\620](https://github.com/python-kasa/python-kasa/pull/620) (rytilahti)
- Allow serializing and passing of credentials\_hashes in DeviceConfig [\607](https://github.com/python-kasa/python-kasa/pull/607) (sdb9696)
- Implement wifi interface for tapodevice [\606](https://github.com/python-kasa/python-kasa/pull/606) (rytilahti)
- Add support for KS205 and KS225 wall switches [\594](https://github.com/python-kasa/python-kasa/pull/594) (gimpy88)
- Enable multiple requests in smartprotocol [\584](https://github.com/python-kasa/python-kasa/pull/584) (sdb9696)
- Improve CLI Discovery output [\583](https://github.com/python-kasa/python-kasa/pull/583) (sdb9696)
- Improve smartprotocol error handling and retries [\578](https://github.com/python-kasa/python-kasa/pull/578) (sdb9696)
- Request component\_nego only once for tapodevice [\576](https://github.com/python-kasa/python-kasa/pull/576) (rytilahti)
- Use consistent naming for cli envvars [\570](https://github.com/python-kasa/python-kasa/pull/570) (rytilahti)
- Add KP125M fixture and allow passing credentials for tests [\567](https://github.com/python-kasa/python-kasa/pull/567) (sbytnar)
- Make timeout configurable for cli [\564](https://github.com/python-kasa/python-kasa/pull/564) (rytilahti)
- Update dump\_devinfo to produce new TAPO/SMART fixtures [\561](https://github.com/python-kasa/python-kasa/pull/561) (sdb9696)
- Kasa KP125M basic emeter support [\560](https://github.com/python-kasa/python-kasa/pull/560) (sbytnar)
- Add support for tapo bulbs [\558](https://github.com/python-kasa/python-kasa/pull/558) (rytilahti)
- Add klap support for TAPO protocol by splitting out Transports and Protocols [\557](https://github.com/python-kasa/python-kasa/pull/557) (sdb9696)
- Update dump\_devinfo to include 20002 discovery results [\556](https://github.com/python-kasa/python-kasa/pull/556) (sdb9696)
- Set TCP\_NODELAY to avoid needless buffering [\554](https://github.com/python-kasa/python-kasa/pull/554) (bdraco)
- Add support for the protocol used by TAPO devices and some newer KASA devices. [\552](https://github.com/python-kasa/python-kasa/pull/552) (sdb9696)
- Re-add protocol\_class parameter to connect [\551](https://github.com/python-kasa/python-kasa/pull/551) (sdb9696)
- Update discover single to handle hostnames [\539](https://github.com/python-kasa/python-kasa/pull/539) (sdb9696)
- Add klap protocol [\509](https://github.com/python-kasa/python-kasa/pull/509) (sdb9696)
**Fixed bugs:**
- dump\_devinfo crashes when credentials are not given [\591](https://github.com/python-kasa/python-kasa/issues/591)
- Fix connection indeterminate state on cancellation [\636](https://github.com/python-kasa/python-kasa/pull/636) (bdraco)
- Check the ct range for color temp support [\619](https://github.com/python-kasa/python-kasa/pull/619) (rytilahti)
- Fix cli discover bug with None username/password [\615](https://github.com/python-kasa/python-kasa/pull/615) (sdb9696)
- Fix hsv setting for tapobulb [\573](https://github.com/python-kasa/python-kasa/pull/573) (rytilahti)
- Fix transport retries after close [\568](https://github.com/python-kasa/python-kasa/pull/568) (sdb9696)
**Documentation updates:**
- Update the documentation for 0.6 release [\600](https://github.com/python-kasa/python-kasa/issues/600)
- Update docs for newer devices and DeviceConfig [\614](https://github.com/python-kasa/python-kasa/pull/614) (sdb9696)
- Update readme with clearer instructions, tapo support [\571](https://github.com/python-kasa/python-kasa/pull/571) (rytilahti)
- Add some more external links to README [\541](https://github.com/python-kasa/python-kasa/pull/541) (rytilahti)
**Closed issues:**
- Convert to use aiohttp instead of httpx [\635](https://github.com/python-kasa/python-kasa/issues/635)
- KS225 support [\631](https://github.com/python-kasa/python-kasa/issues/631)
- Need to do error code checking for new protocols [\612](https://github.com/python-kasa/python-kasa/issues/612)
- Support of last firmware update version 1.3.0 [\611](https://github.com/python-kasa/python-kasa/issues/611)
- Improve test coverage for tapodevice class [\608](https://github.com/python-kasa/python-kasa/issues/608)
- Discover returns dictionary with no 'alias' property [\592](https://github.com/python-kasa/python-kasa/issues/592)
- Sending with the legacy protocol is needlessly delayed [\553](https://github.com/python-kasa/python-kasa/issues/553)
- Issues adding a KP405 device [\549](https://github.com/python-kasa/python-kasa/issues/549)
- Support for L510E bulb [\547](https://github.com/python-kasa/python-kasa/issues/547)
- Support for tapo L530E bulbs? [\546](https://github.com/python-kasa/python-kasa/issues/546)
- Unable to connect to host on different subnet with 0.5.4 [\545](https://github.com/python-kasa/python-kasa/issues/545)
- Discovery/Connect broken when upgrading from 0.5.3 -\> 0.5.4 [\543](https://github.com/python-kasa/python-kasa/issues/543)
- PydanticUserError, If you use `root_validator` with pre=False \(the default\) you MUST specify `skip_on_failure=True` [\516](https://github.com/python-kasa/python-kasa/issues/516)
- Implement energy and usage for individual plugs in HS300 [\462](https://github.com/python-kasa/python-kasa/issues/462)
- KP 125M / support for matter devices [\450](https://github.com/python-kasa/python-kasa/issues/450)
**Merged pull requests:**
- Remove time logging in debug message [\645](https://github.com/python-kasa/python-kasa/pull/645) (sdb9696)
- Migrate http client to use aiohttp instead of httpx [\643](https://github.com/python-kasa/python-kasa/pull/643) (sdb9696)
- Encapsulate http client dependency [\642](https://github.com/python-kasa/python-kasa/pull/642) (sdb9696)
- Fix broken docs due to applehelp dependency [\641](https://github.com/python-kasa/python-kasa/pull/641) (sdb9696)
- Raise SmartDeviceException on invalid config dicts [\640](https://github.com/python-kasa/python-kasa/pull/640) (sdb9696)
- Add fixture for L920 [\638](https://github.com/python-kasa/python-kasa/pull/638) (bdraco)