diff --git a/README.md b/README.md index 1847e139..585b8f47 100644 --- a/README.md +++ b/README.md @@ -189,7 +189,7 @@ The following devices have been tested and confirmed as working. If your device - **Plugs**: EP10, EP25[^2], HS100[^2], HS103, HS105, HS110, KP100, KP105, KP115, KP125, KP125M[^1], KP401 - **Power Strips**: EP40, EP40M[^1], HS107, HS300, KP200, KP303, KP400 - **Wall Switches**: ES20M, HS200[^2], HS210, HS220[^2], KP405, KS200, KS200M, KS205[^1], KS220, KS220M, KS225[^1], KS230, KS240[^1] -- **Bulbs**: KL110, KL120, KL125, KL130, KL135, KL50, KL60, LB100, LB110 +- **Bulbs**: KL110, KL110B, KL120, KL125, KL130, KL135, KL50, KL60, LB100, LB110 - **Light Strips**: KL400L10, KL400L5, KL420L5, KL430 - **Hubs**: KH100[^1] - **Hub-Connected Devices[^3]**: KE100[^1] diff --git a/SUPPORTED.md b/SUPPORTED.md index 0f5163ab..b6911d88 100644 --- a/SUPPORTED.md +++ b/SUPPORTED.md @@ -132,6 +132,8 @@ Some newer Kasa devices require authentication. These are marked with [^1] in th - **KL110** - Hardware: 1.0 (US) / Firmware: 1.8.11 +- **KL110B** + - Hardware: 1.0 (UN) / Firmware: 1.8.11 - **KL120** - Hardware: 1.0 (US) / Firmware: 1.8.11 - Hardware: 1.0 (US) / Firmware: 1.8.6 diff --git a/tests/device_fixtures.py b/tests/device_fixtures.py index 5d827128..992cbfd9 100644 --- a/tests/device_fixtures.py +++ b/tests/device_fixtures.py @@ -49,7 +49,7 @@ BULBS_IOT_VARIABLE_TEMP = { "KL430", } BULBS_IOT_COLOR = {"LB130", "KL125", "KL130", "KL135", *BULBS_IOT_LIGHT_STRIP} -BULBS_IOT_DIMMABLE = {"KL50", "KL60", "LB100", "LB110", "KL110"} +BULBS_IOT_DIMMABLE = {"KL50", "KL60", "LB100", "LB110", "KL110", "KL110B"} BULBS_IOT = ( BULBS_IOT_VARIABLE_TEMP.union(BULBS_IOT_COLOR) .union(BULBS_IOT_DIMMABLE) diff --git a/tests/fixtures/iot/KL110B(UN)_1.0_1.8.11.json b/tests/fixtures/iot/KL110B(UN)_1.0_1.8.11.json new file mode 100644 index 00000000..75427f79 --- /dev/null +++ b/tests/fixtures/iot/KL110B(UN)_1.0_1.8.11.json @@ -0,0 +1,288 @@ +{ + "smartlife.iot.common.cloud": { + "get_info": { + "binded": 1, + "cld_connection": 1, + "err_code": 0, + "fwDlPage": "", + "fwNotifyType": 0, + "illegalType": 0, + "server": "n-devs.tplinkcloud.com", + "stopConnect": 0, + "tcspInfo": "", + "tcspStatus": 1, + "username": "user@example.com" + }, + "get_intl_fw_list": { + "err_code": 0, + "fw_list": [] + } + }, + "smartlife.iot.common.emeter": { + "get_realtime": { + "err_code": 0, + "power_mw": 0 + } + }, + "smartlife.iot.common.schedule": { + "get_next_action": { + "action": 2, + "err_code": 0, + "id": "CAD48466AAF086367653A7AAB3A69ED4", + "light": { + "brightness": 15, + "color_temp": 0, + "hue": 0, + "on_off": 1, + "saturation": 0 + }, + "schd_time": 69000, + "type": 1 + }, + "get_rules": { + "enable": 1, + "err_code": 0, + "rule_list": [ + { + "eact": -1, + "emin": 0, + "enable": 1, + "eoffset": 0, + "etime_opt": -1, + "id": "CAD48466AAF086367653A7AAB3A69ED4", + "name": "Schedule Rule", + "repeat": 1, + "s_light": { + "brightness": 15, + "color_temp": 0, + "hue": 0, + "mode": "customize_preset", + "on_off": 1, + "saturation": 0, + "transition_period": 5000 + }, + "sact": 2, + "smin": 1150, + "soffset": -59, + "stime_opt": 2, + "wday": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "eact": -1, + "emin": 0, + "enable": 1, + "eoffset": 0, + "etime_opt": -1, + "id": "FBF05A0A587AC23BCADE2F5EEC72DE56", + "name": "Schedule Rule", + "repeat": 1, + "s_light": { + "brightness": 0, + "color_temp": 0, + "hue": 0, + "mode": "last_status", + "on_off": 0, + "saturation": 0, + "transition_period": 0 + }, + "sact": 2, + "smin": 0, + "soffset": 0, + "stime_opt": 0, + "wday": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "eact": -1, + "emin": 0, + "enable": 1, + "eoffset": 0, + "etime_opt": -1, + "id": "8E3EA003DF7BC480EA09C332CD2DA06A", + "name": "Schedule Rule", + "repeat": 1, + "s_light": { + "brightness": 0, + "color_temp": 0, + "hue": 0, + "mode": "last_status", + "on_off": 0, + "saturation": 0, + "transition_period": 30000 + }, + "sact": 2, + "smin": 415, + "soffset": 0, + "stime_opt": 1, + "wday": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + }, + { + "eact": -1, + "emin": 0, + "enable": 1, + "eoffset": 0, + "etime_opt": -1, + "id": "9FBD711FDCC696E33B9CF3E523559C64", + "name": "name", + "repeat": 1, + "s_light": { + "brightness": 1, + "color_temp": 0, + "hue": 0, + "mode": "customize_preset", + "on_off": 1, + "saturation": 0, + "transition_period": 300000 + }, + "sact": 2, + "smin": 1320, + "soffset": 0, + "stime_opt": 0, + "wday": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ] + } + ], + "version": 2 + } + }, + "smartlife.iot.smartbulb.lightingservice": { + "get_default_behavior": { + "err_code": 0, + "hard_on": { + "brightness": 100, + "color_temp": 2700, + "hue": 0, + "index": 0, + "mode": "customize_preset", + "saturation": 0 + }, + "soft_on": { + "brightness": 100, + "color_temp": 2700, + "hue": 0, + "index": 0, + "mode": "customize_preset", + "saturation": 0 + } + }, + "get_light_details": { + "color_rendering_index": 80, + "err_code": 0, + "incandescent_equivalent": 60, + "lamp_beam_angle": 270, + "max_lumens": 800, + "max_voltage": 120, + "min_voltage": 110, + "wattage": 10 + }, + "get_light_state": { + "dft_on_state": { + "brightness": 100, + "color_temp": 2700, + "hue": 0, + "mode": "normal", + "saturation": 0 + }, + "err_code": 0, + "on_off": 0 + } + }, + "system": { + "get_sysinfo": { + "active_mode": "schedule", + "alias": "#MASKED_NAME#", + "ctrl_protocols": { + "name": "Linkie", + "version": "1.0" + }, + "description": "Smart Wi-Fi LED Bulb with Dimmable Light", + "dev_state": "normal", + "deviceId": "0000000000000000000000000000000000000000", + "disco_ver": "1.0", + "err_code": 0, + "heapsize": 291800, + "hwId": "00000000000000000000000000000000", + "hw_ver": "1.0", + "is_color": 0, + "is_dimmable": 1, + "is_factory": false, + "is_variable_color_temp": 0, + "light_state": { + "dft_on_state": { + "brightness": 100, + "color_temp": 2700, + "hue": 0, + "mode": "normal", + "saturation": 0 + }, + "on_off": 0 + }, + "mic_mac": "D84732000000", + "mic_type": "IOT.SMARTBULB", + "model": "KL110B(UN)", + "oemId": "00000000000000000000000000000000", + "preferred_state": [ + { + "brightness": 100, + "color_temp": 2700, + "hue": 0, + "index": 0, + "saturation": 0 + }, + { + "brightness": 50, + "color_temp": 2700, + "hue": 0, + "index": 1, + "saturation": 0 + }, + { + "brightness": 15, + "color_temp": 2700, + "hue": 0, + "index": 2, + "saturation": 0 + }, + { + "brightness": 1, + "color_temp": 2700, + "hue": 0, + "index": 3, + "saturation": 0 + } + ], + "rssi": -65, + "sw_ver": "1.8.11 Build 191113 Rel.105336" + } + } +}