[RELEASE] TP-LINK TAPO Plug, Switch, Bulb, Hub and Robovac Integration

You fumbled onto the correct step; however, without more information, I can not help.

  1. Was the H110 Hub installed???

  2. I need logs. Turn on debug logging and run scan for devices. Give me the logs in text format (something readable by a 77 year old).

This assume indicates you did not go to the help and read the installation instructions (a common issue). Help is the ? at the top-right of the hubitat application page.

Awaiting something I can actually investigate. Big concern is that the H110 is a new device with little information available (anywhere) to reverse-engineer. It is also matter certified and a matter bridge for the Hub child devices. But they do not have the button code done yet for matter.

Thank you for your response.

The H110 did install. Here’s a copy of the logs from my initial attempts to install the Hub and the child devices. My first attempt I had not downloaded the Button drivers.

I’ll attempt to follow up with a scan for devices as advised.

Regards

**
dev:107
**2026-06-22 5:30:48.667 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:3, action:attemptLogin]

**dev:107**2026-06-22 5:30:47.541 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:2]

**dev:107**2026-06-22 5:30:46.465 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:1]

**dev:107**2026-06-22 5:00:48.645 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:3, action:attemptLogin]

**dev:107**2026-06-22 5:00:47.539 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:2]

**dev:107**2026-06-22 5:00:46.429 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:1]

**dev:107**2026-06-22 4:24:30.605 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-22 4:21:47.024 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-22 3:58:26.488 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-22 3:45:33.551 pm

info

Tapo_IR Hub-2.4.2a: [method:configure2, dni:BC071D80456D, hubDni:BC071D80456D, status:device/ip found]

**dev:107**2026-06-22 3:45:33.549 pm

info

Tapo_IR Hub-2.4.2a: [method:configure3, updateDeviceData:[updateDeviceData:updating with app data], deviceHandshake:[method:deviceHandshake, protocol:KLAP], handshakeInterval:3 Hours]

**dev:107**2026-06-22 3:45:33.449 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[deviceType:SMART.TAPOHUB, ledVer:1, protocol:KLAP, baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, model:H110(US), devIp:10.0.1.138, type:Hub]]

**dev:107**2026-06-22 3:45:33.273 pm

info

Tapo_IR Hub-2.4.2a: [method:configure, devIp:10.0.1.138]

**dev:107**2026-06-22 3:30:01.034 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-22 3:13:02.226 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-22 3:12:16.438 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-22 3:09:42.538 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-22 3:00:48.693 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:3, action:attemptLogin]

**dev:107**2026-06-22 3:00:47.552 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:2]

**dev:107**2026-06-22 3:00:46.423 pm

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:1]

**dev:107**2026-06-22 2:30:00.062 pm

info

Tapo_IR Hub-2.4.2a: [alias:Denon AVC-A11XV, childDni:A9F2030B0001-3, label:Denon AVC-A11XV, name:AV, type:Child Undefined, deviceId:802D048F3C316184B6A94C24391BD7A323D9A9F2030B0001, category:ir.remote, status:notInstalled, error:Currently Unsupported]

**dev:107**2026-06-22 2:30:00.058 pm

warn

Tapo_IR Hub-2.4.2a:

**dev:107**2026-06-22 2:30:00.055 pm

warn

Tapo_IR Hub-2.4.2a: [alias:Gate Tapo S200B, childDni:78205161952D-2, label:Gate Tapo S200B, name:S200B, type:Hub Button, deviceId:802EE1084890B4FA5F7AC41191E636A3247B7331, category:subg.trigger.button, status:FAILED, error:com.hubitat.app.exception.UnknownDeviceTypeException: Device type 'TpLink Hub Button' in namespace 'davegut' not found, driverNotInstalled:TpLink Hub Button]

**dev:107**2026-06-22 2:30:00.049 pm

warn

Tapo_IR Hub-2.4.2a:

**dev:107**2026-06-22 2:30:00.043 pm

warn

Tapo_IR Hub-2.4.2a: [alias:Laundry Tapo S200B, childDni:782051619770-1, label:Laundry Tapo S200B, name:S200B, type:Hub Button, deviceId:802E43C78B25D507A340B316849E8F57247B1812, category:subg.trigger.button, status:FAILED, error:com.hubitat.app.exception.UnknownDeviceTypeException: Device type 'TpLink Hub Button' in namespace 'davegut' not found, driverNotInstalled:TpLink Hub Button]

**dev:107**2026-06-22 2:29:59.912 pm

info

Tapo_IR Hub-2.4.2a: [method:installChildren, currentChildren:[]]

**dev:107**2026-06-22 2:29:59.414 pm

info

Tapo_IR Hub-2.4.2a: [method:updated, installChild:true, commonUpdated:[commsError:cleared, handshakeInterval:3 Hours, pollInterval:30 min, logging:[infoLog:true, logEnable:false], updateDevSettings:Updated]]

**dev:107**2026-06-22 2:29:34.290 pm

info

Tapo_IR Hub-2.4.2a: [method:configure2, dni:BC071D80456D, hubDni:BC071D80456D, status:device/ip found]

**dev:107**2026-06-22 2:29:34.288 pm

info

Tapo_IR Hub-2.4.2a: [method:configure3, updateDeviceData:[updateDeviceData:updating with app data], deviceHandshake:[method:deviceHandshake, protocol:KLAP], handshakeInterval:3 Hours]

**dev:107**2026-06-22 2:29:34.107 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[deviceType:SMART.TAPOHUB, ledVer:1, protocol:KLAP, baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, model:H110(US), devIp:10.0.1.138, type:Hub], updateVersion:2.4.2a]

**dev:107**2026-06-22 2:29:33.748 pm

info

Tapo_IR Hub-2.4.2a: [method:installed, commonInstalled:[method:commonInstalled, configure:null]]

**dev:107**2026-06-22 2:29:33.744 pm

info

Tapo_IR Hub-2.4.2a: [method:configure, devIp:10.0.1.138]

SourceShow in RoomsShow in Devices

Here are the log entries following a scan for devices from this morning with debug logging turned on

**
dev:107
**2026-06-23 1:29:31.341 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-23 1:28:56.919 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

**dev:107**2026-06-23 1:24:35.399 pm

info

Tapo_IR Hub-2.4.2a: [method:updateChild, devData:[devIp:10.0.1.138, deviceType:SMART.TAPOHUB, protocol:KLAP, model:H110(US), baseUrl:http://10.0.1.138:80/app, alias:Tapo_IR Hub, type:Hub, ledVer:1]]

Just made some progress. Discovered “install new child devices” switch in hub preferences. Successfully installed S200B child devices. Now trying to figure out if it is possible to use HomeKit bridge to export them to Apple home.

Relevant log entrys

**
dev:107
**2026-06-23 1:39:48.177 pm

info

Tapo_IR Hub-2.4.2a: [alias:Denon AVC-A11XV, childDni:A9F2030B0001-3, label:Denon AVC-A11XV, name:AV, type:Child Undefined, deviceId:802D048F3C316184B6A94C24391BD7A323D9A9F2030B0001, category:ir.remote, status:notInstalled, error:Currently Unsupported]

**dev:107**2026-06-23 1:39:48.173 pm

info

Tapo_IR Hub-2.4.2a: [alias:Gate Tapo S200B, childDni:78205161952D-2, label:Gate Tapo S200B, name:S200B, type:Hub Button, deviceId:802EE1084890B4FA5F7AC41191E636A3247B7331, category:subg.trigger.button, status:Installed]

**dev:107**2026-06-23 1:39:48.062 pm

info

Tapo_IR Hub-2.4.2a: [alias:Laundry Tapo S200B, childDni:782051619770-1, label:Laundry Tapo S200B, name:S200B, type:Hub Button, deviceId:802E43C78B25D507A340B316849E8F57247B1812, category:subg.trigger.button, status:Installed]

**dev:107**2026-06-23 1:39:47.334 pm

info

Tapo_IR Hub-2.4.2a: [method:installChildren, currentChildren:[]]

**dev:107**2026-06-23 1:39:46.899 pm

info

Tapo_IR Hub-2.4.2a: [method:updated, installChild:true, commonUpdated:[commsError:cleared, handshakeInterval:3 Hours, pollInterval:30 min, logging:[infoLog:true, logEnable:false], updateDevSettings:Updated]]

So, your status is Hub and button are currently installed.

The ir.remote is new and I will look soon for a reverse engineering to extend this to this code. I am currently on another project - but once that is done….

While the hub and buttons have been installed, they are not functional and there are regular log messages re CommsErrors. While Habitat is recognising the S200B as buttons, it does not list them when trying to create automations.
Here is a couple of hours of error messages.

**dev:107**2026-06-25 9:30:44.644 am

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:3, action:attemptLogin]

**dev:107**2026-06-25 9:30:43.476 am

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:2]

**dev:107**2026-06-25 9:30:42.410 am

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:1]

**dev:107**2026-06-25 8:30:44.694 am

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:3, action:attemptLogin]

**dev:107**2026-06-25 8:30:43.533 am

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:2]

**dev:107**2026-06-25 8:30:42.544 am

info

Tapo_IR Hub-2.4.2a: [method:handleCommsError, status:403, msg:Forbidden, count:1]

OK, I duplicated. Likely one of two causes:

a. You have not turned on in the Tapo phone app “Third-Party Services → Third-Party Compatibility”. If off, you will be denied.

b. You may have two-factor authentication enabled.

Both of these call problems. Item a specifically causes the 403 error.

Thanks. Third party compatibility was already enabled and two factor off, so still unable to explain the issue.

I’ve also tried toggling Third party compatibility off/on, rebooting the Tapo ir hub and resetting one of the S200B. Still no joy. Giving up for tonight.

I have just ordered one from amazon. Delivered tomorrow (it is 1:30 PM here). Will do step-by-step and tell you what I see re installation. Everything I can garner says it is a expanded H100 hub (with the IR remote functions added).

Dave

I just installed successfully - no errors in the installation. Logs at bottom. The Button installed automatically also. Although my test IR device was installed in the Tapo phone app, it would not install here since the driver does not exist. I did find an attribute error in the code and fixed the code.

DEVICE Info:

  • H110: HW Version 1.0, Firmware Version 1.4.4.
  • S200B: HW: 1.0, FW: 1.12.0

HTTP 403 error is forbidden. This is caused by the Hub → device communications. The error is for the Tapo Hub, not the button.

Below is MS CoPilot AI search:

Most likely causes of HTTP 403 from a Tapo device:

  1. Third‑Party Compatibility / Third‑Party Control is disabled
    After some Tapo firmware updates, local API access may be blocked unless this is enabled in the Tapo app. Home Assistant users report fixing 403/auth failures by enabling it. [community....sistant.io]

  2. Firmware changed or restricted the local API
    Tapo P110 firmware 1.4.x has been reported to cause 403 Forbidden during local API handshake even when the device is reachable on the LAN. [community....p-link.com]

  3. Authentication/token mismatch
    The device may reject the handshake if your integration/library is using old credentials, stale tokens, or an unsupported auth flow.

  4. Integration/library not updated for the device firmware
    If you’re using Home Assistant, python-kasa, PyP110, or another local API library, it may need an update to match newer Tapo auth behavior.

  5. Network/firewall/port restrictions
    For Tapo cameras especially, required ports and LAN reachability matter; troubleshooting docs mention ports like 80, 443, 554, 8800, and 2020 depending on device function. [deepwiki.com]

  6. Cloud-only control mode
    Reports suggest some devices may accept Tapo app/cloud control while rejecting local LAN API calls until third-party/local access is enabled. [community....sistant.io]

Quick first check: open the Tapo app → device settings → Third Party Control / Compatibility and enable it, then reboot the device and retry.

My add: In the Hubitat Tapo Hub device, run a configure (it will log any errors). This will reconnect to the device with fresh credentials and tokens, etc.

Final note: I tried using Matter. Hubitat is still not ready. They need to update the Generic Matter Hub to have the TP-Link Hub plus add driver links to the S200B (and others) as well as a new generic driver for TV Remote control. (Later this summer, I may even take this on.)

My install logs for the hub

  • info Tapo Integration-2.4.2a: [method:addDevices, selectedAddDevices:[105A95832D68]]
  • info Tapo Integration-2.4.2a: [method:addDevice, dni:105A95832D68, alias:Tapo H110, status:added]
  • info Tapo Integration-2.4.2a: Tapo H110: added to device data

My install logs for the button

Tapo H110-2.4.2a: [alias:TV Remote Control, childDni:6541030B0003-2, label:TV Remote Control, name:TV, type:Child Undefined, deviceId:802D815E9918B130D4B83BB5B25B68C824F26541030B0003, category:ir.remote, status:notInstalled, error:Currently Unsupported]

Tapo H110-2.4.2a: [alias:Tapo S200B, childDni:30DE4BADDBA7-1, label:Tapo S200B, name:S200B, type:Hub Button, deviceId:802E80A3A4CA893837C79D16B801988E20CA4E03, category:subg.trigger.button, status:Installed]

Tapo H110-2.4.2a: [method:installChildren, currentChildren:[]]

Wow. Thanks for putting so much effort into this.

Since I was having no joy with Habitat, I tried setting up in Home Assistant. Once more the Tapo_IR hub and connected devices (IR and the S200B’s) were successfully added, but the hub attached Tapo buttons S200B do not currently support alerting when the button is pressed and the IR is similarly not functional.

I originally got the hub to allow simple on/off automation of an old receiver using a Wiim mini as a source. That still works fine linked by matter to Apple Home. The S200B buttons initially worked with a homebridge plugin, but recently went haywire sending timeout log entries and stopped functioning, prompting my search for alternatives. I am currently using them in automations, where latency is not an issue, by toggling some old unused kasa plugs and using them as triggers.