Skip to content

evq/chromaticity

Repository files navigation

Chromaticity

Chromaticity exposes a Hue compatible REST API that has a modular backend design, allowing a user to control Zigbee*, Color Kinetics, MiLight/LimitlessLED*, and OPC (Open Pixel Control) devices through a unified API.

*: Temporarily disabled

Current State:

Much of the current work has gone toward making Chromaticity a workable local API for a rooted Wink home automation hub. It is currently capable of reading the Wink's database of Zigbee devices and controlling Philips Hue and GE Link bulbs.

There is effect and group support, but no alert or scene support. Groups are not backed by Zigbee groups currently so updates might be slow for larger groups. Renaming of lights is not yet supported. Currently no changes are persisted between runs.

Experimental RGBW light support is in place for OPC lights, one can define the color temperature of the white source in the fixture.

Light discovery (after startup) is only implemented for Color Kinetics lights currently.

Authentication is wide open, any api_key will work. The API should be discoverable by off the shelf Hue apps. Speaking of which, most iOS and Android apps should work out of the box at this point.

A swagger ui is served up at http://<your_ip>/apidocs.

Usage on the wink hub

Install opkg on your rooted hub:

curl -s http://wink.7pr.xyz/bootstrap.sh | bash

Then:

opkg install chromaticity
/etc/init.d/S57chromaticity restart

Usage on a workstation

go get github.com/evq/chromaticity
go install github.com/evq/chromaticity
chromaticity

Chromaticity will read stored (json serialized) light information from ~/.chromaticity/data.json. This is primarily useful for hardcoding OPC light information.

Libraries

go-opc: An open pixel control client library

go-restful: A framework for creating RESTful web services with autogenerated swagger API docs

go-colorful: A color space transformation library

logrus: A structured logger that is API compatible with the standard library