WiFi controller for LED panel fixtures.
NOTE: this project is still at its initial development stage.
- Dual web/
MQTT
control interface. - Open Source Hardware (schematics, PCB layout, BOM and enclosure design included).
- Status LED.
- Quick demo mode for installation.
- Serial output debug log for troubleshooting (thru the
ESP8266
USB port). - No extra power source needed, uses the same power as the LED panel.
- Completely cuts power to the LED panel when set to 0% light intensity (using an SPDT Latching relay).
Each instance of the controller exposes a web interface.
The following examples assume a controller configured as led-panel-1.local
.
- At
http://led-panel-1.local/
you'll find some basic controls. - At
http://led-panel-1.local/info
you'll find status info.
Besides that, the controller accepts a few GET
routes:
http://led-panel-1.local/do/on
: Turn the light on at maximum value (same asmax
).http://led-panel-1.local/do/off
: Turn the light off.http://led-panel-1.local/do/lo
: Turn the light on at minimum value.http://led-panel-1.local/do/med
: Turn the light on at medium value.http://led-panel-1.local/do/hi
: Turn the light on at maximum value (same ason
).http://led-panel-1.local/do/up
: Increase the light level by 10%.http://led-panel-1.local/do/down
: Decrease the light level by 10%http://led-panel-1.local/do/reboot
: Reboot the module.http://led-panel-1.local/set/level?value=75
: Turn the light on at 75%.http://led-panel-1.local/set/default?value=50
: Set the default level (for startup) at 50%.http://led-panel-1.local/set/fade-speed?value=5
: Set the fade speed at 5.
The device will publish its state every second in the MDNS_NAME/MQTT_STATUS_TOPIC
(e.g. led-panel-1/status
) topic as a json
object:
{
"lightLevel": {
"current": 75,
"default": 100,
"fadeSpeed": 3,
},
"network": {
"rssi": -59
},
"misc": {
"uptime": 120
}
}
lightLevel
: light dimmer statuscurrent
: current leveldefault
: default levelfadeSpeed
: current fade speed
network
: network connection statusrssi
: current RSSI value
misc
: miscellaneous statusuptime
: number of seconds the board has beenON
(overflows/resets about every 49 days)
As with the Web server, other topics
are available to control the module:
led-panel-1/do/on
led-panel-1/do/off
led-panel-1/do/lo
led-panel-1/do/med
led-panel-1/do/hi
led-panel-1/do/up
led-panel-1/do/down
led-panel-1/do/reboot
led-panel-1/set/level
(value must be sent as payload)led-panel-1/set/default
(value must be sent as payload)led-panel-1/set/fade-speed
(value must be sent as payload)
This project is built using PlatformIO, but I'm sure you can build it with the vanilla Arduino IDE and some patience if you want to :)
Once the project is cloned, copy the template files and edit them to set your configuration.
$ cp lib/Config/Config.sample.h lib/Config/Config.h
$ cp platformio.sample.ini platformio.ini
WIFI_SSID
: The name of your WiFi network.WIFI_PASSWORD
: Password to connect to the network.NETWORK_CONNECTION_CHECK_DELAY
: While connected, the program will make sure connection is up. This is the delay in milliseconds.PANEL_ID
: Id of the panel (alphanumeric).PANEL_DEFAULT_LEVEL
: The default light level for this panel (can be changed later).MDNS_NAME
: Name for this device in the network.MDNS_NETWORK
: Local network name.WEB_SERVER_PORT
: TCP port for the web server.MQTT_SERVER
: MQTT server.MQTT_PORT
: MQTT port.MQTT_RECONNECT_DELAY
: Delay (ms) betweenMQTT
reconnection attempts.MQTT_STATUS_TOPIC
: Topic for the status messages.OTA_PORT
: UDP port for ArduinoOTA.OTA_PASSWORD
: Password for OTA updates.RELAY_SET_PIN
:ESP8266 GPIO
pin to use for the relay'sSET
coil.RELAY_RST_PIN
:ESP8266 GPIO
pin to use for the relay'sRESET
coil.RELAY_COIL_ACTIVATION_TIME
: time (ms) to keep the relay's coil activated (see relay's datasheet).RELAY_FASTEST_CHANGE
: minimum time (ms) between relay changes (throttling).PWM_DIM_PIN
:ESP8266 GPIO
pin to use for thePWM
dimmer.PWM_ON_THRESHOLD
: MaximumPWM
value that makes the LED Panel driver turn the light ON (see comment inDimmer.cpp
).PWM_DEFAULT_FADE_SPEED
: Default fade speed (1
slowest /99
fastest /0
instantaneous)PWM_FASTEST_CHANGE
: minimum time (ms) betweenPWM
changes (throttling).DEMO_JUMPER_PIN
:ESP8266 GPIO
pin to use for thedemo mode
.
upload_port
: your device'sMDNS
full name (based onMDNS_NAME
/PANEL_ID
/MDNS_NETWORK
).upload_flags:
:--port
: set to the same value asOTA_PORT
.--auth
: set to the same value asOTA_PASSWORD
.