Project

lifx-http

0.04
No commit activity in last 3 years
No release in over 3 years
There's a lot of open issues
A HTTP API for LIFX.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.3
~> 10.1

Runtime

~> 0.6
= 0.4.5
~> 0.2
~> 1.5
~> 0.2
 Project Readme

LIFX HTTP API

This project currently has issues with the new 2.0 firmware. Updates pending.

Gem Version

This is an unofficial JSON RESTful API service for controlling LIFX devices. This API adds some reliability that the LIFX gem does not include.

Features

  • Mostly synchronous, apart from setting colour
  • Supports MDNS

Requirements

  • Ruby 2.0+
  • Tested on OS X Mavericks, but should work for other *nix platforms.

Usage

  • Install the gem: gem install lifx-http
    • On OS X Mavericks using system Ruby: sudo gem install lifx-http
      • If you see this: clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future] Run export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future; sudo -E gem install lifx-http
  • Run in foreground (no daemonizing yet): lifx-http
    • Be aware that the http server is reachable from other machines as well and is advertised via MDNS
  • Test if working: curl http://localhost:56780/lights.json
  • Toggle all lights: curl -XPUT http://localhost:56780/lights/all/toggle -d ''
  • Set all lights to green:
    • URL params: curl -XPUT "http://localhost:56780/lights/all/color?hue=120&saturation=1&brightness=1&duration=2" -d ''
    • JSON body: curl -XPUT http://localhost:56780/lights/all/color -H "Content-Type: application/json" -d '{"hue": 120, "saturation": 1, "brightness": 1, "duration":2}'
    • Override method by setting _method: curl "http://localhost:56780/lights/all/color?hue=120&saturation=1&brightness=1&duration=2&_method=put"
  • Start a slow sunrise effect:
    • curl -XPUT "http://localhost:56780/lights/all/color?hue=35&saturation=0.37&brightness=0.65&duration=10m" -d ''

API

  • selector is either:
    • all for all lights
    • label:[label] for light with label label
    • tag:[tag] for lights with tag tag
    • [light_id] for light with id light_id
  • GET /lights - Lists all lights
  • GET /lights/{selector} - Lists lights matching selector
  • PUT /lights/{selector}/on - Turns lights matching selector on
  • PUT /lights/{selector}/off - Turns lights matching selector off
  • PUT /lights/{selector}/toggle - Toggle lights matching selector. If any lights in selector is on, it will turn them off
  • PUT /lights/{selector}/color - Sets the color for lights matching selector. Color data can be passed as URL parameters or form parameters (JSON)
  • PUT /lights/{light_id}/label - Changes the label of light with id light_id
  • POST /lights/{light_id}/tag - Adds a tag to the light
  • DELETE /lights/{light_id}/tag - Removes a tag from the light

Documentation

This API is documented using Swagger. To view documentation and play with the API, start the API server locally, then visit http://petstore.swagger.wordnik.com/ and put http://localhost:56780/swagger_doc in the first text box, then hit Explore.

You should see something like this: Swagger screenshot

Changelog

0.2.3

  • Update MDNS gem

0.2.2

  • MDNS fix

0.2.1

  • Duration now supports minute and hour suffixes e.g. "12h" for 12 hours thanks to @Bluebie
  • MDNS support! Enables easy discovery of a LIFX HTTP instance on the LAN.

0.2.0

  • First gem release

License

MIT. See LICENSE