Idea: Wouldn’t be cool for many McLighting (RGB LED lighting using NeoPixels) to talk to each other and synchronize?
Implementation: Here is my naive attempt at this, which requires McLighting to be served as stand-alone web-client.
Link: https://github.com/toblum/McLighting/tree/experimental/Arduino/MeshyMcLighting
Features
- Uses painlessMesh to create mesh network and broadcasts state to every node
- Does not need WiFi connection to internet, standalone mode + mesh
- Web interface is borrowed from “WS2812FX esp8266” example, completely served on ESP8266
- Can do minimal file upload to SPIFFs
- Completely Async!
- Uses Task Scheduler, no more tickers
- No delays in entire code
- Has RESTful API (same API as McLighting, use set_mode for setting mode, speed, brighness)
- Async Websockets (ws://HOSTNAME/ws on port 80, same API as McLighting)
- Async MQTT/Home Assistant Intergration (Only SERVER connects to outside world)
- Auto Mode (same as McLighting)
- Button Mode (same as McLighting)
- Async WiFiManager for SERVER
Limitations/TODO
- For stability, compile both SERVER and CLIENTS on IwIP variant 1.4 Higher Bandwidth (very flaky in IwIP v2)
- Use Arduino ESP8266 GIT version (Issues with v2.4.1: not memory optimized)
- WS2812FX has delays meant for ESP32. Track issue here NeoAnimationFX has no delays.