Skip to content

wolfeidau/lifx

Repository files navigation

lifx GoDoc Build Status

Hacking on a client for the lifx light bulb, this is based on the work already done in the lifxjs and go-lifx.

The aim of this project is to keep things simple and just provide a very thin API to the lifx bulbs with a view to focusing on packet decoding, coordination and discovery.

Note: This library works with 2.x firmware!

Usage

Below is a simple example illustrating how to observe discovery and changes, as well as control of bulbs.

package main

import (
    "log"
    "os"
    "time"

    "gopkg.in/wolfeidau/lifx.v1"
)

func main() {
    c := lifx.NewClient()

    err := c.StartDiscovery()

    if err != nil {
        log.Fatalf("Woops %s", err)
    }

    go func() {

        sub := c.Subscribe()

        for {
            event := <-sub.Events

            switch event := event.(type) {
            case *lifx.Gateway:
                log.Printf("Gateway Update %v", event)
            case *lifx.Bulb:
                log.Printf("Bulb Update %v", event.GetState())
            case *lifx.LightSensorState:
                log.Printf("Light Sensor Update %s %f", event.GetLifxAddress(), event.Lux)
            default:
                log.Printf("Event %v", event)
            }

        }
    }()

    log.Printf("LightsOn")
    c.LightsOn()

    time.Sleep(10 * time.Second)

    for _, bulb := range c.GetBulbs() {

        time.Sleep(5 * time.Second)

        // transition to a dull purple
        c.LightColour(bulb, 0xcc15, 0xffff, 0x1f4, 0, 0x0513)

        time.Sleep(5 * time.Second)

        // transition to a bright white
        c.LightColour(bulb, 0, 0, 0x8000, 0x0af0, 0x0513)
    }

}

Disclaimer

This is currently very early release, everything can and will change.

License

Copyright (c) 2014 Mark Wolfe Licensed under the MIT license.

About

Minimal lifx api for go

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5