Skip to content

Cyborg-Squirrel/color-composer

Repository files navigation

Color Composer

Description

Color Composer is a API server used for making light effects using WS2812/NeoPixel LED strips. It is written in Kotlin and uses the Micronaut Framework and uses Postgres as a database.

Color Composer does not interface with LEDs directly. Instead it sends color data to a Pi Client or NightDriver client.

Color Compser Web is the frontend for Color Composer.

Features

Client-Server model

This enables a single interface for controlling multiple clients.

Effects

There are currently six effects. Light effects support custom palettes, and effects can be layered to produce new effects. Layering can be customized to make effects take precidence so one effect's colors show instead of another's if they light up the same LED or instead, average RGB values.

A TODO feature is LED strip groups which will enable light effects to treat multiple strips as a single strip.

Triggers

Triggers can be configured to start a light effect at a set time, or run one for a specified number of interations. If a location is specified in the location_configs table then data from the https://sunrise-sunset.org API is fetched and can be used to set a start time of sunrise or sunset.

Requirements

  • JDK 21 or newer
  • A Postgres installation

Installation

  1. Configure your Postgres instance. Credentials can be passed as command line arguments or defined in the application.yaml file.
  2. Build a Jar. This project uses the shadow plugin which packages all dependencies into a single Jar for ease of use. Docker images can also be built.
  3. Run the Jar.

Contributing

  • Create a pull request
  • Explain your changes
  • Add unit tests
  • The GitHub workflow must pass

About

A web service for controlling WS2812 LED strips

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages