Skip to content

Conversation

@sdb9696
Copy link
Collaborator

@sdb9696 sdb9696 commented Nov 25, 2024

0.8.0 (2024-11-26)

Full Changelog

Release highlights:

  • Initial support for devices using the Tapo camera protocol, i.e. Tapo cameras and the Tapo H200 hub.
  • New camera functionality such as exposing RTSP streaming urls and camera pan/tilt.
  • New way of testing module support for individual features with has_feature and get_feature.
  • Adding voltage and current monitoring to smart devices.
  • Migration from pydantic to mashumaro for serialization.

Special thanks to @ryenitcher and @Puxtril for their new contributions to the improvement of the project! Also thanks to everyone who has helped with testing, contributing fixtures, and reporting issues!

Breaking change notes:

  • Removed support for python <3.11. If you haven't got a compatible version try uv.
  • Renamed device_config.to_dict() to device_config.to_dict_control_credentials(). to_dict() is still available but takes no parameters.
  • From the iot.Cloud module the iot.CloudInfo class attributes have been converted to snake case.

Breaking changes:

Implemented enhancements:

Fixed bugs:

  • TP-Link Tapo S505D cannot disable gradual on/off #1309
  • Inconsistent emeter information between features and emeter cli #1308
  • How to dump power usage after latest updates? #1306
  • kasa.discover: Got unsupported connection type: 'device_family': 'SMART.IPCAMERA' #1267
  • device __repr__ fails if no sys_info #1262
  • Tapo P110M: Error processing Energy for device, module will be unavailable: get_energy_usage for Energy #1243
  • Listing light presets throws error #1201
  • Include duration when disabling smooth transition on/off #1313 (@rytilahti)
  • Expose energy command to cli #1307 (@rytilahti)
  • Make discovery on unsupported devices less noisy #1291 (@rytilahti)
  • Fix repr for device created with no sysinfo or discovery info" #1266 (@sdb9696)
  • Fix discovery by alias for smart devices #1260 (@sdb9696)
  • Make __repr__ work on discovery info #1233 (@rytilahti)

Added support for devices:

Documentation updates:

  • Use markdown footnotes in supported.md #1310 (@sdb9696)
  • Update docs for the new module attributes has/get feature #1301 (@sdb9696)
  • Fixup contributing.md for running test against a real device #1236 (@sdb9696)

Project maintenance:

Closed issues:

  • Expose Fan speed range from the library #1008
  • [META] 0.7 series - module support for SMART devices, support for introspectable device features and refactoring the library #783

@sdb9696 sdb9696 added the release-prep Label for PR bumping release and updating changelog. label Nov 25, 2024
@codecov
Copy link

codecov bot commented Nov 25, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 92.20%. Comparing base (f71450b) to head (6f46870).
Report is 138 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1312   +/-   ##
=======================================
  Coverage   92.20%   92.20%           
=======================================
  Files         119      119           
  Lines        7616     7616           
  Branches      792      792           
=======================================
  Hits         7022     7022           
  Misses        436      436           
  Partials      158      158           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@sdb9696 sdb9696 marked this pull request as ready for review November 26, 2024 11:46
@sdb9696 sdb9696 requested a review from rytilahti November 26, 2024 11:46
@sdb9696 sdb9696 merged commit 6adb2b5 into master Nov 26, 2024
18 checks passed
@sdb9696 sdb9696 deleted the release/0.8.0 branch November 26, 2024 12:10
rytilahti pushed a commit that referenced this pull request Nov 29, 2024
## [0.8.0](https://github.com/python-kasa/python-kasa/tree/0.8.0) (2024-11-26)

[Full Changelog](0.7.7...0.8.0)

**Release highlights:**

- **Initial support for devices using the Tapo camera protocol, i.e. Tapo cameras and the Tapo H200 hub.**
- New camera functionality such as exposing RTSP streaming urls and camera pan/tilt.
- New way of testing module support for individual features with `has_feature` and `get_feature`.
- Adding voltage and current monitoring to `smart` devices.
- Migration from pydantic to mashumaro for serialization.

Special thanks to @ryenitcher and @Puxtril for their new contributions to the improvement of the project! Also thanks to everyone who has helped with testing, contributing fixtures, and reporting issues!

**Breaking change notes:**

- Removed support for python <3.11. If you haven't got a compatible version try [uv](https://docs.astral.sh/uv/).
- Renamed `device_config.to_dict()` to `device_config.to_dict_control_credentials()`. `to_dict()` is still available but takes no parameters.
- From the `iot.Cloud` module the `iot.CloudInfo` class attributes have been converted to snake case.


**Breaking changes:**

- Migrate iot cloud module to mashumaro [\#1282](#1282) (@sdb9696)
- Replace custom deviceconfig serialization with mashumaru [\#1274](#1274) (@sdb9696)
- Remove support for python \<3.11 [\#1273](#1273) (@sdb9696)

**Implemented enhancements:**

- Update cli modify presets to support smart devices [\#1295](#1295) (@sdb9696)
- Use credentials\_hash for smartcamera rtsp url [\#1293](#1293) (@sdb9696)
- Add voltage and current monitoring to smart Devices [\#1281](#1281) (@ryenitcher)
- Update cli feature command for actions not to require a value [\#1264](#1264) (@sdb9696)
- Add pan tilt camera module [\#1261](#1261) (@sdb9696)
- Add alarm module for smartcamera hubs [\#1258](#1258) (@sdb9696)
- Move TAPO smartcamera out of experimental package [\#1255](#1255) (@sdb9696)
- Add SmartCamera Led Module [\#1249](#1249) (@sdb9696)
- Use component queries to select smartcamera modules [\#1248](#1248) (@sdb9696)
- Print formatting for IotLightPreset [\#1216](#1216) (@Puxtril)
- Allow getting Annotated features from modules [\#1018](#1018) (@sdb9696)
- Add common Thermostat module [\#977](#977) (@sdb9696)

**Fixed bugs:**

- TP-Link Tapo S505D cannot disable gradual on/off  [\#1309](#1309)
- Inconsistent emeter information between features and emeter cli [\#1308](#1308)
- How to dump power usage after latest updates? [\#1306](#1306)
- kasa.discover: Got unsupported connection type: 'device\_family': 'SMART.IPCAMERA' [\#1267](#1267)
- device \_\_repr\_\_ fails if no sys\_info [\#1262](#1262)
- Tapo P110M: Error processing Energy for device, module will be unavailable: get\_energy\_usage for Energy  [\#1243](#1243)
- Listing light presets throws error [\#1201](#1201)
- Include duration when disabling smooth transition on/off [\#1313](#1313) (@rytilahti)
- Expose energy command to cli [\#1307](#1307) (@rytilahti)
- Make discovery on unsupported devices less noisy [\#1291](#1291) (@rytilahti)
- Fix repr for device created with no sysinfo or discovery info" [\#1266](#1266) (@sdb9696)
- Fix discovery by alias for smart devices [\#1260](#1260) (@sdb9696)
- Make \_\_repr\_\_ work on discovery info [\#1233](#1233) (@rytilahti)

**Added support for devices:**

- Add HS200 \(US\) Smart Fixture [\#1303](#1303) (@ZeliardM)
- Add smartcamera devices to supported docs [\#1257](#1257) (@sdb9696)
- Add P110M\(AU\) fixture [\#1244](#1244) (@rytilahti)
- Add L630 fixture [\#1240](#1240) (@rytilahti)
- Add EP40M Fixture [\#1238](#1238) (@ryenitcher)
- Add KS220 Fixture [\#1237](#1237) (@ryenitcher)

**Documentation updates:**

- Use markdown footnotes in supported.md [\#1310](#1310) (@sdb9696)
- Update docs for the new module attributes has/get feature [\#1301](#1301) (@sdb9696)
- Fixup contributing.md for running test against a real device [\#1236](#1236) (@sdb9696)

**Project maintenance:**

- Rename tests/smartcamera to tests/smartcam [\#1315](#1315) (@sdb9696)
- Do not error on smartcam hub attached smartcam child devices [\#1314](#1314) (@sdb9696)
- Add P110M\(EU\) fixture [\#1305](#1305) (@sdb9696)
- Run tests with caplog in a single worker [\#1304](#1304) (@sdb9696)
- Rename smartcamera to smartcam [\#1300](#1300) (@sdb9696)
- Move iot fixtures into iot subfolder [\#1299](#1299) (@sdb9696)
- Annotate fan\_speed\_level of Fan interface [\#1298](#1298) (@sdb9696)
- Add PIR ADC Values to Test Fixtures [\#1296](#1296) (@ryenitcher)
- Exclude \_\_getattr\_\_ for deprecated attributes from type checkers [\#1294](#1294) (@sdb9696)
- Simplify omit http\_client in DeviceConfig serialization [\#1292](#1292) (@sdb9696)
- Add SMART Voltage Monitoring to Fixtures [\#1290](#1290) (@ryenitcher)
- Remove pydantic dependency [\#1289](#1289) (@sdb9696)
- Do not print out all the fixture names at the start of test runs [\#1287](#1287) (@sdb9696)
- dump\_devinfo: iot light strip commands [\#1286](#1286) (@sdb9696)
- Migrate TurnOnBehaviours to mashumaro [\#1285](#1285) (@sdb9696)
- dump\_devinfo: query smartlife.iot.common.cloud for fw updates [\#1284](#1284) (@rytilahti)
- Migrate RuleModule to mashumaro [\#1283](#1283) (@sdb9696)
- Update sphinx dependency to 6.2 to fix docs build [\#1280](#1280) (@sdb9696)
- Update DiscoveryResult to use mashu Annotated Alias [\#1279](#1279) (@sdb9696)
- Extend dump\_devinfo iot queries [\#1278](#1278) (@sdb9696)
- Migrate triggerlogs to mashumaru [\#1277](#1277) (@sdb9696)
- Migrate smart firmware module to mashumaro [\#1276](#1276) (@sdb9696)
- Migrate IotLightPreset to mashumaru [\#1275](#1275) (@sdb9696)
- Allow callable coroutines for feature setters [\#1272](#1272) (@sdb9696)
- Fix deprecated SSLContext\(\) usage [\#1271](#1271) (@sdb9696)
- Use \_get\_device\_info methods for smart and iot devs in devtools [\#1265](#1265) (@sdb9696)
- Remove experimental support [\#1256](#1256) (@sdb9696)
- Move protocol modules into protocols package [\#1254](#1254) (@sdb9696)
- Add linkcheck to readthedocs CI [\#1253](#1253) (@rytilahti)
- Update cli energy command to use energy module [\#1252](#1252) (@sdb9696)
- Consolidate warnings for fixtures missing child devices [\#1251](#1251) (@sdb9696)
- Update smartcamera fixtures with components [\#1250](#1250) (@sdb9696)
- Move transports into their own package [\#1247](#1247) (@rytilahti)
- Fix warnings in our test suite [\#1246](#1246) (@rytilahti)
- Move tests folder to top level of project [\#1242](#1242) (@sdb9696)
- Fix test framework running against real devices [\#1235](#1235) (@sdb9696)
- Add Additional Firmware Test Fixures [\#1234](#1234) (@ryenitcher)
- Update DiscoveryResult to use Mashumaro instead of pydantic [\#1231](#1231) (@sdb9696)
- Update fixture for ES20M 1.0.11 [\#1215](#1215) (@rytilahti)
- Enable ruff check for ANN [\#1139](#1139) (@rytilahti)

**Closed issues:**

- Expose Fan speed range from the library [\#1008](#1008)
- \[META\] 0.7 series - module support for SMART devices, support for introspectable device features and refactoring the library [\#783](#783)
rytilahti pushed a commit to rytilahti/python-kasa that referenced this pull request Aug 31, 2025
## [0.8.0](https://github.com/python-kasa/python-kasa/tree/0.8.0) (2024-11-26)

[Full Changelog](python-kasa/python-kasa@0.7.7...0.8.0)

**Release highlights:**

- **Initial support for devices using the Tapo camera protocol, i.e. Tapo cameras and the Tapo H200 hub.**
- New camera functionality such as exposing RTSP streaming urls and camera pan/tilt.
- New way of testing module support for individual features with `has_feature` and `get_feature`.
- Adding voltage and current monitoring to `smart` devices.
- Migration from pydantic to mashumaro for serialization.

Special thanks to @ryenitcher and @Puxtril for their new contributions to the improvement of the project! Also thanks to everyone who has helped with testing, contributing fixtures, and reporting issues!

**Breaking change notes:**

- Removed support for python <3.11. If you haven't got a compatible version try [uv](https://docs.astral.sh/uv/).
- Renamed `device_config.to_dict()` to `device_config.to_dict_control_credentials()`. `to_dict()` is still available but takes no parameters.
- From the `iot.Cloud` module the `iot.CloudInfo` class attributes have been converted to snake case.


**Breaking changes:**

- Migrate iot cloud module to mashumaro [\python-kasa#1282](python-kasa#1282) (@sdb9696)
- Replace custom deviceconfig serialization with mashumaru [\python-kasa#1274](python-kasa#1274) (@sdb9696)
- Remove support for python \<3.11 [\python-kasa#1273](python-kasa#1273) (@sdb9696)

**Implemented enhancements:**

- Update cli modify presets to support smart devices [\python-kasa#1295](python-kasa#1295) (@sdb9696)
- Use credentials\_hash for smartcamera rtsp url [\python-kasa#1293](python-kasa#1293) (@sdb9696)
- Add voltage and current monitoring to smart Devices [\python-kasa#1281](python-kasa#1281) (@ryenitcher)
- Update cli feature command for actions not to require a value [\python-kasa#1264](python-kasa#1264) (@sdb9696)
- Add pan tilt camera module [\python-kasa#1261](python-kasa#1261) (@sdb9696)
- Add alarm module for smartcamera hubs [\python-kasa#1258](python-kasa#1258) (@sdb9696)
- Move TAPO smartcamera out of experimental package [\python-kasa#1255](python-kasa#1255) (@sdb9696)
- Add SmartCamera Led Module [\python-kasa#1249](python-kasa#1249) (@sdb9696)
- Use component queries to select smartcamera modules [\python-kasa#1248](python-kasa#1248) (@sdb9696)
- Print formatting for IotLightPreset [\python-kasa#1216](python-kasa#1216) (@Puxtril)
- Allow getting Annotated features from modules [\python-kasa#1018](python-kasa#1018) (@sdb9696)
- Add common Thermostat module [\python-kasa#977](python-kasa#977) (@sdb9696)

**Fixed bugs:**

- TP-Link Tapo S505D cannot disable gradual on/off  [\python-kasa#1309](python-kasa#1309)
- Inconsistent emeter information between features and emeter cli [\python-kasa#1308](python-kasa#1308)
- How to dump power usage after latest updates? [\python-kasa#1306](python-kasa#1306)
- kasa.discover: Got unsupported connection type: 'device\_family': 'SMART.IPCAMERA' [\python-kasa#1267](python-kasa#1267)
- device \_\_repr\_\_ fails if no sys\_info [\python-kasa#1262](python-kasa#1262)
- Tapo P110M: Error processing Energy for device, module will be unavailable: get\_energy\_usage for Energy  [\python-kasa#1243](python-kasa#1243)
- Listing light presets throws error [\python-kasa#1201](python-kasa#1201)
- Include duration when disabling smooth transition on/off [\python-kasa#1313](python-kasa#1313) (@rytilahti)
- Expose energy command to cli [\python-kasa#1307](python-kasa#1307) (@rytilahti)
- Make discovery on unsupported devices less noisy [\python-kasa#1291](python-kasa#1291) (@rytilahti)
- Fix repr for device created with no sysinfo or discovery info" [\python-kasa#1266](python-kasa#1266) (@sdb9696)
- Fix discovery by alias for smart devices [\python-kasa#1260](python-kasa#1260) (@sdb9696)
- Make \_\_repr\_\_ work on discovery info [\python-kasa#1233](python-kasa#1233) (@rytilahti)

**Added support for devices:**

- Add HS200 \(US\) Smart Fixture [\python-kasa#1303](python-kasa#1303) (@ZeliardM)
- Add smartcamera devices to supported docs [\python-kasa#1257](python-kasa#1257) (@sdb9696)
- Add P110M\(AU\) fixture [\python-kasa#1244](python-kasa#1244) (@rytilahti)
- Add L630 fixture [\python-kasa#1240](python-kasa#1240) (@rytilahti)
- Add EP40M Fixture [\python-kasa#1238](python-kasa#1238) (@ryenitcher)
- Add KS220 Fixture [\python-kasa#1237](python-kasa#1237) (@ryenitcher)

**Documentation updates:**

- Use markdown footnotes in supported.md [\python-kasa#1310](python-kasa#1310) (@sdb9696)
- Update docs for the new module attributes has/get feature [\python-kasa#1301](python-kasa#1301) (@sdb9696)
- Fixup contributing.md for running test against a real device [\python-kasa#1236](python-kasa#1236) (@sdb9696)

**Project maintenance:**

- Rename tests/smartcamera to tests/smartcam [\python-kasa#1315](python-kasa#1315) (@sdb9696)
- Do not error on smartcam hub attached smartcam child devices [\python-kasa#1314](python-kasa#1314) (@sdb9696)
- Add P110M\(EU\) fixture [\python-kasa#1305](python-kasa#1305) (@sdb9696)
- Run tests with caplog in a single worker [\python-kasa#1304](python-kasa#1304) (@sdb9696)
- Rename smartcamera to smartcam [\python-kasa#1300](python-kasa#1300) (@sdb9696)
- Move iot fixtures into iot subfolder [\python-kasa#1299](python-kasa#1299) (@sdb9696)
- Annotate fan\_speed\_level of Fan interface [\python-kasa#1298](python-kasa#1298) (@sdb9696)
- Add PIR ADC Values to Test Fixtures [\python-kasa#1296](python-kasa#1296) (@ryenitcher)
- Exclude \_\_getattr\_\_ for deprecated attributes from type checkers [\python-kasa#1294](python-kasa#1294) (@sdb9696)
- Simplify omit http\_client in DeviceConfig serialization [\python-kasa#1292](python-kasa#1292) (@sdb9696)
- Add SMART Voltage Monitoring to Fixtures [\python-kasa#1290](python-kasa#1290) (@ryenitcher)
- Remove pydantic dependency [\python-kasa#1289](python-kasa#1289) (@sdb9696)
- Do not print out all the fixture names at the start of test runs [\python-kasa#1287](python-kasa#1287) (@sdb9696)
- dump\_devinfo: iot light strip commands [\python-kasa#1286](python-kasa#1286) (@sdb9696)
- Migrate TurnOnBehaviours to mashumaro [\python-kasa#1285](python-kasa#1285) (@sdb9696)
- dump\_devinfo: query smartlife.iot.common.cloud for fw updates [\python-kasa#1284](python-kasa#1284) (@rytilahti)
- Migrate RuleModule to mashumaro [\python-kasa#1283](python-kasa#1283) (@sdb9696)
- Update sphinx dependency to 6.2 to fix docs build [\python-kasa#1280](python-kasa#1280) (@sdb9696)
- Update DiscoveryResult to use mashu Annotated Alias [\python-kasa#1279](python-kasa#1279) (@sdb9696)
- Extend dump\_devinfo iot queries [\python-kasa#1278](python-kasa#1278) (@sdb9696)
- Migrate triggerlogs to mashumaru [\python-kasa#1277](python-kasa#1277) (@sdb9696)
- Migrate smart firmware module to mashumaro [\python-kasa#1276](python-kasa#1276) (@sdb9696)
- Migrate IotLightPreset to mashumaru [\python-kasa#1275](python-kasa#1275) (@sdb9696)
- Allow callable coroutines for feature setters [\python-kasa#1272](python-kasa#1272) (@sdb9696)
- Fix deprecated SSLContext\(\) usage [\python-kasa#1271](python-kasa#1271) (@sdb9696)
- Use \_get\_device\_info methods for smart and iot devs in devtools [\python-kasa#1265](python-kasa#1265) (@sdb9696)
- Remove experimental support [\python-kasa#1256](python-kasa#1256) (@sdb9696)
- Move protocol modules into protocols package [\python-kasa#1254](python-kasa#1254) (@sdb9696)
- Add linkcheck to readthedocs CI [\python-kasa#1253](python-kasa#1253) (@rytilahti)
- Update cli energy command to use energy module [\python-kasa#1252](python-kasa#1252) (@sdb9696)
- Consolidate warnings for fixtures missing child devices [\python-kasa#1251](python-kasa#1251) (@sdb9696)
- Update smartcamera fixtures with components [\python-kasa#1250](python-kasa#1250) (@sdb9696)
- Move transports into their own package [\python-kasa#1247](python-kasa#1247) (@rytilahti)
- Fix warnings in our test suite [\python-kasa#1246](python-kasa#1246) (@rytilahti)
- Move tests folder to top level of project [\python-kasa#1242](python-kasa#1242) (@sdb9696)
- Fix test framework running against real devices [\python-kasa#1235](python-kasa#1235) (@sdb9696)
- Add Additional Firmware Test Fixures [\python-kasa#1234](python-kasa#1234) (@ryenitcher)
- Update DiscoveryResult to use Mashumaro instead of pydantic [\python-kasa#1231](python-kasa#1231) (@sdb9696)
- Update fixture for ES20M 1.0.11 [\python-kasa#1215](python-kasa#1215) (@rytilahti)
- Enable ruff check for ANN [\python-kasa#1139](python-kasa#1139) (@rytilahti)

**Closed issues:**

- Expose Fan speed range from the library [\python-kasa#1008](python-kasa#1008)
- \[META\] 0.7 series - module support for SMART devices, support for introspectable device features and refactoring the library [\python-kasa#783](python-kasa#783)
rytilahti pushed a commit to rytilahti/python-kasa that referenced this pull request Oct 26, 2025
## [0.8.0](https://github.com/python-kasa/python-kasa/tree/0.8.0) (2024-11-26)

[Full Changelog](python-kasa/python-kasa@0.7.7...0.8.0)

**Release highlights:**

- **Initial support for devices using the Tapo camera protocol, i.e. Tapo cameras and the Tapo H200 hub.**
- New camera functionality such as exposing RTSP streaming urls and camera pan/tilt.
- New way of testing module support for individual features with `has_feature` and `get_feature`.
- Adding voltage and current monitoring to `smart` devices.
- Migration from pydantic to mashumaro for serialization.

Special thanks to @ryenitcher and @Puxtril for their new contributions to the improvement of the project! Also thanks to everyone who has helped with testing, contributing fixtures, and reporting issues!

**Breaking change notes:**

- Removed support for python <3.11. If you haven't got a compatible version try [uv](https://docs.astral.sh/uv/).
- Renamed `device_config.to_dict()` to `device_config.to_dict_control_credentials()`. `to_dict()` is still available but takes no parameters.
- From the `iot.Cloud` module the `iot.CloudInfo` class attributes have been converted to snake case.


**Breaking changes:**

- Migrate iot cloud module to mashumaro [\python-kasa#1282](python-kasa#1282) (@sdb9696)
- Replace custom deviceconfig serialization with mashumaru [\python-kasa#1274](python-kasa#1274) (@sdb9696)
- Remove support for python \<3.11 [\python-kasa#1273](python-kasa#1273) (@sdb9696)

**Implemented enhancements:**

- Update cli modify presets to support smart devices [\python-kasa#1295](python-kasa#1295) (@sdb9696)
- Use credentials\_hash for smartcamera rtsp url [\python-kasa#1293](python-kasa#1293) (@sdb9696)
- Add voltage and current monitoring to smart Devices [\python-kasa#1281](python-kasa#1281) (@ryenitcher)
- Update cli feature command for actions not to require a value [\python-kasa#1264](python-kasa#1264) (@sdb9696)
- Add pan tilt camera module [\python-kasa#1261](python-kasa#1261) (@sdb9696)
- Add alarm module for smartcamera hubs [\python-kasa#1258](python-kasa#1258) (@sdb9696)
- Move TAPO smartcamera out of experimental package [\python-kasa#1255](python-kasa#1255) (@sdb9696)
- Add SmartCamera Led Module [\python-kasa#1249](python-kasa#1249) (@sdb9696)
- Use component queries to select smartcamera modules [\python-kasa#1248](python-kasa#1248) (@sdb9696)
- Print formatting for IotLightPreset [\python-kasa#1216](python-kasa#1216) (@Puxtril)
- Allow getting Annotated features from modules [\python-kasa#1018](python-kasa#1018) (@sdb9696)
- Add common Thermostat module [\python-kasa#977](python-kasa#977) (@sdb9696)

**Fixed bugs:**

- TP-Link Tapo S505D cannot disable gradual on/off  [\python-kasa#1309](python-kasa#1309)
- Inconsistent emeter information between features and emeter cli [\python-kasa#1308](python-kasa#1308)
- How to dump power usage after latest updates? [\python-kasa#1306](python-kasa#1306)
- kasa.discover: Got unsupported connection type: 'device\_family': 'SMART.IPCAMERA' [\python-kasa#1267](python-kasa#1267)
- device \_\_repr\_\_ fails if no sys\_info [\python-kasa#1262](python-kasa#1262)
- Tapo P110M: Error processing Energy for device, module will be unavailable: get\_energy\_usage for Energy  [\python-kasa#1243](python-kasa#1243)
- Listing light presets throws error [\python-kasa#1201](python-kasa#1201)
- Include duration when disabling smooth transition on/off [\python-kasa#1313](python-kasa#1313) (@rytilahti)
- Expose energy command to cli [\python-kasa#1307](python-kasa#1307) (@rytilahti)
- Make discovery on unsupported devices less noisy [\python-kasa#1291](python-kasa#1291) (@rytilahti)
- Fix repr for device created with no sysinfo or discovery info" [\python-kasa#1266](python-kasa#1266) (@sdb9696)
- Fix discovery by alias for smart devices [\python-kasa#1260](python-kasa#1260) (@sdb9696)
- Make \_\_repr\_\_ work on discovery info [\python-kasa#1233](python-kasa#1233) (@rytilahti)

**Added support for devices:**

- Add HS200 \(US\) Smart Fixture [\python-kasa#1303](python-kasa#1303) (@ZeliardM)
- Add smartcamera devices to supported docs [\python-kasa#1257](python-kasa#1257) (@sdb9696)
- Add P110M\(AU\) fixture [\python-kasa#1244](python-kasa#1244) (@rytilahti)
- Add L630 fixture [\python-kasa#1240](python-kasa#1240) (@rytilahti)
- Add EP40M Fixture [\python-kasa#1238](python-kasa#1238) (@ryenitcher)
- Add KS220 Fixture [\python-kasa#1237](python-kasa#1237) (@ryenitcher)

**Documentation updates:**

- Use markdown footnotes in supported.md [\python-kasa#1310](python-kasa#1310) (@sdb9696)
- Update docs for the new module attributes has/get feature [\python-kasa#1301](python-kasa#1301) (@sdb9696)
- Fixup contributing.md for running test against a real device [\python-kasa#1236](python-kasa#1236) (@sdb9696)

**Project maintenance:**

- Rename tests/smartcamera to tests/smartcam [\python-kasa#1315](python-kasa#1315) (@sdb9696)
- Do not error on smartcam hub attached smartcam child devices [\python-kasa#1314](python-kasa#1314) (@sdb9696)
- Add P110M\(EU\) fixture [\python-kasa#1305](python-kasa#1305) (@sdb9696)
- Run tests with caplog in a single worker [\python-kasa#1304](python-kasa#1304) (@sdb9696)
- Rename smartcamera to smartcam [\python-kasa#1300](python-kasa#1300) (@sdb9696)
- Move iot fixtures into iot subfolder [\python-kasa#1299](python-kasa#1299) (@sdb9696)
- Annotate fan\_speed\_level of Fan interface [\python-kasa#1298](python-kasa#1298) (@sdb9696)
- Add PIR ADC Values to Test Fixtures [\python-kasa#1296](python-kasa#1296) (@ryenitcher)
- Exclude \_\_getattr\_\_ for deprecated attributes from type checkers [\python-kasa#1294](python-kasa#1294) (@sdb9696)
- Simplify omit http\_client in DeviceConfig serialization [\python-kasa#1292](python-kasa#1292) (@sdb9696)
- Add SMART Voltage Monitoring to Fixtures [\python-kasa#1290](python-kasa#1290) (@ryenitcher)
- Remove pydantic dependency [\python-kasa#1289](python-kasa#1289) (@sdb9696)
- Do not print out all the fixture names at the start of test runs [\python-kasa#1287](python-kasa#1287) (@sdb9696)
- dump\_devinfo: iot light strip commands [\python-kasa#1286](python-kasa#1286) (@sdb9696)
- Migrate TurnOnBehaviours to mashumaro [\python-kasa#1285](python-kasa#1285) (@sdb9696)
- dump\_devinfo: query smartlife.iot.common.cloud for fw updates [\python-kasa#1284](python-kasa#1284) (@rytilahti)
- Migrate RuleModule to mashumaro [\python-kasa#1283](python-kasa#1283) (@sdb9696)
- Update sphinx dependency to 6.2 to fix docs build [\python-kasa#1280](python-kasa#1280) (@sdb9696)
- Update DiscoveryResult to use mashu Annotated Alias [\python-kasa#1279](python-kasa#1279) (@sdb9696)
- Extend dump\_devinfo iot queries [\python-kasa#1278](python-kasa#1278) (@sdb9696)
- Migrate triggerlogs to mashumaru [\python-kasa#1277](python-kasa#1277) (@sdb9696)
- Migrate smart firmware module to mashumaro [\python-kasa#1276](python-kasa#1276) (@sdb9696)
- Migrate IotLightPreset to mashumaru [\python-kasa#1275](python-kasa#1275) (@sdb9696)
- Allow callable coroutines for feature setters [\python-kasa#1272](python-kasa#1272) (@sdb9696)
- Fix deprecated SSLContext\(\) usage [\python-kasa#1271](python-kasa#1271) (@sdb9696)
- Use \_get\_device\_info methods for smart and iot devs in devtools [\python-kasa#1265](python-kasa#1265) (@sdb9696)
- Remove experimental support [\python-kasa#1256](python-kasa#1256) (@sdb9696)
- Move protocol modules into protocols package [\python-kasa#1254](python-kasa#1254) (@sdb9696)
- Add linkcheck to readthedocs CI [\python-kasa#1253](python-kasa#1253) (@rytilahti)
- Update cli energy command to use energy module [\python-kasa#1252](python-kasa#1252) (@sdb9696)
- Consolidate warnings for fixtures missing child devices [\python-kasa#1251](python-kasa#1251) (@sdb9696)
- Update smartcamera fixtures with components [\python-kasa#1250](python-kasa#1250) (@sdb9696)
- Move transports into their own package [\python-kasa#1247](python-kasa#1247) (@rytilahti)
- Fix warnings in our test suite [\python-kasa#1246](python-kasa#1246) (@rytilahti)
- Move tests folder to top level of project [\python-kasa#1242](python-kasa#1242) (@sdb9696)
- Fix test framework running against real devices [\python-kasa#1235](python-kasa#1235) (@sdb9696)
- Add Additional Firmware Test Fixures [\python-kasa#1234](python-kasa#1234) (@ryenitcher)
- Update DiscoveryResult to use Mashumaro instead of pydantic [\python-kasa#1231](python-kasa#1231) (@sdb9696)
- Update fixture for ES20M 1.0.11 [\python-kasa#1215](python-kasa#1215) (@rytilahti)
- Enable ruff check for ANN [\python-kasa#1139](python-kasa#1139) (@rytilahti)

**Closed issues:**

- Expose Fan speed range from the library [\python-kasa#1008](python-kasa#1008)
- \[META\] 0.7 series - module support for SMART devices, support for introspectable device features and refactoring the library [\python-kasa#783](python-kasa#783)
rytilahti pushed a commit to rytilahti/python-kasa that referenced this pull request Nov 10, 2025
## [0.8.0](https://github.com/python-kasa/python-kasa/tree/0.8.0) (2024-11-26)

[Full Changelog](python-kasa/python-kasa@0.7.7...0.8.0)

**Release highlights:**

- **Initial support for devices using the Tapo camera protocol, i.e. Tapo cameras and the Tapo H200 hub.**
- New camera functionality such as exposing RTSP streaming urls and camera pan/tilt.
- New way of testing module support for individual features with `has_feature` and `get_feature`.
- Adding voltage and current monitoring to `smart` devices.
- Migration from pydantic to mashumaro for serialization.

Special thanks to @ryenitcher and @Puxtril for their new contributions to the improvement of the project! Also thanks to everyone who has helped with testing, contributing fixtures, and reporting issues!

**Breaking change notes:**

- Removed support for python <3.11. If you haven't got a compatible version try [uv](https://docs.astral.sh/uv/).
- Renamed `device_config.to_dict()` to `device_config.to_dict_control_credentials()`. `to_dict()` is still available but takes no parameters.
- From the `iot.Cloud` module the `iot.CloudInfo` class attributes have been converted to snake case.


**Breaking changes:**

- Migrate iot cloud module to mashumaro [\python-kasa#1282](python-kasa#1282) (@sdb9696)
- Replace custom deviceconfig serialization with mashumaru [\python-kasa#1274](python-kasa#1274) (@sdb9696)
- Remove support for python \<3.11 [\python-kasa#1273](python-kasa#1273) (@sdb9696)

**Implemented enhancements:**

- Update cli modify presets to support smart devices [\python-kasa#1295](python-kasa#1295) (@sdb9696)
- Use credentials\_hash for smartcamera rtsp url [\python-kasa#1293](python-kasa#1293) (@sdb9696)
- Add voltage and current monitoring to smart Devices [\python-kasa#1281](python-kasa#1281) (@ryenitcher)
- Update cli feature command for actions not to require a value [\python-kasa#1264](python-kasa#1264) (@sdb9696)
- Add pan tilt camera module [\python-kasa#1261](python-kasa#1261) (@sdb9696)
- Add alarm module for smartcamera hubs [\python-kasa#1258](python-kasa#1258) (@sdb9696)
- Move TAPO smartcamera out of experimental package [\python-kasa#1255](python-kasa#1255) (@sdb9696)
- Add SmartCamera Led Module [\python-kasa#1249](python-kasa#1249) (@sdb9696)
- Use component queries to select smartcamera modules [\python-kasa#1248](python-kasa#1248) (@sdb9696)
- Print formatting for IotLightPreset [\python-kasa#1216](python-kasa#1216) (@Puxtril)
- Allow getting Annotated features from modules [\python-kasa#1018](python-kasa#1018) (@sdb9696)
- Add common Thermostat module [\python-kasa#977](python-kasa#977) (@sdb9696)

**Fixed bugs:**

- TP-Link Tapo S505D cannot disable gradual on/off  [\python-kasa#1309](python-kasa#1309)
- Inconsistent emeter information between features and emeter cli [\python-kasa#1308](python-kasa#1308)
- How to dump power usage after latest updates? [\python-kasa#1306](python-kasa#1306)
- kasa.discover: Got unsupported connection type: 'device\_family': 'SMART.IPCAMERA' [\python-kasa#1267](python-kasa#1267)
- device \_\_repr\_\_ fails if no sys\_info [\python-kasa#1262](python-kasa#1262)
- Tapo P110M: Error processing Energy for device, module will be unavailable: get\_energy\_usage for Energy  [\python-kasa#1243](python-kasa#1243)
- Listing light presets throws error [\python-kasa#1201](python-kasa#1201)
- Include duration when disabling smooth transition on/off [\python-kasa#1313](python-kasa#1313) (@rytilahti)
- Expose energy command to cli [\python-kasa#1307](python-kasa#1307) (@rytilahti)
- Make discovery on unsupported devices less noisy [\python-kasa#1291](python-kasa#1291) (@rytilahti)
- Fix repr for device created with no sysinfo or discovery info" [\python-kasa#1266](python-kasa#1266) (@sdb9696)
- Fix discovery by alias for smart devices [\python-kasa#1260](python-kasa#1260) (@sdb9696)
- Make \_\_repr\_\_ work on discovery info [\python-kasa#1233](python-kasa#1233) (@rytilahti)

**Added support for devices:**

- Add HS200 \(US\) Smart Fixture [\python-kasa#1303](python-kasa#1303) (@ZeliardM)
- Add smartcamera devices to supported docs [\python-kasa#1257](python-kasa#1257) (@sdb9696)
- Add P110M\(AU\) fixture [\python-kasa#1244](python-kasa#1244) (@rytilahti)
- Add L630 fixture [\python-kasa#1240](python-kasa#1240) (@rytilahti)
- Add EP40M Fixture [\python-kasa#1238](python-kasa#1238) (@ryenitcher)
- Add KS220 Fixture [\python-kasa#1237](python-kasa#1237) (@ryenitcher)

**Documentation updates:**

- Use markdown footnotes in supported.md [\python-kasa#1310](python-kasa#1310) (@sdb9696)
- Update docs for the new module attributes has/get feature [\python-kasa#1301](python-kasa#1301) (@sdb9696)
- Fixup contributing.md for running test against a real device [\python-kasa#1236](python-kasa#1236) (@sdb9696)

**Project maintenance:**

- Rename tests/smartcamera to tests/smartcam [\python-kasa#1315](python-kasa#1315) (@sdb9696)
- Do not error on smartcam hub attached smartcam child devices [\python-kasa#1314](python-kasa#1314) (@sdb9696)
- Add P110M\(EU\) fixture [\python-kasa#1305](python-kasa#1305) (@sdb9696)
- Run tests with caplog in a single worker [\python-kasa#1304](python-kasa#1304) (@sdb9696)
- Rename smartcamera to smartcam [\python-kasa#1300](python-kasa#1300) (@sdb9696)
- Move iot fixtures into iot subfolder [\python-kasa#1299](python-kasa#1299) (@sdb9696)
- Annotate fan\_speed\_level of Fan interface [\python-kasa#1298](python-kasa#1298) (@sdb9696)
- Add PIR ADC Values to Test Fixtures [\python-kasa#1296](python-kasa#1296) (@ryenitcher)
- Exclude \_\_getattr\_\_ for deprecated attributes from type checkers [\python-kasa#1294](python-kasa#1294) (@sdb9696)
- Simplify omit http\_client in DeviceConfig serialization [\python-kasa#1292](python-kasa#1292) (@sdb9696)
- Add SMART Voltage Monitoring to Fixtures [\python-kasa#1290](python-kasa#1290) (@ryenitcher)
- Remove pydantic dependency [\python-kasa#1289](python-kasa#1289) (@sdb9696)
- Do not print out all the fixture names at the start of test runs [\python-kasa#1287](python-kasa#1287) (@sdb9696)
- dump\_devinfo: iot light strip commands [\python-kasa#1286](python-kasa#1286) (@sdb9696)
- Migrate TurnOnBehaviours to mashumaro [\python-kasa#1285](python-kasa#1285) (@sdb9696)
- dump\_devinfo: query smartlife.iot.common.cloud for fw updates [\python-kasa#1284](python-kasa#1284) (@rytilahti)
- Migrate RuleModule to mashumaro [\python-kasa#1283](python-kasa#1283) (@sdb9696)
- Update sphinx dependency to 6.2 to fix docs build [\python-kasa#1280](python-kasa#1280) (@sdb9696)
- Update DiscoveryResult to use mashu Annotated Alias [\python-kasa#1279](python-kasa#1279) (@sdb9696)
- Extend dump\_devinfo iot queries [\python-kasa#1278](python-kasa#1278) (@sdb9696)
- Migrate triggerlogs to mashumaru [\python-kasa#1277](python-kasa#1277) (@sdb9696)
- Migrate smart firmware module to mashumaro [\python-kasa#1276](python-kasa#1276) (@sdb9696)
- Migrate IotLightPreset to mashumaru [\python-kasa#1275](python-kasa#1275) (@sdb9696)
- Allow callable coroutines for feature setters [\python-kasa#1272](python-kasa#1272) (@sdb9696)
- Fix deprecated SSLContext\(\) usage [\python-kasa#1271](python-kasa#1271) (@sdb9696)
- Use \_get\_device\_info methods for smart and iot devs in devtools [\python-kasa#1265](python-kasa#1265) (@sdb9696)
- Remove experimental support [\python-kasa#1256](python-kasa#1256) (@sdb9696)
- Move protocol modules into protocols package [\python-kasa#1254](python-kasa#1254) (@sdb9696)
- Add linkcheck to readthedocs CI [\python-kasa#1253](python-kasa#1253) (@rytilahti)
- Update cli energy command to use energy module [\python-kasa#1252](python-kasa#1252) (@sdb9696)
- Consolidate warnings for fixtures missing child devices [\python-kasa#1251](python-kasa#1251) (@sdb9696)
- Update smartcamera fixtures with components [\python-kasa#1250](python-kasa#1250) (@sdb9696)
- Move transports into their own package [\python-kasa#1247](python-kasa#1247) (@rytilahti)
- Fix warnings in our test suite [\python-kasa#1246](python-kasa#1246) (@rytilahti)
- Move tests folder to top level of project [\python-kasa#1242](python-kasa#1242) (@sdb9696)
- Fix test framework running against real devices [\python-kasa#1235](python-kasa#1235) (@sdb9696)
- Add Additional Firmware Test Fixures [\python-kasa#1234](python-kasa#1234) (@ryenitcher)
- Update DiscoveryResult to use Mashumaro instead of pydantic [\python-kasa#1231](python-kasa#1231) (@sdb9696)
- Update fixture for ES20M 1.0.11 [\python-kasa#1215](python-kasa#1215) (@rytilahti)
- Enable ruff check for ANN [\python-kasa#1139](python-kasa#1139) (@rytilahti)

**Closed issues:**

- Expose Fan speed range from the library [\python-kasa#1008](python-kasa#1008)
- \[META\] 0.7 series - module support for SMART devices, support for introspectable device features and refactoring the library [\python-kasa#783](python-kasa#783)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release-prep Label for PR bumping release and updating changelog.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants