https://github.com/thomas-bouvier/yeelight-node
💡 A simple Node.js library to discover and control Xiaomi Yeelights over LAN
https://github.com/thomas-bouvier/yeelight-node
api home-automation ssdp xiaomi yeelight
Last synced: 11 months ago
JSON representation
💡 A simple Node.js library to discover and control Xiaomi Yeelights over LAN
- Host: GitHub
- URL: https://github.com/thomas-bouvier/yeelight-node
- Owner: thomas-bouvier
- License: mit
- Created: 2019-03-14T18:39:44.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T08:17:23.000Z (over 3 years ago)
- Last Synced: 2024-12-12T21:41:34.733Z (over 1 year ago)
- Topics: api, home-automation, ssdp, xiaomi, yeelight
- Language: JavaScript
- Homepage:
- Size: 369 KB
- Stars: 30
- Watchers: 3
- Forks: 7
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# yeelight-node
[](https://www.npmjs.com/package/yeelight-node)
[](https://travis-ci.com/thomas-bouvier/yeelight-node)
A simple Node.js library to discover and control Xiaomi Yeelights over LAN.
This solution offers a 1:1 implementation of the [official docs from Xiaomi](http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf), and also includes an SSDP implementation to retrieve the IP of your light.
## Installation
```bash
# Run this in your favourite terminal
npm i yeelight-node
```
## Usage
**⚠️ Make sure you enabled the *LAN Control* option in the Yeelight app.**
You can get started by running the example, which will discover and ping your devices over LAN:
```bash
node example/index.js
```
In your code, simply require and instantiate the package as a class, passing in the IP address and port of the device as an object.
```javascript
const { Yeelight } = require('yeelight-node')
const yeelight = new Yeelight({ ip: '0.0.0.0', port: 55443 })
yeelight.set_power('on')
yeelight.set_rgb([250, 150, 120])
yeelight.get_prop('bright').then(
data => console.log(data)
)
```
If you don't know the IP of your device, you can use the SSDP client to scan your network:
```javascript
const { Client } = require('yeelight-node')
const client = new Client()
client.bind(yeelight => {
yeelight.set_power('on')
yeelight.set_rgb([250, 150, 120])
yeelight.get_prop('bright').then(
data => console.log(data)
)
})
```
You can now call any of the operations from the [official docs](http://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf) on this instance.
As stated in the docs, Xiaomi devices support up to 4 simultaneous TCP connections. Any further connect attempt will be rejected. This library exposes the `yeelight.closeConnection()` to close the TCP connection at will, should your use case require it.
## Tests
To run the tests:
```javascript
mocha tests/yeelight.test.js
```
## Credits
Original work by [@cpav3](https://github.com/cpave3).