A octagon-shaped light made from LED strips. Features multiple lighting modes and effects. Based on the ESP8266 platform.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Visit my webpage! (images etc.)



OctaLight is a DIY project. It consists of an led strip wired in an octagon shape with a cross in the middle of it. It is powered by a NodeMCU chip with WiFi capabilities. Through implementation of a simple HTTP server, the light reacts to GET requests. It can be controlled via the in-built web control panel.

Required libraries:

GET request endpoints

Route Description Arguments Response
*   page=[true | false] Whether to respond with the control panel. success or error message
/ Show the control panel.   control panel
/get Get the average light color.   color in RRGGBBWW
/on Set the light color to a warm white.    
/off Set the light color to black (off).    
/color Set the light color. color=[RRGGBBWW] (required) The color.  
transition=[int] The transition time in ms.
mode=[allinner | outer] Where to set color.
/alternate Alternating circles animation of different colors on the outer pixels. colors=[RRGGBBWWRRGGBBWWRR...] (required) The colors.  
duration=[int] Duration for one color in ms.
inner=[RRGGBBWW] The color on the inner pixels.
cycles=[int] Cycle count. "-1" for infinity.
/ripple Ripple animation from in to out of different colors. colors=[RRGGBBWWRRGGBBWWRR...] (required) The colors.
duration=[int] Duration for one color in ms.
cycles=[int] Cycle count. "-1" for infinity.
/spectrum Waving through the RGB spectrum. duration=[int] Duration for one cycle in ms.  
cycles=[int] Cycle count. "-1" for infinity.
/randomness Random colors on all pixels. frequency=[int] Number of new random pixels per second.  
/starlight A sky full of stars. color=[RRGGBBWW] Pixel color.  
frequency=[int] Number of pixel switches per minute.
max=[int] Maximum number of pixels on at the same time.
/stroboscope Fast-flashing stroboscopic light. colors=[RRGGBBWWRRGGBBWWRR...] (required) The colors.  
frequency=[int] Number of flashes per second.
blacks=[int] Number of black phases between flashes.
mode=[random | random_spectrum | order]

The ordering mode of the colors.
random: random order
random_spectrum: random colors
order: ordered as in colors


Pixel zero is situated at the controller and the outer pixels (red) range counterclockwise back to it. From there the inner pixels (green) form a bow. Not all the strips can be connected directly: There has to be a cable connection to connect the two inner strands (black-green).

Parts list