WLED build with ALL usermods integrated & selectable

Imagine if you will, you are a hardware person.

You cringe at the thought of following the required instructions to install & configure git, VS Code & Platform IO IDE, then retrieve WLED project.

That gets you no further to your goals of testing some user mods out with some hardware you are trying out that simply installing the pre-built firmware.

So, you then have to follow even more cringe-worthy instructions to integrate multiple usermods, compiling (and cringing again while dealing with the Platform IO fail-the-first-time-and-just-compile-again thing).

Now that you understand the motivation - supporting the non-software hardware hackers among us, here’s the request:

Develop a WLED build that automatically builds an ESP32 (only) firmware which includes every usermod in the usermod folder, adds a configuration menu button for “USERMODS”.

When the “USERMODS” button is selected, the user is presented with a list of usermods, (mutually exclusive) radio button, first ~80 characters of the usermod’s readme.md, and once the radio button is pressed, a button appears below the usermod to enable.

The enable button once pressed integrates that usermod as if someone had done the manual integration and custom firmware build for that usermod, then saves state (including the currently selected usermod so that Usermod’s radio button can display as already selected), then restarts.

(o) Animated_Staircase: This usermod makes your staircase look cool by switching it on with an animation
[ENABLE BUTTON]
( ) Artemis_reciever: Usermod to allow WLED to receive via UDP port from RGB.NET (and therefore add as
… and so on …

This is obviously a long-term project, but I could be quite valuable to many people, particularly if this build variant were automatically built right along with the default ESP32 build

3 Likes

Would you still be able to do ota upgrades?

Good idea!
I doubt that we could include ALL THE MODS, as that will most likely surpass the flash capacity of the ESP32 (we are already at 96% without any mods with the current partition layout), but having the capability to switch usermods on and off in UI would definitely be nice and could enable including some of them by default.

2 Likes

@Aircoookie how about “ModBuild 1”, “ModBuild 2”, “ModBuild 3”, where the usermods in each build # are somehow related. Like Hallway / Stairway usermods definitely get their own “ModBuild”. Sensor related usermods probably get another. Output devices, like OLED displays, get their own build group.

The idea being these get built with #DEFINEs so they can be automatically built during your automated firmware build processing.

The reason for the automated build is to allow OTA upgrades so people can try out usermods pre-built and see what might fit their needs.

To go along with that, the usermod UI should also allow for run-time pin definitions, so if a PIR sensor is on pin 4 and pin 5 for a given usermod, the usermod UI page puts the PIR sensor text and pin # (-1 - undefined), only presenting unused and available pins in the drop-down.

Yeah, I know it’s a big ask, but I know around October / December, it will become increasing valuable when people want to try something out “real quick” and swarm to this discourse group / wled discord server / wled issues page with help building specific .bin’s.

And to @Artacus, my idea is that yes, it would allow for OTA upgrades as long as the ESP32 used has enough capacity (which I think most do).

I doubt this enhancement request would squeeze into an ESP8266 without sacrifices - and custom builds. Maybe if certain sections of WLED “base” code were incompatible with a chosen set of usermods, it could be excluded during compile if a certain #DEFINE were used during the build - saving some code space to be filled by usermod code.

To help even further, I do wonder if the usermod subsystem could be amended / upgraded to allow exact code changes scripted by platform_io_override.ini commands so a build could be automated and made available during regular wled release builds.

I wonder how close some of the v2 usermods are now to allow automated builds.

Guess I’m looking ahead at v3 usermods that can automatically build when coupled with usermod related changes to WLED code / UI - v0.14α maybe.

Hello,
would it be possible to load the effects optional?
I can imagine that not all effects are really needed by each user.
So if usermods and effects could be loaded first, the user could decide which ones he wants to have and keep.
I can’t program and therefore can’t judge if this would save memory, if so, could it possibly lead to the goal?
Please excuse the bad english, it is translated by Deepl :slight_smile:

I have an intermediate idea, that could potentially be implemented more quickly.

Background

  • https://install.wled.me/ currently provides a drop-down with a couple versions selectable, and a single checkbox to enable ethernet, then provides the resulting binary.
  • The discord server has a bot that will build a binary for you, if given the configuration (in platformio.ini style), and supports building from any commit (not just the officially released builds) – fully automatic!
  • There is already UI to configure user mods post-installation…

Solution

  1. Expand the install.wled.me site to provide options:
    a. Checkbox for each user module to enable
    b. [optional] Checkbox to enable debug
    c. [optional] Drop-down for partition layout override (required to enable debug + ethernet + …)
  2. If there’s already a build with those options cached, provide it for install [and done]
  3. Else, generate a custom platformio configuration section
    a. User modules are each just a #define
    b. Debug is similarly simple
    c. Partition layout is also one-line to config section
  4. Then have the bot perform the custom build
  5. When it succeeds, provide it for install (and maybe cache it)

Re-use of existing functionality, and no requirement for changing partition sizes only for this purpose.

Just a thought…

2 Likes

I just have to say I’ve nearly thrown my laptop out the window trying to compile. There seems to be so many ways of doing it, after a week I still can’t.

I think having some common user mods compiles would be great.

Temp and screen

Relay and screen

Dmx and screen

Stairs and screen

I love wled, but so frustrating trying to understand compiling user mods…

In the short term, could someone please to some how to video for us less programming style people