logo elektroda
logo elektroda
X
logo elektroda

OpenBeken WS2812B animations - new HTTP panel integration, PixelAnim driver

p.kaczmarek2  38 5496 Cool? (+6)
📢 Listen (AI):

TL;DR

  • OpenBeken adds a new WS2812B-style LED driver and PixelAnim animation system for BK7231T/BK7231N WiFi modules, targeting per-pixel RGB strips and cloud-free Action/LSC devices.
  • The setup uses autoexec.bat with startDriver SM16703P, SM16703P_Init 16, and startDriver PixelAnim, with no separate pin assignment because the LEDs use hardware SPI pin P16.
  • The feature is said to be enabled in releases past 1.17.600, and SM16703P_Init 16 configures the LED color format.
  • After rebooting, the HTTP panel shows single-color control and predefined animations, and the effects also run in the OBK simulator.
  • PixelAnim may still be missing from the main release, so it may require a custom build or a PR-enabled binary; Home Assistant discovery lacks animation control yet.
Generated by the language model.
LED control panel with brightness, color, and animation options.
OpenBeken, our Tasmota/Esphome style firmware for new chinese WiFi modules with BK7231T, BK7231N and similiar chipsets, has a new WS2812 LED driver - along with animations system. The driver should also work for similiar LED strips, not just WS2812B, so SM16703, etc, is supported as well. This means you can now flash your Action/LSC per-pixel coloured devices and run them without the cloud.

Here I will show you how to run the new driver. This time, no scripting is needed! Keep in mind that I already have shown the per-pixel LED scripting details in the other topic:
https://www.elektroda.com/rtvforum/topic4036716.html

UPDATE - it's now enabled in releases past 1.17.600
Ok, so first, it's important to know that PixelAnim driver may not be yet available in the main release. To check it, open command execution and try starting it:
Screenshot of BK7231T_WB3S_WhiteStripWindows console showing unknown PixelAnim driver.
If it does not start, you need to either enable correct #define in obk_config and compile your version yourself, see:
https://www.elektroda.com/rtvforum/topic4033833.html
or just get an already-enabled version from PRs:
https://github.com/openshwprojects/OpenBK7231T_App/pulls
In either case, check our tutorial to learn how to get binaries compiled online, on Github:
https://www.elektroda.com/rtvforum/topic4033833.html

Now, let's focus on the device configuration.
You will need to create autoexec.bat, see:



Here is the required script:

startDriver SM16703P
SM16703P_Init 16 
startDriver PixelAnim

That's really all you need to run your LEDs! No pin setting required. Those LEDs are always on hardware SPI port pin, P16. Well, the only more thing you may want to configure, is the color format. You can use SM16703P_Init command for that:
Screenshot of a section of instructions for initializing SM16703P LEDs.
Saving and executing (or rebooting your device) should give you extended HTTP panel:
Screenshot of LED lighting control interface.
Here you can either control your device in single color mode or run one of the predefined animations. We will have more animations as the time goes. Keep in mind that settings like led power on/off or brightness are also linked to animations, that means you can control that easily even from Home Assistant.
Animation setting itself is not yet available for Home Assistant Discovery, but we're working on it.
Ok, here are some sample effects, played on our setup from LED smart drawers organiser topic:
LED drawers with animated blue lighting
Animated LED lights mounted on drawers in a workshop.
LED-lit drawers with light effects.
As you can see, animations are working correctly.
It is worth to mention that those LEDs are also working in OBK simulator:
OpenBeken simulator with connected WS2812 LEDs.

Ok, that's all for now. Let me know if the animations are working for you! They should work not only for WS2812B, but also for other similiar chips like SM16703P, etc. I will try to add more advanced animations soon, or maybe I will just port a part of WLED? We will see!

PS: Next feature that is planned to be supported is RGB (IC) + CW (two PWMs) combination

Added after 9 [minutes]:

@divadiow are WS2812B animations working stable for you? I am thinking about adding
#define ENABLE_DRIVER_PIXELANIM 1
to main release.

About Author
p.kaczmarek2
p.kaczmarek2 wrote 14393 posts with rating 12314 , helped 650 times. Been with us since 2014 year.

Comments

divadiow 30 May 2024 22:40

for the short periods I was testing yes. I'll leave one anim going all night tonight [Read more]

p.kaczmarek2 30 May 2024 22:59

I've checked things again and decided to give it a chance, it's enabled in release 1.17.600 [Read more]

divadiow 31 May 2024 06:59

rainbow cycle running. I realised last night my strip is GRB https://obrazki.elektroda.pl/9501311000_1717104552_thumb.jpg Added after 7 [hours] 31 [minutes]: still going strong ... [Read more]

p.kaczmarek2 31 May 2024 12:38

Ok so now it's time to also add a CW + RGB IC integration. By that, I mean a device that has: - two PWM pins for Cool White and Warm White colors - WS2812B or similiar strip I will do that entirely... [Read more]

divadiow 09 Jun 2024 12:43

I didn't notice you had completed this. annoyingly this device , with unused CW and W, looks to be missing some components for those channels https://obrazki.elektroda.pl/7203194600_1717921058_thumb.jpg... [Read more]

divadiow 11 Jun 2024 21:48

thanks @dedamraz. of course it is. SM16703P_Init GRB animations look like how theyre meant to now https://obrazki.elektroda.pl/9165249800_1718135296_thumb.jpg [Read more]

p.kaczmarek2 12 Jun 2024 10:14

I have split SPI DMA backend into separate file and added SM15155 support. @divadiow can you check whether last binary from my PR still works for you? Or did I break something? https://github.com/openshwprojects/OpenBK7231T_App/pull/1263 Related... [Read more]

divadiow 12 Jun 2024 10:27

it seems fine with my WS2812B. All animation colours are what I would expect and the colour picker is as accurate as before [Read more]

p.kaczmarek2 12 Jun 2024 11:05

Ok so SM15155 driver is merged. We're officialy the first open source project to support SM15155 i guess it should be possible to solder transistors and resistors there to get CW running [Read more]

divadiow 12 Jun 2024 11:11

yes, sure. i just rather they'd already be there :) I'd have to use normal sized ones I guess or delicately try to solder the little ones from a donor device in my parts box [Read more]

twoenter 22 Dec 2024 20:58

Is there also already support for RGBIC + CCTIC ledstrips based on SM16703? Like this one: https://www.elektroda.com/rtvforum/topic4091111.html [Read more]

Vein 09 Jan 2025 00:58

@ . Any chance of controlling the animations from HA? [Read more]

p.kaczmarek2 09 Jan 2025 01:01

We can look into this soon, but for the moment you'll need to make the button manually: Home Assistant - how to create an event trigger button, MQTT, dashboard . And yes you'll have to wait for the... [Read more]

Vein 10 Jan 2025 15:28

. the problem is that I don't know what command to send over mqtt to make the individual animations visible [Read more]

p.kaczmarek2 10 Jan 2025 16:04

Such things are in the documentation: https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/commands.md https://obrazki.elektroda.pl/6676453600_1736521449_bigthumb.jpg . Start by checking... [Read more]

Vein 10 Jan 2025 16:06

thank you [Read more]

divadiow 26 Mar 2025 22:36

Not exactly a professional installation but here's Rainbow Cycle PixelAnim brightening up the holiday boat this week ❤️ [Read more]

p.kaczmarek2 26 Mar 2025 23:44

Very nice, are you also going to try running bulbs with DDP? We could try to make such a project. Btw, today i've ordered: RGBCW, 1m 30 IP65, White PCB, CHINA for testing with OBK [Read more]

divadiow 27 Mar 2025 11:55

DDP is one of the many things I've yet to play with. The recent xlights chats were intriguing. Id definitely like more animation options. I should explore what can be achieved within OBK too using... [Read more]

FAQ

TL;DR: OpenBeken PixelAnim is ready for addressable LEDs: since release 1.17.600, "no scripting is needed" for many WS2812B and SM16703P setups. This FAQ helps OpenBeken users enable the driver, fix GRB color order, wire backup-data strips, and plan MQTT or Home Assistant control from the HTTP panel. [#21101527]

Why it matters: It turns cloud-tied RGBIC devices into locally controlled OpenBeken lights with built-in animations, HTTP control, and expanding multi-backend support.

Option Setup method Pin/config detail Current status in thread
Older per-pixel scripting Manual scripting User-defined logic Already documented separately
PixelAnim + SM16703P Built-in driver + autoexec.bat Hardware SPI on P16 Enabled from 1.17.600
RGB IC + double PWM CW PixelAnim update RGBIC plus 2 PWM white channels Added in later thread update
Future DDP/DMX direction Shared LED backend work Network or RS485 backend concept Under active development

Key insight: For most supported strips, PixelAnim works by starting SM16703P and PixelAnim together, then setting the correct color order. The most common real-world fix is changing the strip format to GRB when colors look wrong. [#21115800]

Quick Facts

  • PixelAnim was explicitly enabled in OpenBeken release 1.17.600 after initial testing, moving it from PR-only availability into release builds. [#21101527]
  • The minimal startup script uses 3 commands: startDriver SM16703P, SM16703P_Init 16, and startDriver PixelAnim. [#21101474]
  • The default addressable LED path in this setup uses hardware SPI on pin P16, with no extra pin mapping required. [#21101474]
  • Long-run stability was confirmed after an animation ran all night and was still working roughly 7 hours 31 minutes later. [#21101563]
  • BK7238 timing for WS2811 was reported OK again in general release 1.18.159 after appearing too fast in 1.18.145. [#21646220]

How do I enable and configure the PixelAnim driver in OpenBeken for a WS2812B or SM16703P LED strip?

Enable PixelAnim by using a build that includes it, then start both the LED transport and animation driver. In release builds, it was enabled from 1.17.600. Configure the strip with SM16703P_Init, then use the HTTP panel for color or effect control. "PixelAnim" is an OpenBeken animation driver that generates built-in effects for addressable LED strips, using the existing per-pixel LED backend instead of user scripts. [#21101527]

What is PixelAnim in OpenBeken, and how does it differ from the older per-pixel scripting approach?

PixelAnim is the built-in animation system for addressable LEDs in OpenBeken. It differs from the older method because you do not need custom scripting for basic effects. The original post states, "no scripting is needed", while older per-pixel LED control was documented in a separate scripting topic. PixelAnim also integrates with the extended HTTP panel, where you can select single-color mode or predefined animations directly. [#21101474]

Why doesn’t PixelAnim start in some OpenBeken builds, and how can I check whether my firmware includes it?

PixelAnim may not start because some older or custom builds did not include the driver. Check it by opening the command executor and trying to start PixelAnim directly. If it fails, use a build from a PR or compile your own with the required define enabled. Before release 1.17.600, the thread clearly warned that PixelAnim might not yet be available in the main release. [#21101474]

What should an autoexec.bat file look like to start SM16703P and PixelAnim on pin P16 in OpenBeken?

Use this 3-step startup file:
  1. startDriver SM16703P
  2. SM16703P_Init 16
  3. startDriver PixelAnim
That is the exact example shown in the thread. It uses hardware SPI on P16, so no extra pin assignment is required for that setup. After saving autoexec.bat, execute it or reboot the device to expose the extended HTTP panel. [#21101474]

How can I fix wrong colors on a GRB LED strip in OpenBeken using SM16703P_Init?

Fix wrong colors by setting the strip’s color order explicitly to GRB. A user reported that animations looked wrong until they realized their strip was GRB, then confirmed SM16703P_Init GRB made the animations look correct. This is the key fix when red and green appear swapped on WS2812B-like strips. [#21115800]

Why are SM16703P_Init color format arguments case sensitive, and what problems can lowercase values cause on ESP builds?

They are case sensitive because the driver expects uppercase channel letters like R,G,B,C,W. A lowercase format such as grb triggered an explicit parser error, then caused an ESP panic when the user tried Toggle Light. The logged error said Invalid color 'g' in format 'grb', and the device later rebooted after a Guru Meditation Error on 2025-08-17. [#21637465]

How does OpenBeken handle RGB IC plus double-PWM CW devices, such as Action LSC lights with RGBIC and warm/cool white channels?

OpenBeken added PixelAnim support for devices that combine addressable RGB IC LEDs with two PWM white channels. The thread describes these as devices with two PWM pins for cool and warm white plus a WS2812B or similar strip. The author first modeled the setup in the simulator, then posted that PixelAnim had been updated to support RGB IC + double PWM (CW) devices used in some Action LSC lights. [#21101720]

What is DDP in the context of OpenBeken lighting, and how could it be used for bulbs or distributed animations?

DDP is discussed as a future network-based way to distribute animation data between OpenBeken devices. The thread proposes two models: one OBK unit sending pixel data to around 5 to 10 bulbs over UDP, or chained bulbs forwarding the remaining pixel stream. The goal is distributed animations where one controller coordinates multiple RGBW nodes, but the posts present it as an idea under exploration, not a finished feature. [#21646236]

How can I control PixelAnim animations from Home Assistant over MQTT before Home Assistant Discovery support is added?

Control them manually by creating a Home Assistant button that sends OpenBeken commands over MQTT. The thread says Discovery support for animation selection is not ready yet, so you must define the control yourself. The maintainer explicitly told users to build the button manually and test commands first in the OBK command line before moving them into Home Assistant. [#21384322]

Where can I find the OpenBeken commands for selecting or triggering PixelAnim effects from the command line or Home Assistant?

Find them in the OpenBeken commands.md documentation and test them first in the device command line. The maintainer answered this directly when asked what MQTT command exposes individual animations for Home Assistant. That makes the command-line interface the first validation step before using the same commands through MQTT automation or dashboard buttons. [#21386723]

How does SM15155 support in OpenBeken compare with SM16703P or WS2812B support for addressable LED strips?

SM15155 support was added later as an extension of the same addressable LED work, not as a replacement for SM16703P or WS2812B support. After refactoring the SPI DMA backend, the maintainer added SM15155 support and then merged it. A WS2812B user tested the related binary and reported animation colors and the color picker still behaved correctly after the change. [#21116231]

What troubleshooting steps help when WS2811 or WS2812 animation timing looks too fast or inconsistent on BK7238 and other OpenBeken targets?

Start by comparing behavior across firmware versions and hardware targets. One tester reported BK7238 WS2811 timings were too fast on 1.18.145, but looked correct again on 1.18.159 and the related PR build. Cross-checking another target also helped: the same PR was later confirmed working on BK7231N, BK7238, BL602, and ESP32-C3. [#21646220]

How could support for RGBIC + CCTIC LED strips based on SM16703 be implemented or configured in OpenBeken?

The thread suggests implementing it by extending the same combined architecture already used for RGB IC plus dual-PWM white channels. That means reusing the addressable RGB path and pairing it with separate white-channel control, rather than treating it as a basic single-mode strip. A later user asked specifically about RGBIC + CCTIC on 2024-12-22, but the thread does not show a final, published configuration example for that exact strip class. [#21359224]

When wiring WS2813 or WS2815 strips, how should DI, BI, DO, and BO be connected for first-pixel backup and controller compatibility?

Connect DO to DI and BO to BI between strips. At the controller end, connect the controller signal to both DI and BI if you want first-pixel backup. The thread’s conclusion says leaving BI unconnected at the first pixel removes the backup path if that first LED fails. This wiring preserves the bypass behavior that keeps the rest of the strip working when one pixel dies. [#21653933]

What naming makes the most sense for shared per-pixel LED APIs in OpenBeken: LED_Start, Strip_Start, PIX_Start, or something else?

Strip_Start and related Strip_ names were the preferred direction in the thread. The maintainer considered renaming core per-pixel functions to LED_Start, then to Strip_Start, while another participant argued strip could imply non-addressable LEDs and suggested ALED_, PIX_, or DLED_. The latest stated preference was clear: "I will probably use Strip_ prefix". [#21647617]
Generated by the language model.
%}