Control TP-Link smart-home devices from nodejs
npm install tplink-lightbulbControl TP-Link smart-home devices from nodejs

This will allow you to control TP-Link smart-home devices from nodejs or the command-line.
* If you want to use kasa (allows you to hit your tplink devices, on an external network) have a look at kasa_control.
* If you'd like to run a GraphQL server to control your lights, see tplink-graphql.
* If you like to see a demo web-app that uses react & websockets, see tpserver.
Not all TP-Link smart-home devices can do all things, here's the support-matrix:
| | raw | details | on | off | temp | hex | hsb | cloud | wifi | join |
|------------------------------------------------------------------------------------------------------------:|:---:|:-------:|:--:|:---:|:----:|:---:|:---:|:-----:|:----:|:----:|
| LB100 | X | X | X | X | X | | | X | X | X |
| LB120 | X | X | X | X | X | | | X | X | X |
| LB130 | X | X | X | X | X | X | X | X | X | X |
| HS100 | X | X | X | X | | | | | X | X |
| HS105 | X | X | X | X | | | | | X | X |
| HS110 | X | X | X | X | | | | | X | X |
| HS200 | X | X | X | X | | | | | X | X |
| KP100 | X | X | X | X | | | | | X | X |
| LB200 | X | X | X | X | X | | | X | X | X |
| LB230 | X | X | X | X | X | X | X | X | X | X |
| KL110 | X | X | X | X | | | | | X | X |
| KL120 | X | X | X | X | X | | | X | X | X |
| KL130 | X | X | X | X | X | X | X | X | X | X |
I have LB120, LB130, and HS105, so any testing (and packet-capture) with other devices would be greatly appreciated.
If you have nodejs installed, you can install it for your system with this:
```
npm i -g tplink-lightbulb
You can even run it without installing:
``
npx tplink-lightbulb
If you don't want to install nodejs, or just want the standalone-version, install a release for your system.
Now, you can use it like this:
`
Usage: tplight
Commands:
tplight scan Scan for lightbulbs
tplight on
tplight off
tplight bright
(for those that support it)
tplight temp
lightbulb (for those that support
it)
tplight hex
color (for those that support it)
tplight hsb
tplight cloud
tplight raw
tplight details
tplight led
tplight wifi
device
tplight join
wifi settings
Options:
-h, --help Show help [boolean]
--version Show version number [boolean]
Examples:
tplight scan -h Get more detailed help with scan commandon
tplight on -h Get more detailed help with commandoff
tplight off -h Get more detailed help with commandtemp
tplight temp -h Get more detailed help with commandhex
tplight hex -h Get more detailed help with commandhsb
tplight hsb -h Get more detailed help with commandcloud
tplight cloud -h Get more detailed help with commandraw
tplight raw -h Get more detailed help with commanddetails
tplight details -h Get more detailed help with commandled
tplight led -h Get more detailed help with commandwifi
tplight wifi -h Get more detailed help with commandjoin
tplight join -h Get more detailed help with command`
If you want to analyze the protocol, you can use the included tplink-smarthome.lua.
Install in the location listed in About Wireshark/Folders/Personal Plugins
I captured packets with tcpdump running on a raspberry pi pretending to be a router. In general, this is a really useful way to capture IOT protocols and mess around with them.
I ssh'd into my pi, ran sudo apt update && sudo apt install tcpdump, then tcpdump -i wlan0 -w lights.pcap
I connected the lights to that network (reset them to factory default by turning the power off/on 5 times, then configure in Kasa app.)
After I did stuff like switch the lights on/off in app, I open the pcap file in wireshark on my desktop.
You can install it in your project like this:
``
npm i -S tplink-lightbulb
Include it in your project like this:
`js`
const TPLSmartDevice = require('tplink-lightbulb')
or for ES6:
`js``
import TPLSmartDevice from 'tplink-lightbulb'
Read more about the API.