TP Link Kasa Devices with new official integration (July 2019): reviews needed

Mine are like that, too. I was having some trouble with new devices still not getting pushed to SmartThings after 24 hours and sent a support request. The response I got back was, in part, “…Your TP-Link devices added (sic) wrongly added in “Place holder”. I request you to remove and re-add your devices using New SmartThings application…”

I was hesitant to, again, remove and re-add since I have 40 TP-Link devices already connected to scenes and automations that were all working just fine. Luckily, a couple days later at 2:06am my new devices got pushed to SmartThings and everything is working fine.

The Smart Home is a fierce and fickle mistress…

1 Like

I have two hubs, one in my vacation home (Cabin) and one in my primary residence (Home). I have TP Link SmartPlugs in both locations. Unfortunately, I can’t get the “official integration” to work properly. I have linked my Kasa account but it pulls ALL my devices from both locations into my “Home” hub, even the ones at my “Cabin”. I delete them daily but they keep coming back. If I integrate to the" Cabin" location, they ALL devices appear there as well (and keep coming back after I delete them).

BTW, this whole issue appeared after I got a few new TP-Link devices for my Cabin over the holiday. Prior I was using Dave’s integration (Thank you SO much Dave!!) only in one location “Home” for over a year without any issues.

I’m currently reinstalling Dave’s device handlers and service managers in both hub locations to see if that would work instead of using the “official integration”. However, I’m now stuck on a token error on the “Home” installation so have not very gotten far.

Oh that would suck! I bet tp-link didn’t think that through. They wouldn’t have expected your situation although they should have. Dave did some excellent work that’s for sure. I couldn’t get energy readings from the official integration so I removed it and used Dave’s but then I bought one of their power boards which wouldn’t work properly with Dave’s handler so I linked up my tp-link account to use that power board and I’ve had doubles of the others now for months. Doesn’t matter how often you delete them they just come right back unless you remove the tp-link I guess. Sorry I can’t really help you but just wanted you to know you are not alone, if that makes you feel any better.

1 Like

RE: token error on dual-site integrations.

Dave here. My best guess is that the error is caused by Kasa using the SmartThings URL as the server for both locations. When you use the cabin, it updates the token in the cabin’s instantiation. When you then try home, the token is incorrect.

Question for experts: Is there a way to share a token between two different location-based instantiation of an application???


Although deprecated, I could update to support this. The latest version does not support the KP303. Update will take a day or so to verify code and clean up documentation. The drivers are already complete, I just need to fix the smart app and instructions.


The dual location issue is a standard problem with almost all third-party integrations, including echo and Ifttt. Smartthings opens the integration at the account level, not the location level, So forever and always it just get completely confusing as to what devices you will see when. It’s been that way for years and it’s super annoying. They keep saying they are going to fix it, but, again, for years.

The official support article for echo says that they are “working on“ a fix but it has literally said that since 2015. :scream:

The only workaround is to give each location its own smartthings account And use separate accounts for the other company as well.

So… Known issue, not specific to TPLink, no workarounds at Present other than creating an account for each hub.


That would be fantastic but I wouldn’t want you to spend your time doing that for nothing. I think you should remove the [Deprecated] from your original project post as that is hardly the case when the official integration is so half-assed it doesn’t even give you energy readings. Let me buy you a beer, donate or something…

Thanks again Dave!


1 Like


I have updated the app, adding the KP303 to the installation capability (assuming that is the “power board”. The app version is 4.0.06. The driver file is not changed (title is “TP-Link Multi-Plug.groovy”). This has been tested on my Hubitat integration via other users. From the TP-Link documentation, I assume that this is NOT energy monitor capable.

If you have ANY problems, contact me through the unofficial integration thread. (I do not want to steal this thread.)

I will keep the unofficial integration marked “deprecated” for several reasons:

  • Encourage people to use the official and report problems to make it better.
  • Uncertainty on integration viability going forward.
  • I have jumped ship to a different hub environment (and continue support here for the users).

In lieu of beer, donate to the charity of your choice or do a kind act for someone who needs it.



Hey Dave,

Yep, KP303 is the one. You are correct that it is not capable of energy monitoring. You are a gentleman and a scholar!

Thank you so much


@Gutheinz thank you for what you did… I was sad to see you deprecate the integration… mostly because it’s superior to the official. There are a few things where it excels by far to answer @JDRoberts’ question …

  1. Support for the Classic App using the new integration is questionable at best. Clicking the settings gear in Classic App gives an error.
  2. Your Device Handlers are neater and provide way more information like power usage over week and over 30 days, etc. I use the HS110 with power monitoring. The current integration doesn’t show any of that data — at least when I tried last. It showed me a power switch and not any power monitoring information like I mentioned above.
  3. It was very straight forward to use this solution due to the ease of installing/uninstalling desired devices and ALL of their capabilities came with the child device handler.

I’m using your 3.x version still for many years with zero issues — may upgrade to 4.x if fate pushes me to it. In fact your work was the only game in town… I need to poll that HS110 every 5 seconds (wrote my own SmartApp) and if any power is used, hit Node-RED — this tells me that the HVAC water pump in my attic just sucked some water out. When I tried to poll more frequently than 5 seconds I froze up SmartThings a few times :slight_smile: but nothing out there would allow me to poll that frequently since the pump is only on for like 7 seconds. Super thankful to you @Gutheinz


How do you use the information on the pump being active?

How much energy does it use on each cycle?

I ask this because the total energy is calculated to .01 KWH;, however it is reported in the driver to .001KWH (watt-hour). So, if you are checking so that later you will check something out, a less frequent polling of energy may give you the result you need. It may take several cycles to detect the change but that may (or may not) be sufficient.

Final note: The device reports down to watt hour. With a minor driver change, I could modify the driver to report to same level.

@Gutheinz it basically reads the power attribute after refresh() function… some of the code is below… LMK if you want to see more like the rest of the SmartApp code or the Node Red json… happy to share. FYI I tried to do this with zwave dual plug Zooz device and it failed miserably while TP-Link worked like a charm after I figured out what’s too frequent for a polling rate. Thanks again!

if (state.lastvalue != String.format('%6.0f', refreshdevice*.currentValue('power')[0]).trim() || now() >= state.nextforcedupdate ) {
        state.lastvalue = String.format('%6.0f', refreshdevice*.currentValue('power')[0]).trim()
        def theAction = new physicalgraph.device.HubAction("""GET /${settings['urlending']}?${settings['formattribute']}=${(String.format('%6.0f', refreshdevice*.currentValue('power')[0]).trim())} HTTP/1.1\r\n Accept: */*\r\nHOST: ${settings['hostport']}\r\n\r\n""", physicalgraph.device.Protocol.LAN, settings['hostport'], [callback: calledBackHandler])
        state.nextforcedupdate = now() + 900000 // force every 15 minutes even to get zero watts

Anyone have news about Tapo TP-Link new devices? They look very good.

1 Like