TP-Link Smarthome API
| Model | Type | 
|---|---|
| HS100, HS103, HS105, HS107, HS110, HS200, HS210, HS220, HS300, KP303, KP400 ES20M, EP40, ...etc.  | 
Plug | 
| LB100, LB110, LB120, LB130, LB200, LB230, KL50, KL120, KL125 ...etc.  | 
Bulb | 
| KL430 ...etc.  | 
Bulb (light strip) | 
Many other TP-Link Plug and Bulb models may work as well. Note that Tapo devices are not supported.
See more examples.
const { Client } = require('tplink-smarthome-api');
const client = new Client();
const plug = client.getDevice({ host: '10.0.1.2' }).then((device) => {
  device.getSysInfo().then(console.log);
  device.setPowerState(true);
});
// Look for devices, log to console, and turn them on
client.startDiscovery().on('device-new', (device) => {
  device.getSysInfo().then(console.log);
  device.setPowerState(true);
});
Install the command line utility with npm install -g tplink-smarthome-api. Run tplink-smarthome-api --help for help.
For functions that send commands, the last argument is SendOptions where you can set the transport ('tcp','udp') and timeout, etc.
Functions that take more than 3 arguments are passed a single options object as the first argument (and if its a network command, SendOptions as the second.)
Thanks to George Georgovassilis and Thomas Baust for figuring out the HS1XX encryption.
Some design cues for Client based on node-lifx
Generated using TypeDoc