Skip to content

Conversation

@rytilahti
Copy link
Member

@rytilahti rytilahti commented Dec 3, 2024

Different devices and different firmwares report overheated status in different ways.
Some devices indicate support for overheat_protect component, but there are devices that report overheat_status even when it is not listed.
Some other devices use overheated boolean that was already previously supported, but this PR adds support for much more devices that use overheat_status for reporting.

The "overheated" feature is moved into its own module, and uses either of the ways to report this information.
This will also rename REQUIRED_KEY_ON_PARENT to SYSINFO_LOOKUP_KEYS and change its logic to check if any of the keys in the list are found in the sysinfo.

tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_protect' -c|wc -l
15
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheated' -c|wc -l
38
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_status' -c|wc -l
20

Fixes #1269

@rytilahti rytilahti added the enhancement New feature or request label Dec 3, 2024
@rytilahti rytilahti requested a review from sdb9696 December 3, 2024 14:45
@codecov
Copy link

codecov bot commented Dec 3, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 92.17%. Comparing base (bf8f0ad) to head (1a87c30).
Report is 117 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1335      +/-   ##
==========================================
+ Coverage   92.16%   92.17%   +0.01%     
==========================================
  Files         122      123       +1     
  Lines        7900     7913      +13     
  Branches      812      812              
==========================================
+ Hits         7281     7294      +13     
  Misses        454      454              
  Partials      165      165              

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

🚀 New features to boost your workflow:
  • Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rytilahti rytilahti added this to the 0.8.1 milestone Dec 5, 2024
@sdb9696 sdb9696 modified the milestones: 0.8.1, 0.9.0 Dec 6, 2024
Copy link
Collaborator

@sdb9696 sdb9696 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can simplify the REQUIRED_KEYS` as it's only used in one other place. Would be good to have a test for it, even if it's just a model filter on the T110 and check the module has been created.

Adds tests for REQUIRED_COMPONENT and SYSINFO_LOOKUP_KEYS initialization
Copy link
Collaborator

@sdb9696 sdb9696 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@rytilahti rytilahti merged commit 032cd5d into master Dec 11, 2024
18 checks passed
@rytilahti rytilahti deleted the fix/overheated branch December 11, 2024 00:01
@sdb9696 sdb9696 mentioned this pull request Dec 21, 2024
sdb9696 added a commit that referenced this pull request Dec 21, 2024
## [0.9.0](https://github.com/python-kasa/python-kasa/tree/0.9.0) (2024-12-21)

[Full Changelog](0.8.1...0.9.0)

**Release highlights:**

- Improvements to Tapo camera support:
  - C100, C225, C325WB, C520WS and TC70 now supported.
  - Support for motion, person, tamper, and baby cry detection.
- Initial support for Tapo robovacs.
- API extended with `FeatureAttributes` for consumers to test for [supported features](https://python-kasa.readthedocs.io/en/stable/topics.html#modules-and-features).
- Experimental support for Kasa cameras[^1]

[^1]: Currently limited to devices not yet provisioned via the Tapo app - Many thanks to @Puxtril!

**Breaking changes:**

- Use DeviceInfo consistently across devices [\#1338](#1338) (@sdb9696)

**Implemented enhancements:**

- Add rssi and signal\_level to smartcam [\#1392](#1392) (@sdb9696)
- Add smartcam detection modules [\#1389](#1389) (@sdb9696)
- Add bare-bones matter modules to smart and smartcam devices [\#1371](#1371) (@sdb9696)
- Add bare bones homekit modules smart and smartcam devices [\#1370](#1370) (@sdb9696)
- Return raw discovery result in cli discover raw [\#1342](#1342) (@sdb9696)
- cli: print model, https, and lv for discover list [\#1339](#1339) (@rytilahti)
- Improve overheat reporting [\#1335](#1335) (@rytilahti)
- Provide alternative camera urls [\#1316](#1316) (@sdb9696)
- Add LinkieTransportV2 and basic IOT.IPCAMERA support [\#1270](#1270) (@Puxtril)
- Add ssltransport for robovacs [\#943](#943) (@rytilahti)

**Fixed bugs:**

- Tapo H200 Hub does not work with python-kasa [\#1149](#1149)
- Treat smartcam 500 errors after handshake as retryable [\#1395](#1395) (@sdb9696)
- Fix lens mask required component and state [\#1386](#1386) (@sdb9696)
- Add LensMask module to smartcam [\#1385](#1385) (@sdb9696)
- Do not error when accessing smart device\_type before update [\#1319](#1319) (@sdb9696)
- Fallback to other module data on get\_energy\_usage errors [\#1245](#1245) (@rytilahti)

**Added support for devices:**

- Add P210M\(US\) 1.0 1.0.3 fixture [\#1399](#1399) (@sdb9696)
- Add C225\(US\) 2.0 1.0.11 fixture [\#1398](#1398) (@sdb9696)
- Add P306\(US\) 1.0 1.1.2 fixture [\#1396](#1396) (@nakanaela)
- Add TC70 3.0 1.3.11 fixture [\#1390](#1390) (@sdb9696)
- Add C325WB\(EU\) 1.0 1.1.17 Fixture [\#1379](#1379) (@sdb9696)
- Add C100 4.0 1.3.14 Fixture [\#1378](#1378) (@sdb9696)
- Add KS200 \(US\) IOT Fixture and P115 \(US\) Smart Fixture [\#1355](#1355) (@ZeliardM)
- Add C520WS camera fixture [\#1352](#1352) (@Happy-Cadaver)

**Documentation updates:**

- Update docs for Tapo Lab Third-Party compatibility [\#1380](#1380) (@sdb9696)
- Add homebridge-kasa-python link to README [\#1367](#1367) (@rytilahti)
- Update docs for new FeatureAttribute behaviour [\#1365](#1365) (@sdb9696)
- Add link to related homeassistant-tapo-control [\#1333](#1333) (@rytilahti)

**Project maintenance:**

- Add P135 1.0 1.2.0 fixture [\#1397](#1397) (@sdb9696)
- Handle smartcam device blocked response [\#1393](#1393) (@sdb9696)
- Handle KeyboardInterrupts in the cli better [\#1391](#1391) (@sdb9696)
- Update C520WS fixture with new methods [\#1384](#1384) (@sdb9696)
- Miscellaneous minor fixes to dump\_devinfo [\#1382](#1382) (@sdb9696)
- Add timeout parameter to dump\_devinfo [\#1381](#1381) (@sdb9696)
- Simplify get\_protocol to prevent clashes with smartcam and robovac [\#1377](#1377) (@sdb9696)
- Add smartcam modules to package inits [\#1376](#1376) (@sdb9696)
- Enable saving of fixture files without git clone [\#1375](#1375) (@sdb9696)
- Force single for some smartcam requests [\#1374](#1374) (@sdb9696)
- Add new methods to dump\_devinfo [\#1373](#1373) (@sdb9696)
- Update cli, light modules, and docs to use FeatureAttributes [\#1364](#1364) (@sdb9696)
- Pass raw components to SmartChildDevice init [\#1363](#1363) (@sdb9696)
- Fix line endings in device\_fixtures.py [\#1361](#1361) (@sdb9696)
- Update dump\_devinfo for raw discovery json and common redactors [\#1358](#1358) (@sdb9696)
- Tweak RELEASING.md instructions for patch releases [\#1347](#1347) (@sdb9696)
- Scrub more vacuum keys [\#1328](#1328) (@rytilahti)
- Remove unnecessary check for python \<3.10 [\#1326](#1326) (@rytilahti)
- Add vacuum component queries to dump\_devinfo [\#1320](#1320) (@rytilahti)
- Handle missing mgt\_encryption\_schm in discovery [\#1318](#1318) (@sdb9696)
- Follow main package structure for tests [\#1317](#1317) (@rytilahti)
rytilahti added a commit to rytilahti/python-kasa that referenced this pull request Aug 31, 2025
Different devices and different firmwares report overheated status in
different ways.
Some devices indicate support for `overheat_protect` component, but
there are devices that report `overheat_status` even when it is not
listed.
Some other devices use `overheated` boolean that was already previously
supported, but this PR adds support for much more devices that use
`overheat_status` for reporting.

The "overheated" feature is moved into its own module, and uses either
of the ways to report this information.
This will also rename `REQUIRED_KEY_ON_PARENT` to `SYSINFO_LOOKUP_KEYS`
and change its logic to check if any of the keys in the list are found
in the sysinfo.

```
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_protect' -c|wc -l
15
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheated' -c|wc -l
38
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_status' -c|wc -l
20
```

---------

Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
rytilahti pushed a commit to rytilahti/python-kasa that referenced this pull request Aug 31, 2025
## [0.9.0](https://github.com/python-kasa/python-kasa/tree/0.9.0) (2024-12-21)

[Full Changelog](python-kasa/python-kasa@0.8.1...0.9.0)

**Release highlights:**

- Improvements to Tapo camera support:
  - C100, C225, C325WB, C520WS and TC70 now supported.
  - Support for motion, person, tamper, and baby cry detection.
- Initial support for Tapo robovacs.
- API extended with `FeatureAttributes` for consumers to test for [supported features](https://python-kasa.readthedocs.io/en/stable/topics.html#modules-and-features).
- Experimental support for Kasa cameras[^1]

[^1]: Currently limited to devices not yet provisioned via the Tapo app - Many thanks to @Puxtril!

**Breaking changes:**

- Use DeviceInfo consistently across devices [\python-kasa#1338](python-kasa#1338) (@sdb9696)

**Implemented enhancements:**

- Add rssi and signal\_level to smartcam [\python-kasa#1392](python-kasa#1392) (@sdb9696)
- Add smartcam detection modules [\python-kasa#1389](python-kasa#1389) (@sdb9696)
- Add bare-bones matter modules to smart and smartcam devices [\python-kasa#1371](python-kasa#1371) (@sdb9696)
- Add bare bones homekit modules smart and smartcam devices [\python-kasa#1370](python-kasa#1370) (@sdb9696)
- Return raw discovery result in cli discover raw [\python-kasa#1342](python-kasa#1342) (@sdb9696)
- cli: print model, https, and lv for discover list [\python-kasa#1339](python-kasa#1339) (@rytilahti)
- Improve overheat reporting [\python-kasa#1335](python-kasa#1335) (@rytilahti)
- Provide alternative camera urls [\python-kasa#1316](python-kasa#1316) (@sdb9696)
- Add LinkieTransportV2 and basic IOT.IPCAMERA support [\python-kasa#1270](python-kasa#1270) (@Puxtril)
- Add ssltransport for robovacs [\python-kasa#943](python-kasa#943) (@rytilahti)

**Fixed bugs:**

- Tapo H200 Hub does not work with python-kasa [\python-kasa#1149](python-kasa#1149)
- Treat smartcam 500 errors after handshake as retryable [\python-kasa#1395](python-kasa#1395) (@sdb9696)
- Fix lens mask required component and state [\python-kasa#1386](python-kasa#1386) (@sdb9696)
- Add LensMask module to smartcam [\python-kasa#1385](python-kasa#1385) (@sdb9696)
- Do not error when accessing smart device\_type before update [\python-kasa#1319](python-kasa#1319) (@sdb9696)
- Fallback to other module data on get\_energy\_usage errors [\python-kasa#1245](python-kasa#1245) (@rytilahti)

**Added support for devices:**

- Add P210M\(US\) 1.0 1.0.3 fixture [\python-kasa#1399](python-kasa#1399) (@sdb9696)
- Add C225\(US\) 2.0 1.0.11 fixture [\python-kasa#1398](python-kasa#1398) (@sdb9696)
- Add P306\(US\) 1.0 1.1.2 fixture [\python-kasa#1396](python-kasa#1396) (@nakanaela)
- Add TC70 3.0 1.3.11 fixture [\python-kasa#1390](python-kasa#1390) (@sdb9696)
- Add C325WB\(EU\) 1.0 1.1.17 Fixture [\python-kasa#1379](python-kasa#1379) (@sdb9696)
- Add C100 4.0 1.3.14 Fixture [\python-kasa#1378](python-kasa#1378) (@sdb9696)
- Add KS200 \(US\) IOT Fixture and P115 \(US\) Smart Fixture [\python-kasa#1355](python-kasa#1355) (@ZeliardM)
- Add C520WS camera fixture [\python-kasa#1352](python-kasa#1352) (@Happy-Cadaver)

**Documentation updates:**

- Update docs for Tapo Lab Third-Party compatibility [\python-kasa#1380](python-kasa#1380) (@sdb9696)
- Add homebridge-kasa-python link to README [\python-kasa#1367](python-kasa#1367) (@rytilahti)
- Update docs for new FeatureAttribute behaviour [\python-kasa#1365](python-kasa#1365) (@sdb9696)
- Add link to related homeassistant-tapo-control [\python-kasa#1333](python-kasa#1333) (@rytilahti)

**Project maintenance:**

- Add P135 1.0 1.2.0 fixture [\python-kasa#1397](python-kasa#1397) (@sdb9696)
- Handle smartcam device blocked response [\python-kasa#1393](python-kasa#1393) (@sdb9696)
- Handle KeyboardInterrupts in the cli better [\python-kasa#1391](python-kasa#1391) (@sdb9696)
- Update C520WS fixture with new methods [\python-kasa#1384](python-kasa#1384) (@sdb9696)
- Miscellaneous minor fixes to dump\_devinfo [\python-kasa#1382](python-kasa#1382) (@sdb9696)
- Add timeout parameter to dump\_devinfo [\python-kasa#1381](python-kasa#1381) (@sdb9696)
- Simplify get\_protocol to prevent clashes with smartcam and robovac [\python-kasa#1377](python-kasa#1377) (@sdb9696)
- Add smartcam modules to package inits [\python-kasa#1376](python-kasa#1376) (@sdb9696)
- Enable saving of fixture files without git clone [\python-kasa#1375](python-kasa#1375) (@sdb9696)
- Force single for some smartcam requests [\python-kasa#1374](python-kasa#1374) (@sdb9696)
- Add new methods to dump\_devinfo [\python-kasa#1373](python-kasa#1373) (@sdb9696)
- Update cli, light modules, and docs to use FeatureAttributes [\python-kasa#1364](python-kasa#1364) (@sdb9696)
- Pass raw components to SmartChildDevice init [\python-kasa#1363](python-kasa#1363) (@sdb9696)
- Fix line endings in device\_fixtures.py [\python-kasa#1361](python-kasa#1361) (@sdb9696)
- Update dump\_devinfo for raw discovery json and common redactors [\python-kasa#1358](python-kasa#1358) (@sdb9696)
- Tweak RELEASING.md instructions for patch releases [\python-kasa#1347](python-kasa#1347) (@sdb9696)
- Scrub more vacuum keys [\python-kasa#1328](python-kasa#1328) (@rytilahti)
- Remove unnecessary check for python \<3.10 [\python-kasa#1326](python-kasa#1326) (@rytilahti)
- Add vacuum component queries to dump\_devinfo [\python-kasa#1320](python-kasa#1320) (@rytilahti)
- Handle missing mgt\_encryption\_schm in discovery [\python-kasa#1318](python-kasa#1318) (@sdb9696)
- Follow main package structure for tests [\python-kasa#1317](python-kasa#1317) (@rytilahti)
rytilahti added a commit to rytilahti/python-kasa that referenced this pull request Oct 26, 2025
Different devices and different firmwares report overheated status in
different ways.
Some devices indicate support for `overheat_protect` component, but
there are devices that report `overheat_status` even when it is not
listed.
Some other devices use `overheated` boolean that was already previously
supported, but this PR adds support for much more devices that use
`overheat_status` for reporting.

The "overheated" feature is moved into its own module, and uses either
of the ways to report this information.
This will also rename `REQUIRED_KEY_ON_PARENT` to `SYSINFO_LOOKUP_KEYS`
and change its logic to check if any of the keys in the list are found
in the sysinfo.

```
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_protect' -c|wc -l
15
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheated' -c|wc -l
38
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_status' -c|wc -l
20
```

---------

Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
rytilahti pushed a commit to rytilahti/python-kasa that referenced this pull request Oct 26, 2025
## [0.9.0](https://github.com/python-kasa/python-kasa/tree/0.9.0) (2024-12-21)

[Full Changelog](python-kasa/python-kasa@0.8.1...0.9.0)

**Release highlights:**

- Improvements to Tapo camera support:
  - C100, C225, C325WB, C520WS and TC70 now supported.
  - Support for motion, person, tamper, and baby cry detection.
- Initial support for Tapo robovacs.
- API extended with `FeatureAttributes` for consumers to test for [supported features](https://python-kasa.readthedocs.io/en/stable/topics.html#modules-and-features).
- Experimental support for Kasa cameras[^1]

[^1]: Currently limited to devices not yet provisioned via the Tapo app - Many thanks to @Puxtril!

**Breaking changes:**

- Use DeviceInfo consistently across devices [\python-kasa#1338](python-kasa#1338) (@sdb9696)

**Implemented enhancements:**

- Add rssi and signal\_level to smartcam [\python-kasa#1392](python-kasa#1392) (@sdb9696)
- Add smartcam detection modules [\python-kasa#1389](python-kasa#1389) (@sdb9696)
- Add bare-bones matter modules to smart and smartcam devices [\python-kasa#1371](python-kasa#1371) (@sdb9696)
- Add bare bones homekit modules smart and smartcam devices [\python-kasa#1370](python-kasa#1370) (@sdb9696)
- Return raw discovery result in cli discover raw [\python-kasa#1342](python-kasa#1342) (@sdb9696)
- cli: print model, https, and lv for discover list [\python-kasa#1339](python-kasa#1339) (@rytilahti)
- Improve overheat reporting [\python-kasa#1335](python-kasa#1335) (@rytilahti)
- Provide alternative camera urls [\python-kasa#1316](python-kasa#1316) (@sdb9696)
- Add LinkieTransportV2 and basic IOT.IPCAMERA support [\python-kasa#1270](python-kasa#1270) (@Puxtril)
- Add ssltransport for robovacs [\python-kasa#943](python-kasa#943) (@rytilahti)

**Fixed bugs:**

- Tapo H200 Hub does not work with python-kasa [\python-kasa#1149](python-kasa#1149)
- Treat smartcam 500 errors after handshake as retryable [\python-kasa#1395](python-kasa#1395) (@sdb9696)
- Fix lens mask required component and state [\python-kasa#1386](python-kasa#1386) (@sdb9696)
- Add LensMask module to smartcam [\python-kasa#1385](python-kasa#1385) (@sdb9696)
- Do not error when accessing smart device\_type before update [\python-kasa#1319](python-kasa#1319) (@sdb9696)
- Fallback to other module data on get\_energy\_usage errors [\python-kasa#1245](python-kasa#1245) (@rytilahti)

**Added support for devices:**

- Add P210M\(US\) 1.0 1.0.3 fixture [\python-kasa#1399](python-kasa#1399) (@sdb9696)
- Add C225\(US\) 2.0 1.0.11 fixture [\python-kasa#1398](python-kasa#1398) (@sdb9696)
- Add P306\(US\) 1.0 1.1.2 fixture [\python-kasa#1396](python-kasa#1396) (@nakanaela)
- Add TC70 3.0 1.3.11 fixture [\python-kasa#1390](python-kasa#1390) (@sdb9696)
- Add C325WB\(EU\) 1.0 1.1.17 Fixture [\python-kasa#1379](python-kasa#1379) (@sdb9696)
- Add C100 4.0 1.3.14 Fixture [\python-kasa#1378](python-kasa#1378) (@sdb9696)
- Add KS200 \(US\) IOT Fixture and P115 \(US\) Smart Fixture [\python-kasa#1355](python-kasa#1355) (@ZeliardM)
- Add C520WS camera fixture [\python-kasa#1352](python-kasa#1352) (@Happy-Cadaver)

**Documentation updates:**

- Update docs for Tapo Lab Third-Party compatibility [\python-kasa#1380](python-kasa#1380) (@sdb9696)
- Add homebridge-kasa-python link to README [\python-kasa#1367](python-kasa#1367) (@rytilahti)
- Update docs for new FeatureAttribute behaviour [\python-kasa#1365](python-kasa#1365) (@sdb9696)
- Add link to related homeassistant-tapo-control [\python-kasa#1333](python-kasa#1333) (@rytilahti)

**Project maintenance:**

- Add P135 1.0 1.2.0 fixture [\python-kasa#1397](python-kasa#1397) (@sdb9696)
- Handle smartcam device blocked response [\python-kasa#1393](python-kasa#1393) (@sdb9696)
- Handle KeyboardInterrupts in the cli better [\python-kasa#1391](python-kasa#1391) (@sdb9696)
- Update C520WS fixture with new methods [\python-kasa#1384](python-kasa#1384) (@sdb9696)
- Miscellaneous minor fixes to dump\_devinfo [\python-kasa#1382](python-kasa#1382) (@sdb9696)
- Add timeout parameter to dump\_devinfo [\python-kasa#1381](python-kasa#1381) (@sdb9696)
- Simplify get\_protocol to prevent clashes with smartcam and robovac [\python-kasa#1377](python-kasa#1377) (@sdb9696)
- Add smartcam modules to package inits [\python-kasa#1376](python-kasa#1376) (@sdb9696)
- Enable saving of fixture files without git clone [\python-kasa#1375](python-kasa#1375) (@sdb9696)
- Force single for some smartcam requests [\python-kasa#1374](python-kasa#1374) (@sdb9696)
- Add new methods to dump\_devinfo [\python-kasa#1373](python-kasa#1373) (@sdb9696)
- Update cli, light modules, and docs to use FeatureAttributes [\python-kasa#1364](python-kasa#1364) (@sdb9696)
- Pass raw components to SmartChildDevice init [\python-kasa#1363](python-kasa#1363) (@sdb9696)
- Fix line endings in device\_fixtures.py [\python-kasa#1361](python-kasa#1361) (@sdb9696)
- Update dump\_devinfo for raw discovery json and common redactors [\python-kasa#1358](python-kasa#1358) (@sdb9696)
- Tweak RELEASING.md instructions for patch releases [\python-kasa#1347](python-kasa#1347) (@sdb9696)
- Scrub more vacuum keys [\python-kasa#1328](python-kasa#1328) (@rytilahti)
- Remove unnecessary check for python \<3.10 [\python-kasa#1326](python-kasa#1326) (@rytilahti)
- Add vacuum component queries to dump\_devinfo [\python-kasa#1320](python-kasa#1320) (@rytilahti)
- Handle missing mgt\_encryption\_schm in discovery [\python-kasa#1318](python-kasa#1318) (@sdb9696)
- Follow main package structure for tests [\python-kasa#1317](python-kasa#1317) (@rytilahti)
rytilahti added a commit to rytilahti/python-kasa that referenced this pull request Nov 10, 2025
Different devices and different firmwares report overheated status in
different ways.
Some devices indicate support for `overheat_protect` component, but
there are devices that report `overheat_status` even when it is not
listed.
Some other devices use `overheated` boolean that was already previously
supported, but this PR adds support for much more devices that use
`overheat_status` for reporting.

The "overheated" feature is moved into its own module, and uses either
of the ways to report this information.
This will also rename `REQUIRED_KEY_ON_PARENT` to `SYSINFO_LOOKUP_KEYS`
and change its logic to check if any of the keys in the list are found
in the sysinfo.

```
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_protect' -c|wc -l
15
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheated' -c|wc -l
38
tpr@lumipyry ~/c/p/tests (fix/overheated)> ag 'overheat_status' -c|wc -l
20
```

---------

Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
rytilahti pushed a commit to rytilahti/python-kasa that referenced this pull request Nov 10, 2025
## [0.9.0](https://github.com/python-kasa/python-kasa/tree/0.9.0) (2024-12-21)

[Full Changelog](python-kasa/python-kasa@0.8.1...0.9.0)

**Release highlights:**

- Improvements to Tapo camera support:
  - C100, C225, C325WB, C520WS and TC70 now supported.
  - Support for motion, person, tamper, and baby cry detection.
- Initial support for Tapo robovacs.
- API extended with `FeatureAttributes` for consumers to test for [supported features](https://python-kasa.readthedocs.io/en/stable/topics.html#modules-and-features).
- Experimental support for Kasa cameras[^1]

[^1]: Currently limited to devices not yet provisioned via the Tapo app - Many thanks to @Puxtril!

**Breaking changes:**

- Use DeviceInfo consistently across devices [\python-kasa#1338](python-kasa#1338) (@sdb9696)

**Implemented enhancements:**

- Add rssi and signal\_level to smartcam [\python-kasa#1392](python-kasa#1392) (@sdb9696)
- Add smartcam detection modules [\python-kasa#1389](python-kasa#1389) (@sdb9696)
- Add bare-bones matter modules to smart and smartcam devices [\python-kasa#1371](python-kasa#1371) (@sdb9696)
- Add bare bones homekit modules smart and smartcam devices [\python-kasa#1370](python-kasa#1370) (@sdb9696)
- Return raw discovery result in cli discover raw [\python-kasa#1342](python-kasa#1342) (@sdb9696)
- cli: print model, https, and lv for discover list [\python-kasa#1339](python-kasa#1339) (@rytilahti)
- Improve overheat reporting [\python-kasa#1335](python-kasa#1335) (@rytilahti)
- Provide alternative camera urls [\python-kasa#1316](python-kasa#1316) (@sdb9696)
- Add LinkieTransportV2 and basic IOT.IPCAMERA support [\python-kasa#1270](python-kasa#1270) (@Puxtril)
- Add ssltransport for robovacs [\python-kasa#943](python-kasa#943) (@rytilahti)

**Fixed bugs:**

- Tapo H200 Hub does not work with python-kasa [\python-kasa#1149](python-kasa#1149)
- Treat smartcam 500 errors after handshake as retryable [\python-kasa#1395](python-kasa#1395) (@sdb9696)
- Fix lens mask required component and state [\python-kasa#1386](python-kasa#1386) (@sdb9696)
- Add LensMask module to smartcam [\python-kasa#1385](python-kasa#1385) (@sdb9696)
- Do not error when accessing smart device\_type before update [\python-kasa#1319](python-kasa#1319) (@sdb9696)
- Fallback to other module data on get\_energy\_usage errors [\python-kasa#1245](python-kasa#1245) (@rytilahti)

**Added support for devices:**

- Add P210M\(US\) 1.0 1.0.3 fixture [\python-kasa#1399](python-kasa#1399) (@sdb9696)
- Add C225\(US\) 2.0 1.0.11 fixture [\python-kasa#1398](python-kasa#1398) (@sdb9696)
- Add P306\(US\) 1.0 1.1.2 fixture [\python-kasa#1396](python-kasa#1396) (@nakanaela)
- Add TC70 3.0 1.3.11 fixture [\python-kasa#1390](python-kasa#1390) (@sdb9696)
- Add C325WB\(EU\) 1.0 1.1.17 Fixture [\python-kasa#1379](python-kasa#1379) (@sdb9696)
- Add C100 4.0 1.3.14 Fixture [\python-kasa#1378](python-kasa#1378) (@sdb9696)
- Add KS200 \(US\) IOT Fixture and P115 \(US\) Smart Fixture [\python-kasa#1355](python-kasa#1355) (@ZeliardM)
- Add C520WS camera fixture [\python-kasa#1352](python-kasa#1352) (@Happy-Cadaver)

**Documentation updates:**

- Update docs for Tapo Lab Third-Party compatibility [\python-kasa#1380](python-kasa#1380) (@sdb9696)
- Add homebridge-kasa-python link to README [\python-kasa#1367](python-kasa#1367) (@rytilahti)
- Update docs for new FeatureAttribute behaviour [\python-kasa#1365](python-kasa#1365) (@sdb9696)
- Add link to related homeassistant-tapo-control [\python-kasa#1333](python-kasa#1333) (@rytilahti)

**Project maintenance:**

- Add P135 1.0 1.2.0 fixture [\python-kasa#1397](python-kasa#1397) (@sdb9696)
- Handle smartcam device blocked response [\python-kasa#1393](python-kasa#1393) (@sdb9696)
- Handle KeyboardInterrupts in the cli better [\python-kasa#1391](python-kasa#1391) (@sdb9696)
- Update C520WS fixture with new methods [\python-kasa#1384](python-kasa#1384) (@sdb9696)
- Miscellaneous minor fixes to dump\_devinfo [\python-kasa#1382](python-kasa#1382) (@sdb9696)
- Add timeout parameter to dump\_devinfo [\python-kasa#1381](python-kasa#1381) (@sdb9696)
- Simplify get\_protocol to prevent clashes with smartcam and robovac [\python-kasa#1377](python-kasa#1377) (@sdb9696)
- Add smartcam modules to package inits [\python-kasa#1376](python-kasa#1376) (@sdb9696)
- Enable saving of fixture files without git clone [\python-kasa#1375](python-kasa#1375) (@sdb9696)
- Force single for some smartcam requests [\python-kasa#1374](python-kasa#1374) (@sdb9696)
- Add new methods to dump\_devinfo [\python-kasa#1373](python-kasa#1373) (@sdb9696)
- Update cli, light modules, and docs to use FeatureAttributes [\python-kasa#1364](python-kasa#1364) (@sdb9696)
- Pass raw components to SmartChildDevice init [\python-kasa#1363](python-kasa#1363) (@sdb9696)
- Fix line endings in device\_fixtures.py [\python-kasa#1361](python-kasa#1361) (@sdb9696)
- Update dump\_devinfo for raw discovery json and common redactors [\python-kasa#1358](python-kasa#1358) (@sdb9696)
- Tweak RELEASING.md instructions for patch releases [\python-kasa#1347](python-kasa#1347) (@sdb9696)
- Scrub more vacuum keys [\python-kasa#1328](python-kasa#1328) (@rytilahti)
- Remove unnecessary check for python \<3.10 [\python-kasa#1326](python-kasa#1326) (@rytilahti)
- Add vacuum component queries to dump\_devinfo [\python-kasa#1320](python-kasa#1320) (@rytilahti)
- Handle missing mgt\_encryption\_schm in discovery [\python-kasa#1318](python-kasa#1318) (@sdb9696)
- Follow main package structure for tests [\python-kasa#1317](python-kasa#1317) (@rytilahti)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Version 1.2.3 Build 240617 Rel.153525 for the P110M added and renamed some fields

3 participants