Description
I have a P110M (smart plug with meter) and it is incorrectly recognized by the code. I have output the basic info below, but I can debug more if needed, let me know what would help.
Device info
- Device model: P110M
- Device firmware version (if known):
Environment
- Python version: 3.14.7
- tplink-cloud-api version: 5.2.1
- OS: macOS 26.6.2
Steps to reproduce
- The code:
#!/usr/bin/env python3
import asyncio
import json
from tplinkcloud import TPLinkDeviceManager
username = 'xxxxxxx'
password = 'xxxxxxx'
device_manager = TPLinkDeviceManager(username, password)
async def test():
devices = await device_manager.get_devices()
print('Devices found:', len(devices))
for d in devices:
print(f'[{d.cloud_type}] {d.model_type.name} device called {d.get_alias()}')
print(f'Model: {d.device_info.device_model}')
print("SYS INFO")
print(json.dumps(d.device_info, indent=2, default=lambda x: vars(x)
if hasattr(x, "__dict__") else x.name if hasattr(x, "name") else None))
print(json.dumps(await d.get_sys_info(), indent=2, default=lambda x: vars(x)
if hasattr(x, "__dict__") else x.name if hasattr(x, "name") else None))
asyncio.run(test())
- The output:
Devices found: 1
[kasa] UNKNOWN device called VGFwbyBQMTEwTQ==
Model: P110M(FR)
SYS INFO
{
"device_type": "SMART.TAPOPLUG",
"role": 0,
"fw_ver": "1.4.3 Build 260526 Rel.224153",
"app_server_url": "https://n-euw1-wap.tplinkcloud.com",
"device_region": "eu-west-1",
"device_id": "802225CFFDD7D9651C5BBD1BF2605804257965A2",
"device_name": "P110M",
"device_hw_ver": "1.0",
"alias": "VGFwbyBQMTEwTQ==",
"device_mac": "186945A10491",
"oem_id": "F031188A0BC3414DF6BBDE3D90B6C91C",
"device_model": "P110M(FR)",
"hw_id": "04E2D29EB34984CEFD2AA186FC9CE9D8",
"fw_id": "00000000000000000000000000000000",
"is_same_region": true,
"status": 0,
"cloud_type": "kasa"
}
null
Expected behavior
The Tapo P110M should be recognized for what it is.
Actual behavior
"device_type": "SMART.TAPOPLUG" is correct but I believe "cloud_type": "kasa" is wrong. Also, because get_sys_info() returns nothing, one cannot turn on/off the plug.
Code snippet
#!/usr/bin/env python3
import asyncio
import json
from tplinkcloud import TPLinkDeviceManager
username = 'xxxxxxx'
password = 'xxxxxxx'
device_manager = TPLinkDeviceManager(username, password)
async def test():
devices = await device_manager.get_devices()
print('Devices found:', len(devices))
for d in devices:
print(f'[{d.cloud_type}] {d.model_type.name} device called {d.get_alias()}')
print(f'Model: {d.device_info.device_model}')
print("SYS INFO")
print(json.dumps(d.device_info, indent=2, default=lambda x: vars(x)
if hasattr(x, "__dict__") else x.name if hasattr(x, "name") else None))
print(json.dumps(await d.get_sys_info(), indent=2, default=lambda x: vars(x)
if hasattr(x, "__dict__") else x.name if hasattr(x, "name") else None))
asyncio.run(test())
Error output
See above for the incorrect output.
Additional context
I'm willing to help debug, as I have access to the hardware.
Description
I have a P110M (smart plug with meter) and it is incorrectly recognized by the code. I have output the basic info below, but I can debug more if needed, let me know what would help.
Device info
Environment
Steps to reproduce
Expected behavior
The Tapo P110M should be recognized for what it is.
Actual behavior
"device_type": "SMART.TAPOPLUG"is correct but I believe"cloud_type": "kasa"is wrong. Also, becauseget_sys_info()returns nothing, one cannot turn on/off the plug.Code snippet
Error output
See above for the incorrect output.
Additional context
I'm willing to help debug, as I have access to the hardware.