Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including homebridge-hs100 with all npm packages installed. Try it out:

var homebridgeHs100 = require("homebridge-hs100")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

homebridge-hs100 v3.7.0

TPLink HS100 / HS105 / HS110 / HS200 WiFi Smart Plug plugin for Homebridge


NPM Version js-semistandard-style

TPLink HS100 / HS105 / HS110 / HS200 WiFi Smart Plug plugin for Homebridge.


  1. Node v6.5 or greater is required. Check by running: node --version
  2. Install Homebridge using: npm install -g homebridge or sudo npm install -g --unsafe-perm homebridge (more details)
  3. Install this plugin using: npm install -g homebridge-hs100
  4. Update your configuration file. See the sample below.


  • npm update -g homebridge-hs100


Sample Configuration

"platforms": [{
    "platform": "Hs100",
    "name": "TPLink"
All options with defaults:
"platforms": [{
    "platform": "Hs100",
    "name": "TPLink",
    "deviceTypes": [],         // set to [] or ["plug", "bulb"] to find all TPLink device types or ["plug"] / ["bulb"] for only plugs or bulbs
    "macAddresses": [],        // Whitelist of mac addresses to include. If specified will ignore other devices
    "pollingInterval": 10,     // (seconds) How often to check device status in the background
    "switchModels": ["HS200"], // Matching models are created in homekit as a switch instead of an outlet
    "addCustomCharacteristics": true, // Adds energy monitoring characteristics viewable in Eve app
    "inUseThreshold": 0,       // (Watts) For plugs that support energy monitoring (HS110), min power draw for OutletInUse
    "timeout": 5               // (seconds) communication timeout

I only have HS100, HS105 and HS110 (plugs), so I am unable to test Bulb support directly. I'd gladly accept pull requests to add features or equipment donations (amazon wishlist) so I can do my own development!

I have written a TP-Link device simulator for automated testing that includes Bulbs. So while I don't have a physical Bulb to test with, I do have virtual ones!

HS100, HS105, HS110plugOn
OutletInUse (based on On state)
OutletInUse (based on energy monitoring)
Volts (Custom)
Amperes (Custom)
Watts (Custom)
VoltAmperes (Custom)
KilowattHours (Custom)
KilowattVoltAmpereHour (Custom)
HS200plugOnReported Good
Same API as Plug
LB100, LB110bulbOn
Not tested
Not tested
Not tested

Custom Characteristics in Eve

Devices that support energy monitoring (HS110) will have extra characteristics that are viewable in the Eve app. Turn this off by setting addCustomCharacteristics false.


Accessory Names

Note the name in Homebridge/HomeKit may be out of sync from the Kasa app. This is a Homebridge/HomeKit limitation. You can rename your accessory through the Home app.


UUID Errors

Error: Cannot add a bridged Accessory with the same UUID as another bridged Accessory If you get an error about duplicate UUIDs you'll have to either remove your cached configuration files or manually edit them to remove the offending entry. By default they are stored in ~/.homebridge/persist and ~/.homebridge/accessories.

You can remove them by running: rm -rf ~/.homebridge/persist && rm -rf ~/.homebridge/accessories

You may also need to un-pair and re-pair your bridge to Homekit.


Thanks to George Georgovassilis and Thomas Baust for reverse engineering the HS1XX protocol.


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free