C++ JavaScript HTML C CSS
Clone or download
Latest commit 03d74cd Aug 4, 2018
Permalink
Failed to load latest commit information.
data Revert AP fallback change in config for now, must be investigated. Jul 27, 2018
dist Travis updates. Included distribution files. Jul 24, 2018
html Added new effects "Fire flicker" and "Lightning". Aug 1, 2018
travis Fixed some Travis stuff for build the release archive Jul 24, 2018
.gitignore Removed package-lock.json for now Jul 27, 2018
.sublimelinterrc Made Renard and DMX asynchronous. Added multi-universe and 480kbps Jul 12, 2016
.travis.yml Fixed some Travis stuff for build the release archive Jul 24, 2018
Changelog.md Doc updates Jul 12, 2018
EFUpdate.cpp Migrate to ESPAsyncE131 Library Aug 10, 2017
EFUpdate.h Finished OTA update handling. Sep 21, 2016
ESPixelStick.h Used retained MQTT messages to persist last state Jul 28, 2018
ESPixelStick.ino Used retained MQTT messages to persist last state Jul 28, 2018
EffectEngine.cpp Added new effects "Fire flicker" and "Lightning". Aug 1, 2018
EffectEngine.h Added new effects "Fire flicker" and "Lightning". Aug 1, 2018
Mode.h Travis updates. Included distribution files. Jul 24, 2018
PixelDriver.cpp Initial GECE UART implementation Dec 1, 2017
PixelDriver.h Initial GECE UART implementation Dec 1, 2017
README.md Update README.md for new effects. Aug 1, 2018
SerialDriver.cpp Add View Stream test mode Mar 5, 2017
SerialDriver.h New async E131 backend. Jun 25, 2017
gamma.cpp gamma/brightness calculation fix Nov 24, 2017
gamma.h Add brightness setting to gamma calculation Nov 15, 2017
gulpfile.js Travis updates. Included distribution files. Jul 24, 2018
package.json Removed package-lock.json for now Jul 27, 2018
wshandler.h Added new effects "Fire flicker" and "Lightning". Aug 1, 2018

README.md

ESPixelStick Firmware

Join the chat at https://gitter.im/forkineye/ESPixelStick Donate Build Status

This is the Arduino firmware for the ESP8266 based ESPixelStick. The ESPixelStick is a small wireless E1.31 sACN pixel controller designed to control a single strand of pixels. Pixel limitations are mostly based upon your desired refresh rate, around 680 pixels (4 universes) for a 25ms E1.31 source rate. MQTT support is provided as well for integration into home automation systems where an E1.31 source may not be present.

Since this project began, the firmware has moved beyond just pixel support for those with other ESP8266 based devices. The ESPixelStick firmware now supports outputting E1.31 streams to serial links as well. Note this is not supported on the ESPixelStick hardware, but intended for other ESP8266 devices such as Bill's RenardESP.

Hardware

Being open source, you are free to use the ESPixelStick firmware on the device of your choice. The code however is written specifically for the ESPixelStick. The ESPixelStick V2 utilizes an ESP-01 module and provides high current connectors, fusing, power filtering, a programming interface and proper logic level buffering. If you're in the US and would like to purchase an ESPixelStick, they are available via Amazon. The proceeds go towards things like keeping my wife happy so I can work on this project :)

Requirements

Along with the Arduino IDE, you'll need the following software to build this project:

The following libraries are required:

Important Notes on Compiling and Flashing

  • Device mode is now a compile time option to set your device type and is configured in the top of the main sketch file. Current options are ESPS_MODE_PIXEL and ESPS_MODE_SERIAL. The default is ESPS_MODE_PIXEL for the ESPixelStick hardware.
  • Web pages must be processed, placed into data/www, and uploaded with the upload plugin. Gulp will process the pages and put them in data/www for you. Refer to the html README for more information.
  • In order to use the upload plugin, the ESP8266 must be placed into programming mode and the Arduino serial monitor must be closed.
  • ESP-01 modules must be configured for 1M flash and 128k SPIFFS within the Arduino IDE for OTA updates to work.
  • For best performance, set the CPU frequency to 160MHz (Tools->CPU Frequency). You may experience lag and other issues if running at 80MHz.

Supported Outputs

The ESPixelStick firmware can generate the following outputs from incoming E1.31 streams, however your hardware must support the physical interface.

Pixel Protocols

  • WS2811 / WS2812 / WS2812b
  • GE Color Effects

Serial Protocols

  • DMX512
  • Renard

MQTT Support

MQTT can be configured via the web interface. When enabled, a payload of "ON" will tell the ESPixelStick to override any incoming E1.31 data with MQTT data. When a payload of "OFF" is received, E1.31 processing will resume. All Topics are under the configured top level Topic.

For example, if you enter porch/esps as the topic, the state can be queried from porch/esps and commands can be sent to porch/esps/set

And here's a corresponding configuration for Home Assistant:

light:
  - platform: mqtt_json
    name: "Front Porch ESPixelStick"
    state_topic: "porch/esps"
    command_topic: "porch/esps/set"
    brightness: true
    rgb: true
    effect: true
    effect_list:
      - Solid
      - Blink
      - Flash
      - Rainbow
      - Chase
      - Fire flicker
      - Lightning

Resources

Credits