Skip to content

Fix IOT KLAPv2 transport selection and class detection#1692

Open
thatdaveguy1 wants to merge 1 commit intopython-kasa:masterfrom
thatdaveguy1:fix/iot-klap-lv2-transport-and-class
Open

Fix IOT KLAPv2 transport selection and class detection#1692
thatdaveguy1 wants to merge 1 commit intopython-kasa:masterfrom
thatdaveguy1:fix/iot-klap-lv2-transport-and-class

Conversation

@thatdaveguy1
Copy link
Copy Markdown

Summary

This PR fixes two related regressions for IOT KLAP devices on newer firmware:

  1. Transport selection: Use KlapTransportV2 for IOT KLAP devices when login_version >= 2.
  2. Device class detection: For IOT plug/switch and bulb families, derive class from system.get_sysinfo during connect() (not family-only mapping), so strips are correctly instantiated as IotStrip instead of IotPlug.

Why

Tests

  • Added iot-klap-lv2 coverage in test_get_protocol to assert KlapTransportV2 for login v2.
  • Added test_connect_iot_klap_uses_sysinfo_for_device_class to ensure KLAP strips are identified from sysinfo and not misclassified as plugs.

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 <223556219+Copilot@users.noreply.github.com>
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 18, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.22%. Comparing base (76d9f68) to head (8b1f6b8).

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.
📢 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.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

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 KlapTransportV2 for IOT KLAP devices when login_version >= 2.
  • Use system.get_sysinfo-based device class detection during connect() 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants