1.6 KiB

Lightrix: Drive Adafruit Neopixels over Matrix


You will need a Raspberry Pi that is attached to your network. I am using a Raspberry Pi Model A+ due to its really adorable formfactor and the fact that I have some WiFi dongles laying about.

This is based on the rpi_ws281x library, and I ship an ansible playbook to provision it.

Remove the rrix.setup-home role from playbook.yaml and run:

ansible-playbook -i ../devops/hosts playbook.yaml --become

Yes, I install everything in to the main Python library path, because I'm an infoterrorist. It's an embedded Raspberry Pi, deal with it.


As root: (due to the DMA requirements)

  • Create a ~/.mcatrc
  • Run python ./ -r "<YOUR ROOM ID>" -c ~/.mcatrc and it'll fire up
  • Go in to the room in Vector or so and type "rainbow"

The playbook will install a systemd unit file lightrix.service which you can start and enable to your heart's content


There is also now a remote control included which you can run to allow you to control the lights from a web-page.

  • Create a secrets.js which defines the following variables, and put it in remote/

    • accessToken: A valid access token which the webpage will use to make requests to the HS as
    • hs: A fully-qualified homeserver URL
    • uid: the UID that the accessToken represents.
    • rooms: an array of Room IDs which you can use to toggle to mutliple lightrix installations (assuming each one runs in its own room)
  • run python -m SimpleHTTPServer in the remote/ directory
  • browse to http://DOMAIN:8000 to view the remote