Giter VIP home page Giter VIP logo

yeelight-node's Introduction

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.

yeelight-node's People

Contributors

cpave3 avatar dependabot[bot] avatar gaetan-puleo avatar nikitaindik avatar taiwar avatar thomas-bouvier avatar tvandinther avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.