Fix IOT KLAPv2 transport selection and class detection#1692
Fix IOT KLAPv2 transport selection and class detection#1692thatdaveguy1 wants to merge 1 commit into
Conversation
Use KlapTransportV2 for IOT KLAP devices with login_version >= 2 and derive IOT plug/switch+b ulb classes from get_sysinfo so strips are not misclassified as plugs. Co-authored-by: Copilot <[email protected]>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1692 +/- ##
=======================================
Coverage 93.22% 93.22%
=======================================
Files 157 157
Lines 9815 9817 +2
Branches 1003 1004 +1
=======================================
+ Hits 9150 9152 +2
Misses 472 472
Partials 193 193 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Fixes regressions affecting IOT devices using KLAP on newer firmware by selecting the correct KLAP transport for login v2 and ensuring correct device-class instantiation (e.g., strips vs plugs) based on system.get_sysinfo during connect().
Changes:
- Select
KlapTransportV2for IOT KLAP devices whenlogin_version >= 2. - Use
system.get_sysinfo-based device class detection duringconnect()for IOT plug/switch and bulb families (not just XOR). - Add unit tests covering both transport selection and KLAP device-class detection.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
kasa/device_factory.py |
Adjusts IOT connect path to derive class from sysinfo for plugs/bulbs and selects KlapTransportV2 for IOT KLAP login v2. |
tests/test_device_factory.py |
Adds tests asserting IOT KLAP login v2 uses KlapTransportV2 and that KLAP strips are instantiated via sysinfo detection. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
✅ Independently confirmed this fix works on real hardware. I hit this exact bug on an HS103 (US) HW 5.0, FW 1.1.3 Build 250908 running on Home Assistant 2026.5.4 (python-kasa 0.10.2). Device reports with in discovery, but mapped it to (v1, MD5) — causing . I independently arrived at the same fix (upgrading to when ) before finding this PR. Validated by:
This is blocking real HA users — anyone with HS103/HS200/HS300/KP303 on newer firmware (HW 5.0+) can't add these devices. The fix is minimal, correct, and well-tested. Would love to see this merged. 🚀 |
Summary
This PR fixes two related regressions for IOT KLAP devices on newer firmware:
KlapTransportV2for IOT KLAP devices whenlogin_version >= 2.system.get_sysinfoduringconnect()(not family-only mapping), so strips are correctly instantiated asIotStripinstead ofIotPlug.Why
KlapTransportfor devices that require v2._connect()only used sysinfo-based class detection for XOR.Tests
iot-klap-lv2coverage intest_get_protocolto assertKlapTransportV2for login v2.test_connect_iot_klap_uses_sysinfo_for_device_classto ensure KLAP strips are identified from sysinfo and not misclassified as plugs.