/rustmas

Christmas lights controller capable of displaying 3D animations

Primary LanguageRust

Rustmas

Santa Crab is coming to town!

Utilities for putting smart Christmas lights on your Christmas tree, written in Rust, inspired by Matt Parker's xmastree.

The interface for controlling lights is provided by pico-w-neopixel-server, which is meant to be installed on a RaspberryPi Pico W. You can use local visualizer for testing purposes.

Demo (YouTube)

Demo

Local development setup

You will need

  • Rust toolkit (see rustup)
  • dependencies installed (see Workflow file for what to install on Ubuntu)
  • (optionally) programmable lights set up with pico-w-neopixel-server, or you can use our visualizer instead

Setting up your lights

If you are using physical lights, you need to connect them to a Raspberry Pi Pico W running pico-w-neopixel-server or pico-usb-neopixel-driver, and configure their positions using our configurator. This will produce a CSV file with light positions. Alternatively you can use the visualizer for testing with the example CSV file.

Running code locally

The easiest way to test your animations is to run our web application locally. You can use either physical lights or our visualizer.

Git hooks

This repository has git hooks prepared that check simple conditions that might otherwise trip up the CI setup. We recommend that you use them. In order to set them up, run the following command inside the repository:

git config core.hooksPath .githooks

Deployment

If you would like to use Rustmas to control your Christmas lights, you will first need to configure your lights and then deploy our web application to a local server.

Attribution