Releases: python-kasa/python-kasa
0.10.2
Release summary:
- Bugfix for #1499.
- Support for L530B and C110 devices.
Fixed bugs:
- H100 - Raised error: not enough values to unpack (expected 2, got 1) #1499
- Do not crash on missing build number in fw version #1500 (@rytilahti)
Added support for devices:
Project maintenance:
- Add fixtures for new versions of H100, P110, and T100 devices #1501 (@LXGaming)
- Add L530E(TW) 2.0 1.1.1 fixture #1497 (@bluehomewu)
0.10.1
Release summary:
Small patch release for bugfixes
Implemented enhancements:
- dustbin_mode: add 'off' mode for cleaner downstream impl #1488 (@rytilahti)
- Add Dimmer Configuration Support #1484 (@ryenitcher)
Fixed bugs:
- Do not return empty string for custom light effect name #1491 (@sdb9696)
- Add FeatureAttributes to smartcam Alarm #1489 (@sdb9696)
Project maintenance:
0.10.0
Release summary:
This release brings support for many new devices, including completely new device types:
- Support for Tapo robot vacuums. Special thanks to @steveredden, @MAXIGAMESSUPPER, and veep60 for helping to get this implemented!
- Support for hub attached cameras and doorbells (H200)
- Improved support for hubs (including pairing & better chime controls)
- Support for many new camera and doorbell device models, including C220, C720, D100C, D130, and D230
Many thanks to testers and new contributors - @steveredden, @DawidPietrykowski, @Obbay2, @andrewome, @ryenitcher and @etmmvdp!
Breaking changes:
uses_http
is now a readonly property of device config. Consumers that relied onuses_http
to be persisted withDeviceConfig.to_dict()
will need to store the value separately.is_color
,is_dimmable
,is_variable_color_temp
,valid_temperate_range
, andhas_effects
attributes from theLight
module are deprecated, consumers should usehas_feature("hsv")
,has_feature("brightness")
,has_feature("color_temp")
,get_feature("color_temp").range
, andModule.LightEffect in dev.modules
respectively. Calling the deprecated attributes will emit aDeprecationWarning
and type checkers will fail them.alarm_volume
on thesmart.Alarm
module is changed fromstr
toint
Breaking changes:
- Make uses_http a readonly property of device config #1449 (@sdb9696)
- Allow passing alarm parameter overrides #1340 (@rytilahti)
- Deprecate legacy light module is_capability checks #1297 (@sdb9696)
Implemented enhancements:
- Expose more battery sensors for D230 #1451
- dumping HTTP POST Body for Tapo Vacuum (RV30 Plus) #937
- Add common alarm interface #1479 (@sdb9696)
- Add common childsetup interface #1470 (@sdb9696)
- Add childsetup module to smartcam hubs #1469 (@sdb9696)
- Add smartcam pet detection toggle module #1465 (@DawidPietrykowski)
- Only log one warning per unknown clean error code and status #1462 (@rytilahti)
- Add childlock module for vacuums #1461 (@rytilahti)
- Add ultra mode (fanspeed = 5) for vacuums #1459 (@rytilahti)
- Add setting to change carpet clean mode #1458 (@rytilahti)
- Add setting to change clean count #1457 (@rytilahti)
- Add mop module #1456 (@rytilahti)
- Enable dynamic hub child creation and deletion on update #1454 (@sdb9696)
- Expose current cleaning information #1453 (@rytilahti)
- Add battery module to smartcam devices #1452 (@sdb9696)
- Allow update of camera modules after setting values #1450 (@sdb9696)
- Update hub children on first update and delay subsequent updates #1438 (@sdb9696)
- Add support for doorbells and chimes #1435 (@steveredden)
- Implement vacuum dustbin module (dust_bucket) #1423 (@rytilahti)
- Allow https for klaptransport #1415 (@rytilahti)
- Add smartcam child device support for smartcam hubs #1413 (@sdb9696)
- Add powerprotection module #1337 (@rytilahti)
- Add vacuum speaker controls #1332 (@rytilahti)
- Add consumables module for vacuums #1327 (@rytilahti)
- Add ADC Value to PIR Enabled Switches #1263 (@ryenitcher)
- Add support for cleaning records #945 (@rytilahti)
- Initial support for vacuums (clean module) #944 (@rytilahti)
- Add support for pairing devices with hubs #859 (@rytilahti)
Fixed bugs:
- TP-Link HS300 Wi-Fi Power-Strip - "Parent On/Off" not functioning. #637
- Convert carpet_clean_mode to carpet_boost switch #1486 (@rytilahti)
- Change category for empty dustbin feature from Primary to Config #1485 (@rytilahti)
- Report 0 for instead of None for zero current and voltage #1483 (@ryenitcher)
- Disable iot camera creation until more complete #1480 (@sdb9696)
- ssltransport: use debug logger for sending requests #1443 (@rytilahti)
- Fix discover cli command with host #1437 (@sdb9696)
- Fallback to is_low for batterysensor's battery_low #1420 (@rytilahti)
- Fix iot strip turn on and off from parent #639 (@Obbay2)
Added support for devices:
- Add D130(US) 1.0 1.1.9 fixture #1476 (@sdb9696)
- Add D100C(US) 1.0 1.1.3 fixture #1475 (@sdb9696)
- Add C220(EU) 1.0 1.2.2 camera fixture #1466 (@DawidPietrykowski)
- Add D230(EU) 1.20 1.1.19 fixture #1448 (@sdb9696)
- Add fixture for C720 camera #1433 (@steveredden)
Project maintenance:
- Update ruff to 0.9 #1482 (@sdb9696)
- Cancel in progress CI workflows after new pushes #1481 (@sdb9696)
- Update test framework to support smartcam device discovery. #1477 (@sdb9696)
- Add error code 7 for clean module #1474 (@rytilahti)
- Enable CI workflow on PRs to feat/ fix/ and janitor/ #1471 (@sdb9696)
- Add commit-hook to prettify JSON files #1455 (@rytilahti)
- Add required sphinx.configuration #1446 (@rytilahti)
- Add more redactors for smartcams #1439 (@sdb9696)
- Add KS230(US) 2.0 1.0.11 IOT Fixture #1430 (@ZeliardM)
- Add tests for dump_devinfo parent/child smartcam fixture generation #1428 (@sdb9696)
- Raise errors on single smartcam child requests #1427 (@sdb9696)
0.9.1
Release summary:
- Support for hub-attached wall switches S210 and S220
- Support for older firmware on Tapo cameras
- Bugfixes and improvements
Implemented enhancements:
- Add support for Tapo hub-attached switch devices #1421 (@sdb9696)
- Use repr() for enum values in Feature.__repr__ #1414 (@rytilahti)
- Update SslAesTransport for older firmware versions #1362 (@sdb9696)
Fixed bugs:
- T310 not detected with H200 Hub #1409
- Backoff after xor timeout and improve error reporting #1424 (@bdraco)
- Fix incorrect obd src echo #1412 (@rytilahti)
- Handle smartcam partial list responses #1411 (@sdb9696)
Added support for devices:
- Add S220 fixture #1419 (@rytilahti)
- Add S210 fixture #1418 (@rytilahti)
Documentation updates:
- Improve exception messages on credential mismatches #1417 (@rytilahti)
Project maintenance:
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. - Experimental support for Kasa cameras1
Breaking changes:
Implemented enhancements:
- Add rssi and signal_level to smartcam #1392 (@sdb9696)
- Add smartcam detection modules #1389 (@sdb9696)
- Add bare-bones matter modules to smart and smartcam devices #1371 (@sdb9696)
- Add bare bones homekit modules smart and smartcam devices #1370 (@sdb9696)
- Return raw discovery result in cli discover raw #1342 (@sdb9696)
- cli: print model, https, and lv for discover list #1339 (@rytilahti)
- Improve overheat reporting #1335 (@rytilahti)
- Provide alternative camera urls #1316 (@sdb9696)
- Add LinkieTransportV2 and basic IOT.IPCAMERA support #1270 (@Puxtril)
- Add ssltransport for robovacs #943 (@rytilahti)
Fixed bugs:
- Tapo H200 Hub does not work with python-kasa #1149
- Treat smartcam 500 errors after handshake as retryable #1395 (@sdb9696)
- Fix lens mask required component and state #1386 (@sdb9696)
- Add LensMask module to smartcam #1385 (@sdb9696)
- Do not error when accessing smart device_type before update #1319 (@sdb9696)
- Fallback to other module data on get_energy_usage errors #1245 (@rytilahti)
Added support for devices:
- Add P210M(US) 1.0 1.0.3 fixture #1399 (@sdb9696)
- Add C225(US) 2.0 1.0.11 fixture #1398 (@sdb9696)
- Add P306(US) 1.0 1.1.2 fixture #1396 (@nakanaela)
- Add TC70 3.0 1.3.11 fixture #1390 (@sdb9696)
- Add C325WB(EU) 1.0 1.1.17 Fixture #1379 (@sdb9696)
- Add C100 4.0 1.3.14 Fixture #1378 (@sdb9696)
- Add KS200 (US) IOT Fixture and P115 (US) Smart Fixture #1355 (@ZeliardM)
- Add C520WS camera fixture #1352 (@Happy-Cadaver)
Documentation updates:
- Update docs for Tapo Lab Third-Party compatibility #1380 (@sdb9696)
- Add homebridge-kasa-python link to README #1367 (@rytilahti)
- Update docs for new FeatureAttribute behaviour #1365 (@sdb9696)
- Add link to related homeassistant-tapo-control #1333 (@rytilahti)
Project maintenance:
- Add P135 1.0 1.2.0 fixture #1397 (@sdb9696)
- Handle smartcam device blocked response #1393 (@sdb9696)
- Handle KeyboardInterrupts in the cli better #1391 (@sdb9696)
- Update C520WS fixture with new methods #1384 (@sdb9696)
- Miscellaneous minor fixes to dump_devinfo #1382 (@sdb9696)
- Add timeout parameter to dump_devinfo #1381 (@sdb9696)
- Simplify get_protocol to prevent clashes with smartcam and robovac #1377 (@sdb9696)
- Add smartcam modules to package inits #1376 (@sdb9696)
- Enable saving of fixture files without git clone #1375 (@sdb9696)
- Force single for some smartcam requests #1374 (@sdb9696)
- Add new methods to dump_devinfo #1373 (@sdb9696)
- Update cli, light modules, and docs to use FeatureAttributes #1364 (@sdb9696)
- Pass raw components to SmartChildDevice init #1363 (@sdb9696)
- Fix line endings in device_fixtures.py #1361 (@sdb9696)
- Update dump_devinfo for raw discovery json and common redactors #1358 (@sdb9696)
- Tweak RELEASING.md instructions for patch releases #1347 (@sdb9696)
- Scrub more vacuum keys #1328 (@rytilahti)
- Remove unnecessary check for python <3.10 #1326 (@rytilahti)
- Add vacuum component queries to dump_devinfo #1320 (@rytilahti)
- Handle missing mgt_encryption_schm in discovery #1318 (@sdb9696)
- Follow main package structure for tests #1317 (@rytilahti)
0.8.1
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
andget_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()
todevice_config.to_dict_control_credentials()
.to_dict()
is still available but takes no parameters. - From the
iot.Cloud
module theiot.CloudInfo
class attributes have been converted to snake case.
Breaking changes:
- Migrate iot cloud module to mashumaro #1282 (@sdb9696)
- Replace custom deviceconfig serialization with mashumaru #1274 (@sdb9696)
- Remove support for python <3.11 #1273 (@sdb9696)
Implemented enhancements:
- Update cli modify presets to support smart devices #1295 (@sdb9696)
- Use credentials_hash for smartcamera rtsp url #1293 (@sdb9696)
- Add voltage and current monitoring to smart Devices #1281 (@ryenitcher)
- Update cli feature command for actions not to require a value #1264 (@sdb9696)
- Add pan tilt camera module #1261 (@sdb9696)
- Add alarm module for smartcamera hubs #1258 (@sdb9696)
- Move TAPO smartcamera out of experimental package #1255 (@sdb9696)
- Add SmartCamera Led Module #1249 (@sdb9696)
- Use component queries to select smartcamera modules #1248 (@sdb9696)
- Print formatting for IotLightPreset #1216 (@Puxtril)
- Allow getting Annotated features from modules #1018 (@sdb9696)
- Add common Thermostat module #977 (@sdb9696)
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:
- Add HS200 (US) Smart Fixture #1303 (@ZeliardM)
- Add smartcamera devices to supported docs #1257 (@sdb9696)
- Add P110M(AU) fixture #1244 (@rytilahti)
- Add L630 fixture #1240 (@rytilahti)
- Add EP40M Fixture #1238 (@ryenitcher)
- Add KS220 Fixture #1237 (@ryenitcher)
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:
- Rename tests/smartcamera to tests/smartcam #1315 (@sdb9696)
- Do not error on smartcam hub attached smartcam child devices #1314 (@sdb9696)
- Add P110M(EU) fixture #1305 (@sdb9696)
- Run tests with caplog in a single worker #1304 (@sdb9696)
- Rename smartcamera to smartcam #1300 (@sdb9696)
- Move iot fixtures into iot subfolder #1299 (@sdb9696)
- Annotate fan_speed_level of Fan interface #1298 (@sdb9696)
- Add PIR ADC Values to Test Fixtures #1296 (@ryenitcher)
- Exclude __getattr__ for deprecated attributes from type checkers #1294 (@sdb9696)
- Simplify omit http_client in DeviceConfig serialization #1292 (@sdb9696)
- Add SMART Voltage Monitoring to Fixtures #1290 (@ryenitcher)
- Remove pydantic dependency #1289 (@sdb9696)
- Do not print out all the fixture names at the start of test runs #1287 (@sdb9696)
- dump_devinfo: iot light strip commands #1286 (@sdb9696)
- Migrate TurnOnBehaviours to mashumaro #1285 (@sdb9696)
- dump_devinfo: query smartlife.iot.common.cloud for fw updates #1284 (@rytilahti)
- Migrate RuleModule to mashumaro #1283 (@sdb9696)
- Update sphinx dependency to 6.2 to fix docs build #1280 (@sdb9696)
- Update DiscoveryResult to use mashu Annotated Alias #1279 (@sdb9696)
- Extend dump_devinfo iot queries #1278 (@sdb9696)
- Migrate triggerlogs to mashumaru #1277 (@sdb9696)
- Migrate smart firmware module to mashumaro #1276 (@sdb9696)
- Migrate IotLightPreset to mashumaru #1275 (@sdb9696)
- Allow callable coroutines for feature setters #1272 (@sdb9696)
- Fix deprecated SSLContext() usage #1271 (@sdb9696)
- Use _get_device_info methods for smart and iot devs in devtools #1265 (@sdb9696)
- Remove experimental support #1256 (@sdb9696)
- Move protocol modules into protocols package #1254 (@sdb9696)
- Add linkcheck to readthedocs CI #1253 (@rytilahti)
- Update cli energy command to use energy module #1252 (@sdb9696)
- Consolidate warnings for fixtures missing child devices #1251 (@sdb9696)
- Update smartcamera fixtures with components #1250 (@sdb9696)
- Move transports into their own package #1247 (@rytilahti)
- Fix warnings in our test suite #1246 (@rytilahti)
- Move tests folder to top level of project #1242 (@sdb9696)
- Fix ...
0.7.7
Release summary:
- Bugfix for child device device creation error with credentials_hash
- PIR support for iot dimmers and wall switches.
- Various small enhancements and project improvements.
Implemented enhancements:
- Add PIR&LAS for wall switches mentioning PIR support #1227 (@rytilahti)
- Expose ambient light setting for iot dimmers #1210 (@rytilahti)
- Expose PIR enabled setting for iot dimmers #1174 (@rytilahti)
- Add childprotection module #1141 (@rytilahti)
- Initial trigger logs implementation #900 (@rytilahti)
Fixed bugs:
Project maintenance:
- Update TC65 fixture #1225 (@rytilahti)
- Update smartcamera fixtures from latest dump_devinfo #1224 (@sdb9696)
- Add component queries to smartcamera devices #1223 (@sdb9696)
- Update try_connect_all to be more efficient and report attempts #1222 (@sdb9696)
- Use stacklevel=2 for warnings to report on callsites #1219 (@rytilahti)
- parse_pcap_klap: various code cleanups #1138 (@rytilahti)
0.7.6
Release summary:
- Experimental support for Tapo cameras and the Tapo H200 hub which uses the same protocol.
- Better timestamp support across all devices.
- Support for new devices P304M, S200D and S200B (see README.md for note on the S200 support).
- Various other fixes and minor features.
Implemented enhancements:
- Add support for setting the timezone #436
- Add stream_rtsp_url to camera module #1197 (@sdb9696)
- Try default logon credentials in SslAesTransport #1195 (@sdb9696)
- Allow enabling experimental devices from environment variable #1194 (@sdb9696)
- Add core device, child and camera modules to smartcamera #1193 (@sdb9696)
- Fallback to get_current_power if get_energy_usage does not provide current_power #1186 (@Fulch36)
- Add https parameter to device class factory #1184 (@sdb9696)
- Add discovery list command to cli #1183 (@sdb9696)
- Add Time module to SmartCamera devices #1182 (@sdb9696)
- Add try_connect_all to allow initialisation without udp broadcast #1171 (@sdb9696)
- Update dump_devinfo for smart camera protocol #1169 (@sdb9696)
- Enable newer encrypted discovery protocol #1168 (@sdb9696)
- Initial TapoCamera support #1165 (@sdb9696)
- Add waterleak alert timestamp #1162 (@rytilahti)
- Create common Time module and add time set cli command #1157 (@sdb9696)
Fixed bugs:
- Only send 20002 discovery request with key included #1207 (@sdb9696)
- Fix SslAesTransport default login and add tests #1202 (@sdb9696)
- Fix device_config serialisation of https value #1196 (@sdb9696)
Added support for devices:
- Add S200B(EU) fw 1.11.0 fixture #1205 (@sdb9696)
- Add TC65 fixture #1200 (@rytilahti)
- Add P304M(UK) test fixture #1185 (@Fulch36)
- Add H200 experimental fixture #1180 (@sdb9696)
- Add S200D button fixtures #1161 (@rytilahti)
Project maintenance:
- Fix mypy errors in parse_pcap_klap #1214 (@sdb9696)
- Make HSV NamedTuple creation more efficient #1211 (@sdb9696)
- dump_devinfo: query get_current_brt for iot dimmers #1209 (@rytilahti)
- Add trigger_logs and double_click to dump_devinfo helper #1208 (@sdb9696)
- Fix smartcamera childdevice module #1206 (@sdb9696)
- Add H200(EU) fw 1.3.2 fixture #1204 (@sdb9696)
- Do not pass None as timeout to http requests #1203 (@sdb9696)
- Update SMART test framework to use fake child protocols #1199 (@sdb9696)
- Allow passing an aiohttp client session during discover try_connect_all #1198 (@sdb9696)
- Add test framework for smartcamera #1192 (@sdb9696)
- Rename experimental fixtures folder to smartcamera #1191 (@sdb9696)
- Combine smartcamera error codes into SmartErrorCode #1190 (@sdb9696)
- Allow deriving from SmartModule without being registered #1189 (@sdb9696)
- Improve supported module checks for hub children #1188 (@sdb9696)
- Update smartcamera to support single get/set/do requests #1187 (@sdb9696)
- Add S200B(US) fw 1.12.0 fixture #1181 (@sdb9696)
- Add T110(US), T310(US) and T315(US) sensor fixtures #1179 (@sdb9696)
- Enforce EOLs for *.rst and *.md #1178 (@rytilahti)
- Convert fixtures to use unix newlines #1177 (@rytilahti)
- Add motion sensor to known categories #1176 (@rytilahti)
- Drop urllib3 dependency and create ssl context in executor thread #1175 (@sdb9696)
- Expose smart child device map as a class constant #1173 (@sdb9696)
0.7.5
Release summary:
- Fix for KP303 on Firmware 1.0.6
- Fix for
on_since
value jitter - Various maintenance items
Breaking changes:
Fixed bugs:
- Use tzinfo in time constructor instead of astime for iot devices #1158 (@sdb9696)
- Send empty dictionary instead of null for iot queries #1145 (@sdb9696)
- Stabilise on_since value for smart devices #1144 (@sdb9696)
- parse_pcap_klap: require source host #1137 (@rytilahti)
- parse_pcap_klap: use request_uri for matching the response #1136 (@rytilahti)
Project maintenance: