I bought a TP-Link HS110 version 3.0 smart wi-fi plug for 30 EUR to read out power usage of some appliances, which I want to connect to a Raspberry Pi 3B+.

Device setup

Here we connect the HS110 to our existing WiFi network without using the TP-link Kasa app and without it ever connecting to the TP-link cloud server.

  1. Plug into wall socket, the wifi symbol will blink green-amber.
  2. Get python clients https://github.com/softScheck/tplink-smartplug
  3. Connect to HS110 access point TP-LINK_Smart Plug_XXXX.
    1. Get initial information: ./tplink_smartplug.py -t -c info
  4. Disable cloud access:
    1. Set devs.tplinkcloud.com to resolve to (or similar)
    2. Set cloud server to new value: using ./tplink_smartplug.py -t -j '{"cnCloud":{"set_server_url":{"server":"xs4all.nl"}}}'. N.B. err_code:0 means no error
  5. Bind to existing WiFi network: ./tplink_smartplug.py -t -j '{"netif":{"set_stainfo":{"ssid":"WiFi","password":"123","key_type":3}}}'. N.B. This command is not encrypted so it will leak your SSID and network. There is no way around it as the official Kasa app uses the same protocol.

Device read out

Now the device is connected to our WiFi network and we can use it as a measurement device

  1. Find out new IP
    1. On your router, look at connected devices, write down IP
    2. Ping broadcast address to find IP of all connected devices responding to ping: e.g. ping, the TP-link HS110 will respond
  2. Read out device: ./tplink_smartplug.py -t -c energy


Accuracy is comparable to Brennenstuhl PM 231E offline power meter.

15W incandescent bulb

  • Reference measurement: 15.0±0.2W (average-by-eye)
  • TP-Link measurement: 15.03±0.09W (average of 10 measurements)

1300W heating iron

  • Reference measurement: 1340±5W (average-by-eye)
  • TP-link measurement: 1342W±5W (average of 14 measurements)

N.B. the heating iron's load drops 20W over the timeframe of a minute, such that these uncertainties are upper limits.

Power usage

The TP-link HS110 itself uses 4.3±0.2 Watt (as measured by Brennenstuhl PM 231E, which has a reported accuracy of 1% or 0.2W).


The plug starts up in ±8 seconds, and then takes ±3 seconds to join the WiFi network.


  1. Elgato Eve Energy Works with Bluetooth (vs WiFi), compatible with Homekit. Could work on Linux using Homebridge, but this sounded like more trouble than reading out over Wi-Fi/HTTPs
  2. Fibaro Wall Plug Works with Z-wave (vs WiFi), requires additional Z-wave dongle, which I don't have. It's also more expensive than the TP-link. After that it could work on Linux, e.g. via this OpenHab post or this Youtube Tutorial