I’m still experimenting, but away for a couple days so I can’t test some of my thoughts. So far, I have discovered that most of my TP-Link smartplug “outages” are cases where the smartplugs are solidly connected to my IoT network and visible via the Kasa app, just not visible to Sense.
What Have I Discovered So Far
Using the hourly Sense export file as a measure of “reliability” I have discovered that Sense fails to create an hourly entry for a smartplug under the following conditions:
- An actual connectivity issue, where Sense doesn’t seem to see a pre-existing smartplug on the network. In that situation the device appears in the “off” part of the device list with an “n/a” on the control button.
- When the smartplug is turned off via the Kasa/Sense On/Off button. In that case it is in the “off” part of the device list and the control button says “off”
- When the smartplug is using a very small amount of power (less than some critical threshold) and ends up in the “off” part of the list, but still “on” per the control button.
But small fluctuations in power can take that same device into the “on” part of the device list a couple minutes later.
How Does Sense Decide On vs. Off vs Standby ?
The Kasa app and Sense use the same mechanism to obtain realtime power information from the all the smartplugs on the network. They broadcast the following command to all the devices on the local subnet:
{"emeter":{"get_realtime":{}}}
HS110s receiving that message will send a message back to the requesting IP address of the following form (with a little encryption in between)
{"emeter":{"get_realtime":{"current":0.028915,"voltage":120.798141,
"power":0.527563,"total":18.045000,"err_code":0}}}}
HS300s respond with the same data, with current and voltage reversed and in different units
{"emeter":{"get_realtime":{"voltage_mv":121917,"current_ma":177,
"power_mw":16194,"total_wh":90051,"err_code":0}}}}
And the KP115 response is in the same units as the HS300, but with current and voltage reversed. Note that the response below is for a situation where the KP115 is turned off via the Kasa/Sense On/Off switch. So there’s no specific data returned that tells that the smartplug is turned off.
{"emeter":{"get_realtime":{"current_ma":0,"voltage_mv":122525,
"power_mw":0,"total_wh":107,"err_code":0}}}}
Sense explains a part of the categorization On/Off/Standby mechanism here:
https://sense.com/learn/what-is-standby/
What’s not explained is the threshold between Off and Standby. I’m going use a java utility that continuously samples select smartplugs, to see if I can figure out the power/current threshold that triggers Sense to switch between case 3A (Off) and 3B (Standby) above.