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, and also includes an SSDP implementation to retrieve the IP of your light.
# Run this in your favourite terminal
npm i yeelight-node
You can get started by running the example, which will discover and ping your devices over LAN:
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.
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:
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 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.
To run the tests:
mocha tests/yeelight.test.js
Original work by @cpav3.