Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/plasticrake/tplink-smarthome-api
TP-Link Smarthome WiFi API
https://github.com/plasticrake/tplink-smarthome-api
kasa smartbulb smarthome smartplug tplink
Last synced: 18 days ago
JSON representation
TP-Link Smarthome WiFi API
- Host: GitHub
- URL: https://github.com/plasticrake/tplink-smarthome-api
- Owner: plasticrake
- License: mit
- Created: 2016-07-12T22:34:02.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2023-11-15T17:17:52.000Z (12 months ago)
- Last Synced: 2024-10-04T09:51:58.757Z (about 1 month ago)
- Topics: kasa, smartbulb, smarthome, smartplug, tplink
- Language: TypeScript
- Homepage:
- Size: 3.09 MB
- Stars: 1,016
- Watchers: 45
- Forks: 141
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - plasticrake/tplink-smarthome-api - TP-Link Smarthome WiFi API (others)
README
# tplink-smarthome-api
[![NPM Version](https://img.shields.io/npm/v/tplink-smarthome-api.svg)](https://www.npmjs.com/package/tplink-smarthome-api)
[![Build Status](https://github.com/plasticrake/tplink-smarthome-api/workflows/CI/badge.svg?branch=main)](https://github.com/plasticrake/tplink-smarthome-api/actions?query=workflow%3ACI+branch%3Amain)
[![Coverage Status](https://coveralls.io/repos/github/plasticrake/tplink-smarthome-api/badge.svg?branch=master)](https://coveralls.io/github/plasticrake/tplink-smarthome-api?branch=master)TP-Link Smarthome API
**[Changelog](https://github.com/plasticrake/tplink-smarthome-api/tree/main/CHANGELOG.md)**
## Known Supported Devices
| 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.
## Related Projects
- [TP-Link Smarthome Device Simulator](https://github.com/plasticrake/tplink-smarthome-simulator) - Useful for automated testing
- [TP-Link Smarthome Crypto](https://github.com/plasticrake/tplink-smarthome-crypto)
- [TP-Link Smarthome Homebridge Plugin](https://github.com/plasticrake/homebridge-tplink-smarthome)## Examples
See more [examples](https://github.com/plasticrake/tplink-smarthome-api/tree/main/examples).
```javascript
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.](https://plasticrake.github.io/tplink-smarthome-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](https://blog.georgovassilis.com/2016/05/07/controlling-the-tp-link-hs100-wi-fi-smart-plug/).
Some design cues for Client based on [node-lifx](https://github.com/MariusRumpf/node-lifx/)