Awesome
<!-- markdownlint-disable MD007 MD012 MD033 -->tplink-smarthome-api
TP-Link Smarthome API
Known Supported Devices
Model | Type |
---|---|
HS100, HS103, HS105, HS107, HS110,<br/>HS200, HS210, HS220, HS300, KP303, KP400<br/>ES20M, EP40, ...etc. | Plug |
LB100, LB110, LB120, LB130, LB200, LB230, KL50, KL120, KL125<br/>...etc. | Bulb |
KL430<br/>...etc. | Bulb (light strip) |
Many other TP-Link Plug and Bulb models may work as well. Note that Tapo devices are not supported.
Related Projects
- TP-Link Smarthome Device Simulator - Useful for automated testing
- TP-Link Smarthome Crypto
- TP-Link Smarthome Homebridge Plugin
Examples
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);
});
CLI
Install the command line utility with npm install -g tplink-smarthome-api
. Run tplink-smarthome-api --help
for help.
API
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.)
Credits
Thanks to George Georgovassilis and Thomas Baust for figuring out the HS1XX encryption.
Some design cues for Client based on node-lifx