A Node JS library to controlPhilips WiZ smart bulbs, written in TypeScript.
Wikari is very strongly typed!
The library is fairly simple to use, since you're mostly going to deal withBulb
objects:
import{discover,SCENES}from"wikari";constbulbs=awaitdiscover({});constbulb=bulbs[0];if(!bulb)returnconsole.log("No bulbs found!");// get the current state of the bulb// WiZ calls the bulb state "pilot"// so you have "setPilot" and "getPilot"console.log(awaitbulb.getPilot());// whenever the bulb sends a message, log it to the consolebulb.onMessage(console.log);// turn the bulb onawaitbulb.turn(true);// set the color to redawaitbulb.color("#f44336");// set the color to some cool and some warm whiteawaitbulb.color({c:40,w:40});// set the scene to "TV Time"awaitbulb.scene(SCENES["TV Time"]);// set the bulb to 10_000K whiteawaitbulb.white(10_000);// set the bulb brightness to 40%awaitbulb.brightness(40);// toggle the bulb (turns it off since it was already on)awaitbulb.toggle();bulb.closeConnection();
It's possible to subscribe to updates from the bulb.
awaitbulb.subscribe();bulb.onSync(syncPilotMsg=>{// syncPilotMsg is the updated state of the bulb// it sends a syncPilot message on state change.// so for example, if you change the state using// the WiZ app on your phone, the changes will// show up here as well.});
Most of the functions have TSDoc comments, so you can either hover over them and your IDE will display it,or just skim through the library source code to find it.
If you want complete control over the bulb, or want to mix and match various settings, you can try using thesetPilot
orsendRaw
functions.However, you should mostly find the functions in the example above to be enough.
It's supposed to be WiZ + Hikari (光, "light" in Japanese)