GithubHelp home page GithubHelp logo

mohebifar / homebridge-wiz-lan Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kpsuperplane/homebridge-wiz-lan

0.0 1.0 0.0 349 KB

Control Wiz lights over LAN

License: Apache License 2.0

TypeScript 100.00%

homebridge-wiz-lan's Introduction

homebridge-wiz-lan

Based off of kpsuperplane/homebridge-iotas

Currently supports

  • Lightbulbs (RGB, Color Temp, and Single Color) (tested with Wiz 100W Color & Wiz 30W Filaments)
  • Wiz Plugs/Outlets (ESP10_SOCKET_06, ESP25_SOCKET_01, ESP20_DHRGB_01)

Installation

Make sure your bulbs are already set up via the Wiz app and you have "Allow Local Communication" set to ON in your settings.

  1. Install homebridge using: npm install -g homebridge
  2. Install this plugin using: npm install -g homebridge-wiz-lan
  3. Update your configuration file. See the sample below.

Configuration

Simple Configuration:

{
    "platform": "WizSmarthome",
    "name": "WizSmarthome",
}

Full configuration options:

{
    "platform": "WizSmarthome",
    "name": "Wiz",

    // [Optional] Port for bulbs to connect to your server
    // Default: 38900
    "port": 38900,

    // [Optional] Enable scenes support for your bulbs
    // Default: false
    "enableScenes": false,

    // [Optional] Lights turn on with the same settings they had when turned off (light configs in HomeKit are ignored).
    // Default: false
    "lastStatus": false,

    // [Optional] UDP Broadcast address for bulb discovery
    // Default: 255.255.255.255
    "broadcast": "255.255.255.255",

    // [Optional] Your server's IP address
    // Default: Autodiscovered
    "address": "192.168.0.1",

    // [Optional] Manual list of IP addresses of bulbs
    // Useful if UDP broadcast doesn't work for some reason
    // Default: None
    "devices": [
      { "host": "192.168.0.2" },
      { "host": "192.168.0.3" },
      { "host": "192.168.0.4" },
      // ...
    ],

    // [Optional] Refresh/ping every accessory to get their latest state on an interval. Specify in seconds, 0 = off
    // Default: 0
    "refreshInterval": 60,
  }

Some Notes

Color

The Wiz bulbs strongly distinguish between RGB color modes and Kelvin color modes, the latter being significantly brighter. Unfortunately, HomeKit is not very good at handling both at the same time, yielding weird errors if you try to add both characteristics.

Luckily, even if we only enable the color mode, we still get a nice temperature picker. Problem is, the color temperature is given in standard HSV. As such, this app will try to guess which one to best use given a color, and you will notice some significant brightness variance switching between a "temp" hue and a "color" hue.

In particular, since the Wiz bulbs only support up to 6500K, this means that only the top-ish half of the temperature picker is actually bright

Last Status (config setting)

If a "rhythm" is selected in the Wiz app and lastStatus is set to true, the lights will always turn on to the rhythm. When rhythms are disabled, lights turn on to whatever setting they had when last turned off.

Development

Ideas from http://blog.dammitly.net/2019/10/cheap-hackable-wifi-light-bulbs-or-iot.html?m=1

Credits

Thanks to:

#7 Remove obsolete/invalid parameters from setPilot to fix

#16 Support costco wiz lights that behave differently from philips wiz

#25 Fix: getter for Name Characteristic returned object instead of the value

#56 Update README.md

#57 transform the received dimming value to also fit the 10 to 100 range

#67 feat: Support durable custom names in config

#74 feat: implement dynamic scenes selector

#81 Add a config schema form

#119 Add lastStatus setting so lights remember their setting when turned on

#118 Added support for Wiz Smart Plug ESP25_SOCKET_01

Contributing

Mostly built for my own personal use, I'll probably reply to any created issues but probably will not actively support anything outside of the RGB bulbs. If you'd like to make a PR through, <3

Furthermore, feel free to create and modify it on your own per MIT License.

How bulbs are discovered

Make a UDP broadcast to port 38899 with the following content:

{"method":"registration","params":{"phoneMac":"<my_mac_address>","register":false,"phoneIp":"<my_ip_address>"}}

You will get a response on port 38900 with the following content:

{"method":"registration","env":"pro","result":{"mac":"<light_address>","success":true}}

License

See LICENSE file

homebridge-wiz-lan's People

Contributors

andrewsverdrup avatar bmdan avatar bwp91 avatar dependabot[bot] avatar dotkrnl avatar jeppesens avatar kpsuperplane avatar krystofcelba avatar motechnicalities avatar pyrliu avatar supereg avatar xmanu avatar

Watchers

 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.