From 21c0bee0446bf7ceb903bcb26ed0a9ea055712da Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 31 Jan 2024 06:47:41 -1000 Subject: [PATCH 1/2] Add TP25 fixtures --- README.md | 1 + kasa/tests/conftest.py | 2 +- .../fixtures/smart/TP25(US)_1.0_1.0.2.json | 472 ++++++++++++++++++ 3 files changed, 474 insertions(+), 1 deletion(-) create mode 100644 kasa/tests/fixtures/smart/TP25(US)_1.0_1.0.2.json diff --git a/README.md b/README.md index 8da1fcdf6..f52fcd790 100644 --- a/README.md +++ b/README.md @@ -306,6 +306,7 @@ At the moment, the following devices have been confirmed to work: #### Power strips * Tapo P300 +* Tapo TP25 ### Newer Kasa branded devices diff --git a/kasa/tests/conftest.py b/kasa/tests/conftest.py index 351be5451..c0ac76605 100644 --- a/kasa/tests/conftest.py +++ b/kasa/tests/conftest.py @@ -111,7 +111,7 @@ *PLUGS_SMART, } STRIPS_IOT = {"HS107", "HS300", "KP303", "KP200", "KP400", "EP40"} -STRIPS_SMART = {"P300"} +STRIPS_SMART = {"P300", "TP25"} STRIPS = {*STRIPS_IOT, *STRIPS_SMART} DIMMERS_IOT = {"ES20M", "HS220", "KS220M", "KS230", "KP405"} diff --git a/kasa/tests/fixtures/smart/TP25(US)_1.0_1.0.2.json b/kasa/tests/fixtures/smart/TP25(US)_1.0_1.0.2.json new file mode 100644 index 000000000..a211ad2b9 --- /dev/null +++ b/kasa/tests/fixtures/smart/TP25(US)_1.0_1.0.2.json @@ -0,0 +1,472 @@ +{ + "component_nego": { + "component_list": [ + { + "id": "device", + "ver_code": 2 + }, + { + "id": "firmware", + "ver_code": 2 + }, + { + "id": "quick_setup", + "ver_code": 3 + }, + { + "id": "time", + "ver_code": 1 + }, + { + "id": "wireless", + "ver_code": 1 + }, + { + "id": "schedule", + "ver_code": 2 + }, + { + "id": "countdown", + "ver_code": 2 + }, + { + "id": "antitheft", + "ver_code": 1 + }, + { + "id": "account", + "ver_code": 1 + }, + { + "id": "synchronize", + "ver_code": 1 + }, + { + "id": "sunrise_sunset", + "ver_code": 1 + }, + { + "id": "led", + "ver_code": 1 + }, + { + "id": "cloud_connect", + "ver_code": 1 + }, + { + "id": "iot_cloud", + "ver_code": 1 + }, + { + "id": "device_local_time", + "ver_code": 1 + }, + { + "id": "default_states", + "ver_code": 1 + }, + { + "id": "control_child", + "ver_code": 2 + }, + { + "id": "child_device", + "ver_code": 2 + }, + { + "id": "matter", + "ver_code": 1 + }, + { + "id": "overheat_protection", + "ver_code": 1 + } + ] + }, + "discovery_result": { + "device_id": "00000000000000000000000000000000", + "device_model": "TP25(US)", + "device_type": "SMART.TAPOPLUG", + "factory_default": false, + "ip": "127.0.0.123", + "is_support_iot_cloud": true, + "mac": "3C-52-A1-00-00-00", + "mgt_encrypt_schm": { + "encrypt_type": "AES", + "http_port": 80, + "is_support_https": false, + "lv": 2 + }, + "obd_src": "tplink", + "owner": "00000000000000000000000000000000" + }, + "get_auto_update_info": { + "enable": false, + "random_range": 120, + "time": 180 + }, + "get_child_device_component_list": { + "child_component_list": [ + { + "component_list": [ + { + "id": "device", + "ver_code": 2 + }, + { + "id": "quick_setup", + "ver_code": 3 + }, + { + "id": "time", + "ver_code": 1 + }, + { + "id": "device_local_time", + "ver_code": 1 + }, + { + "id": "schedule", + "ver_code": 2 + }, + { + "id": "countdown", + "ver_code": 2 + }, + { + "id": "antitheft", + "ver_code": 1 + }, + { + "id": "account", + "ver_code": 1 + }, + { + "id": "synchronize", + "ver_code": 1 + }, + { + "id": "sunrise_sunset", + "ver_code": 1 + }, + { + "id": "cloud_connect", + "ver_code": 1 + }, + { + "id": "iot_cloud", + "ver_code": 1 + }, + { + "id": "firmware", + "ver_code": 2 + }, + { + "id": "default_states", + "ver_code": 1 + }, + { + "id": "overheat_protection", + "ver_code": 1 + } + ], + "device_id": "000000000000000000000000000000000000000000" + }, + { + "component_list": [ + { + "id": "device", + "ver_code": 2 + }, + { + "id": "quick_setup", + "ver_code": 3 + }, + { + "id": "time", + "ver_code": 1 + }, + { + "id": "device_local_time", + "ver_code": 1 + }, + { + "id": "schedule", + "ver_code": 2 + }, + { + "id": "countdown", + "ver_code": 2 + }, + { + "id": "antitheft", + "ver_code": 1 + }, + { + "id": "account", + "ver_code": 1 + }, + { + "id": "synchronize", + "ver_code": 1 + }, + { + "id": "sunrise_sunset", + "ver_code": 1 + }, + { + "id": "cloud_connect", + "ver_code": 1 + }, + { + "id": "iot_cloud", + "ver_code": 1 + }, + { + "id": "firmware", + "ver_code": 2 + }, + { + "id": "default_states", + "ver_code": 1 + }, + { + "id": "overheat_protection", + "ver_code": 1 + } + ], + "device_id": "000000000000000000000000000000000000000000" + } + ], + "start_index": 0, + "sum": 2 + }, + "get_child_device_list": { + "child_device_list": [ + { + "avatar": "plug", + "bind_count": 1, + "category": "plug.powerstrip.sub-plug", + "default_states": { + "type": "last_states" + }, + "device_id": "000000000000000000000000000000000000000000", + "device_on": false, + "fw_id": "00000000000000000000000000000000", + "fw_ver": "1.0.2 Build 230206 Rel.095245", + "has_set_location_info": true, + "hw_id": "00000000000000000000000000000000", + "hw_ver": "1.0", + "latitude": 0, + "longitude": 0, + "mac": "3C52A1000000", + "model": "TP25", + "nickname": "I01BU0tFRF9OQU1FIw==", + "oem_id": "00000000000000000000000000000000", + "on_time": 0, + "original_device_id": "80221F3C50CFB140962DBF36F8C9DACD21BC6DC1", + "overheat_status": "normal", + "position": 1, + "region": "America/Chicago", + "slot_number": 2, + "status_follow_edge": true, + "type": "SMART.TAPOPLUG" + }, + { + "avatar": "plug", + "bind_count": 1, + "category": "plug.powerstrip.sub-plug", + "default_states": { + "type": "last_states" + }, + "device_id": "000000000000000000000000000000000000000000", + "device_on": true, + "fw_id": "00000000000000000000000000000000", + "fw_ver": "1.0.2 Build 230206 Rel.095245", + "has_set_location_info": true, + "hw_id": "00000000000000000000000000000000", + "hw_ver": "1.0", + "latitude": 0, + "longitude": 0, + "mac": "3C52A1000000", + "model": "TP25", + "nickname": "I01BU0tFRF9OQU1FIw==", + "oem_id": "00000000000000000000000000000000", + "on_time": 136, + "original_device_id": "80221F3C50CFB140962DBF36F8C9DACD21BC6DC1", + "overheat_status": "normal", + "position": 2, + "region": "America/Chicago", + "slot_number": 2, + "status_follow_edge": true, + "type": "SMART.TAPOPLUG" + } + ], + "start_index": 0, + "sum": 2 + }, + "get_connect_cloud_state": { + "status": 0 + }, + "get_device_info": { + "avatar": "", + "device_id": "0000000000000000000000000000000000000000", + "fw_id": "00000000000000000000000000000000", + "fw_ver": "1.0.2 Build 230206 Rel.095245", + "has_set_location_info": true, + "hw_id": "00000000000000000000000000000000", + "hw_ver": "1.0", + "ip": "127.0.0.123", + "lang": "en_US", + "latitude": 0, + "longitude": 0, + "mac": "3C-52-A1-00-00-00", + "model": "TP25", + "nickname": "I01BU0tFRF9OQU1FIw==", + "oem_id": "00000000000000000000000000000000", + "region": "America/Chicago", + "rssi": -38, + "signal_level": 3, + "specs": "", + "ssid": "I01BU0tFRF9TU0lEIw==", + "time_diff": -360, + "type": "SMART.TAPOPLUG" + }, + "get_device_time": { + "region": "America/Chicago", + "time_diff": -360, + "timestamp": 1706719580 + }, + "get_device_usage": { + "time_usage": { + "past30": 1, + "past7": 1, + "today": 1 + } + }, + "get_fw_download_state": { + "auto_upgrade": false, + "download_progress": 0, + "reboot_time": 5, + "status": 0, + "upgrade_time": 5 + }, + "get_latest_fw": { + "fw_size": 786432, + "fw_ver": "1.1.0 Build 231019 Rel.173739", + "hw_id": "00000000000000000000000000000000", + "need_to_upgrade": true, + "oem_id": "00000000000000000000000000000000", + "release_date": "2023-11-24", + "release_note": "Modifications and Bug Fixes:\n1. Enhanced local communication security.\n2. Improved Matter setup process.\n3. Optimized stability and performance.\n4. Fixed some minor bugs.", + "type": 2 + }, + "get_led_info": { + "led_rule": "always", + "led_status": true, + "night_mode": { + "end_time": 433, + "night_mode_type": "sunrise_sunset", + "start_time": 1079, + "sunrise_offset": 0, + "sunset_offset": 0 + } + }, + "get_wireless_scan_info": { + "ap_list": [ + { + "bssid": "000000000000", + "channel": 0, + "cipher_type": 2, + "key_type": "wpa_psk", + "signal_level": 2, + "ssid": "I01BU0tFRF9TU0lEIw==" + }, + { + "bssid": "000000000000", + "channel": 0, + "cipher_type": 2, + "key_type": "wpa_psk", + "signal_level": 1, + "ssid": "I01BU0tFRF9TU0lEIw==" + }, + { + "bssid": "000000000000", + "channel": 0, + "cipher_type": 2, + "key_type": "wpa_psk", + "signal_level": 2, + "ssid": "I01BU0tFRF9TU0lEIw==" + }, + { + "bssid": "000000000000", + "channel": 0, + "cipher_type": 2, + "key_type": "wpa_psk", + "signal_level": 2, + "ssid": "I01BU0tFRF9TU0lEIw==" + }, + { + "bssid": "000000000000", + "channel": 0, + "cipher_type": 2, + "key_type": "wpa_psk", + "signal_level": 1, + "ssid": "I01BU0tFRF9TU0lEIw==" + }, + { + "bssid": "000000000000", + "channel": 0, + "cipher_type": 2, + "key_type": "wpa_psk", + "signal_level": 3, + "ssid": "I01BU0tFRF9TU0lEIw==" + } + ], + "wep_supported": false + }, + "qs_component_nego": { + "component_list": [ + { + "id": "quick_setup", + "ver_code": 3 + }, + { + "id": "sunrise_sunset", + "ver_code": 1 + }, + { + "id": "ble_whole_setup", + "ver_code": 1 + }, + { + "id": "matter", + "ver_code": 1 + }, + { + "id": "iot_cloud", + "ver_code": 1 + }, + { + "id": "inherit", + "ver_code": 1 + }, + { + "id": "firmware", + "ver_code": 2 + }, + { + "id": "control_child", + "ver_code": 2 + }, + { + "id": "child_device", + "ver_code": 2 + } + ], + "extra_info": { + "device_model": "TP25", + "device_type": "SMART.TAPOPLUG" + } + } +} From 18cbcc2a937d63c3d456c654a703ae7315314a25 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 1 Feb 2024 12:32:34 -0600 Subject: [PATCH 2/2] redump fixture --- .../fixtures/smart/TP25(US)_1.0_1.0.2.json | 71 +++---------------- 1 file changed, 11 insertions(+), 60 deletions(-) diff --git a/kasa/tests/fixtures/smart/TP25(US)_1.0_1.0.2.json b/kasa/tests/fixtures/smart/TP25(US)_1.0_1.0.2.json index a211ad2b9..1e3321f8f 100644 --- a/kasa/tests/fixtures/smart/TP25(US)_1.0_1.0.2.json +++ b/kasa/tests/fixtures/smart/TP25(US)_1.0_1.0.2.json @@ -235,7 +235,7 @@ "ver_code": 1 } ], - "device_id": "000000000000000000000000000000000000000000" + "device_id": "000000000000000000000000000000000000000001" } ], "start_index": 0, @@ -264,7 +264,7 @@ "nickname": "I01BU0tFRF9OQU1FIw==", "oem_id": "00000000000000000000000000000000", "on_time": 0, - "original_device_id": "80221F3C50CFB140962DBF36F8C9DACD21BC6DC1", + "original_device_id": "0000000000000000000000000000000000000000", "overheat_status": "normal", "position": 1, "region": "America/Chicago", @@ -279,7 +279,7 @@ "default_states": { "type": "last_states" }, - "device_id": "000000000000000000000000000000000000000000", + "device_id": "000000000000000000000000000000000000000001", "device_on": true, "fw_id": "00000000000000000000000000000000", "fw_ver": "1.0.2 Build 230206 Rel.095245", @@ -292,8 +292,8 @@ "model": "TP25", "nickname": "I01BU0tFRF9OQU1FIw==", "oem_id": "00000000000000000000000000000000", - "on_time": 136, - "original_device_id": "80221F3C50CFB140962DBF36F8C9DACD21BC6DC1", + "on_time": 63159, + "original_device_id": "0000000000000000000000000000000000000000", "overheat_status": "normal", "position": 2, "region": "America/Chicago", @@ -325,7 +325,7 @@ "nickname": "I01BU0tFRF9OQU1FIw==", "oem_id": "00000000000000000000000000000000", "region": "America/Chicago", - "rssi": -38, + "rssi": -39, "signal_level": 3, "specs": "", "ssid": "I01BU0tFRF9TU0lEIw==", @@ -335,13 +335,13 @@ "get_device_time": { "region": "America/Chicago", "time_diff": -360, - "timestamp": 1706719580 + "timestamp": 1706812337 }, "get_device_usage": { "time_usage": { "past30": 1, "past7": 1, - "today": 1 + "today": 0 } }, "get_fw_download_state": { @@ -365,64 +365,15 @@ "led_rule": "always", "led_status": true, "night_mode": { - "end_time": 433, + "end_time": 432, "night_mode_type": "sunrise_sunset", - "start_time": 1079, + "start_time": 1080, "sunrise_offset": 0, "sunset_offset": 0 } }, "get_wireless_scan_info": { - "ap_list": [ - { - "bssid": "000000000000", - "channel": 0, - "cipher_type": 2, - "key_type": "wpa_psk", - "signal_level": 2, - "ssid": "I01BU0tFRF9TU0lEIw==" - }, - { - "bssid": "000000000000", - "channel": 0, - "cipher_type": 2, - "key_type": "wpa_psk", - "signal_level": 1, - "ssid": "I01BU0tFRF9TU0lEIw==" - }, - { - "bssid": "000000000000", - "channel": 0, - "cipher_type": 2, - "key_type": "wpa_psk", - "signal_level": 2, - "ssid": "I01BU0tFRF9TU0lEIw==" - }, - { - "bssid": "000000000000", - "channel": 0, - "cipher_type": 2, - "key_type": "wpa_psk", - "signal_level": 2, - "ssid": "I01BU0tFRF9TU0lEIw==" - }, - { - "bssid": "000000000000", - "channel": 0, - "cipher_type": 2, - "key_type": "wpa_psk", - "signal_level": 1, - "ssid": "I01BU0tFRF9TU0lEIw==" - }, - { - "bssid": "000000000000", - "channel": 0, - "cipher_type": 2, - "key_type": "wpa_psk", - "signal_level": 3, - "ssid": "I01BU0tFRF9TU0lEIw==" - } - ], + "ap_list": [], "wep_supported": false }, "qs_component_nego": {