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.
- TP-Link Smarthome Device Simulator - Useful for automated testing
- TP-Link Smarthome Crypto
- TP-Link Smarthome Homebridge Plugin
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