1
0
Fork 0
 
 
 
 
Go to file
Ambrose Chua 307464d1bf Set theme jekyll-theme-cayman 2019-04-12 16:18:16 +08:00
framebuffer Comment on APIs 2019-04-12 16:08:54 +08:00
.gitignore Initial API 2019-04-12 15:11:11 +08:00
README.md Fix spelling 2019-04-12 16:10:57 +08:00
_config.yml Set theme jekyll-theme-cayman 2019-04-12 16:18:16 +08:00
draw.go Initial API 2019-04-12 15:11:11 +08:00
draw_test.go Initial API 2019-04-12 15:11:11 +08:00
get-ws281x.sh Initial API 2019-04-12 15:11:11 +08:00
go.mod Initial API 2019-04-12 15:11:11 +08:00
go.sum Initial API 2019-04-12 15:11:11 +08:00
main.go Initial API 2019-04-12 15:11:11 +08:00
server.go Initial API 2019-04-12 15:11:11 +08:00

README.md

leet

Environmental lighting over gRPC (WTF?!)

WTF?!

At home, I have a strip of 287 WS2812B LEDs connected to a Raspberry Pi, that needs to be used as a light, mood lighting, and for notifications. I don't want to be a typical person and write a monolithic application, so leet is a simple gRPC server that renders basic opacity composition and buffered animations onto the LED strip. This also enables me to add additional sources of data in the future from anywhere on my home network, including servers, phones and your IoT Blockchain AI appliances.

Architecture

 -------------------         ---------------
 | Lighting Web UI |  -------| IMAP Client |
 -------------------  |      ---------------
           |          |
 -------------------- | --------------------------
 | Lighting Backend | | | Server Load Monitoring |
 -------------------- | --------------------------
           |          |              |
        ----------------------------------  -----------------
        |    Leet on the Raspberry Pi    |--| WS2812B Strip |
        ----------------------------------  -----------------

Protocol

See framebuffer.proto for the actual gRPC protocol

Developing

  1. Install protoc and protoc-gen-go
  2. Install the rpi_ws281x library: ./get-ws2812x.sh (WARNING: this installs four files into /usr/local)
  3. Get dependencies: go get
  4. Start building with go build