Skip to content

P110M is incorrectly recognized #119

Description

@fxcoudert

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

  1. 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())
  1. 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.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions