Skip to content

💡 A simple Node.js library to discover and control Xiaomi Yeelights over LAN

License

Notifications You must be signed in to change notification settings

thomas-bouvier/yeelight-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yeelight-node

npm Build Status

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.

Competing standards

Installation

# 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:

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.

Tests

To run the tests:

mocha tests/yeelight.test.js

Credits

Original work by @cpav3.

About

💡 A simple Node.js library to discover and control Xiaomi Yeelights over LAN

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published