plasticrake/tplink-smarthome-api

TP-Link Smarthome WiFi API

TypeScript

1,057

475 commits

updated Nov 15, 2023

See the code

README

tplink-smarthome-api

NPM Version Build Status Coverage Status

TP-Link Smarthome API

Changelog

Known Supported Devices

ModelType
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.

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

API docs can be found here.

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

kasa
smartbulb
smarthome
smartplug
tplink

plasticrake/tplink-smarthome-api

TP-Link Smarthome WiFi API

TypeScript

1,057

475 commits

updated Nov 15, 2023

See the code

README

tplink-smarthome-api

NPM Version Build Status Coverage Status

TP-Link Smarthome API

Changelog

Known Supported Devices

ModelType
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.

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

API docs can be found here.

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

kasa
smartbulb
smarthome
smartplug
tplink

Project health

Overall

4.6/10

Maintained

0/10

Code review

0/10
OpenSSF Scorecard

Latest release

5.0.0 · Nov 15, 2023

Releases this year

0

Significant stargazers

Diego Rodríguez Baquero

520 followers · starred Jan 2018

Stephen

108 followers · starred Aug 2019

Hardy Jones

272 followers · starred Dec 2023

Ramon Petgrave

78 followers · starred Feb 2020