management library/tool for smart lightbulbs so they don't manage *you*
William Pitcock 50c8deb9fe identify: explain blink pattern 3 years ago
cmd identify: explain blink pattern 3 years ago
libbulb libbulb: socket: send duplicate messages due to the lossy nature of wifi 3 years ago
tests group-test: also dump the labels of lights detected in the group 3 years ago
.gitignore update .gitignore again 3 years ago
LICENSE Initial commit 3 years ago
Makefile.am lighttoy: probe the network before dispatching to an applet 3 years ago
README.md lighttoy: implement --identify 3 years ago
autogen.sh add some buildsystem artefacts 3 years ago
configure.ac build: install libbulb pkg-config module headers 3 years ago
libbulb.pc.in libbulb: group: add libbulb_group_address_is_member() for membership testing 3 years ago

README.md

lighttoy

A library (libbulb) and tool for managing smart lightbulbs. Or, alternatively, making the Internet of Things (groan) work for you.

the elevator pitch

Did you -waste- err, I mean, spend $100 on one of those fancy lightbulbs? If you didn't, well, you're probably more sane than the author of this, and this is probably boring to you as well. If you did and you want to make the lightbulbs do what you want programatically, either libbulb or lighttoy is for you.

libbulb

As previously mentioned, libbulb is a library that speaks (at present, just the LIFX protocol) to lightbulbs. It can turn them on/off, set their color, and later do some other things (like set their label).

It is kinda, sorta, based on the LIFX C SDK, but not really because that thing is not very good. But the protocol headers definitely are based on that SDK.

Also included is a nifty libbulb.pc pkg-config module which can be used with pkgconf or pkg-config.

lighttoy

This is an application which provides a CLI frontend to libbulb. It exposes all libbulb functionality, in the convenience of a command-line. Imagine the shell-scripting possibilities!

It also has some cool built-in effects such as:

  • --colorstrobe, like a strobelight except it cycles colors instead of turning on/off.

You can also address specific bulbs, using --target. Use --target multiple times to combine the specified lights into a virtual group. Use --identify to make the bulbs in your group blink.