-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
Add FSEQ usermod (SD playback + FPP) #5395
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 2 commits
e25ee04
1b034b4
6948043
8599e9d
832e6fa
ef4e4e0
b1d49b5
5c1ad63
e3f6677
46cfcf7
aaa0a7e
663f3fa
d242346
e4d7a4c
d333b8c
106f2cc
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,122 @@ | ||
| # ✨ Usermod FSEQ ✨ | ||
|
|
||
| > **Created original by: Andrej Chrcek** | ||
|
|
||
| > **Updatet by: Danit2** | ||
|
|
||
| Welcome to the **Usermod FSEQ** project! | ||
| This module extends your WLED setup by enabling FSEQ file playback from an SD card, including a web UI and UDP remote control. It combines creativity with functionality to enhance your lighting experience. | ||
|
|
||
| --- | ||
|
|
||
| # FSEQ Web UI | ||
|
|
||
| Access the interface via: | ||
|
|
||
| http://yourIP/fsequi | ||
|
|
||
| or over the WLED Infotab | ||
|
|
||
| <img width="792" height="206" alt="image" src="https://github.com/user-attachments/assets/e58693ec-afe8-4c28-8343-5b3382cd10ef" /> | ||
|
|
||
| --- | ||
|
|
||
| # SD & FSEQ Usermod for WLED | ||
|
|
||
| This usermod adds support for playing FSEQ files from an SD card and provides a web interface for managing SD files and controlling FSEQ playback via HTTP and UDP. | ||
|
|
||
| It supports configurable SPI pin settings when using SD over SPI. | ||
|
|
||
| The usermod exposes several HTTP endpoints for file management and playback control. | ||
|
|
||
| --- | ||
|
|
||
| ## Features | ||
|
|
||
| - **FSEQ Playback** – Play FSEQ files from an SD card. | ||
| - **Web UI** – Manage SD files (list, upload, delete) and control playback. | ||
| - **UDP Synchronization** – Remote control via UDP packets. | ||
| - **Configurable SPI Pins** – SPI pin assignments can be configured via WLED’s Usermods settings (JSON). | ||
|
|
||
| --- | ||
|
|
||
| ## Installation | ||
|
|
||
| ### Configure PlatformIO | ||
|
|
||
| Add the following to your `platformio_override.ini` (or `platformio.ini`): | ||
|
|
||
| [env:esp32dev_V4] | ||
| custom_usermods = FSEQ | ||
|
|
||
| --- | ||
|
|
||
| ### Storage Configuration | ||
|
|
||
| - If you use **SD over SPI**, the build flag | ||
| `-D WLED_USE_SD_SPI` | ||
| will be enabled automatically (default behavior). | ||
|
|
||
| - If you use **SD via MMC**, you must manually set the build flag: | ||
| `-D WLED_USE_SD_MMC` | ||
|
|
||
| --- | ||
|
|
||
| ## Available Endpoints | ||
|
|
||
| ### SD Management | ||
|
|
||
| GET /sd/ui | ||
| Returns the main HTML interface for the SD & FSEQ Manager. | ||
|
|
||
| GET /sd/list | ||
| Displays an HTML page listing all files on the SD card, including options to delete files and upload new ones. | ||
|
|
||
| POST /sd/upload | ||
| Handles file uploads using multipart/form-data. | ||
|
|
||
| GET /sd/delete?path=/filename | ||
| Deletes the specified file from the SD card. | ||
| Example: /sd/delete?path=/example.fseq | ||
|
|
||
| --- | ||
|
|
||
| ### FSEQ Control | ||
|
|
||
| GET /fseq/list | ||
| Returns an HTML page listing all .fseq and .FSEQ files found on the SD card. Each file includes a play button. | ||
|
|
||
|
Comment on lines
+73
to
+90
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Document these list endpoints as JSON, not HTML.
🤖 Prompt for AI Agents |
||
| GET /fseq/start?file=/animation.fseq&t=10 | ||
| Starts playback of the selected FSEQ file. | ||
| Optional parameter: t = time offset in seconds. | ||
|
|
||
| GET /fseq/stop | ||
| Stops the current FSEQ playback and clears the active session. | ||
|
|
||
| GET /fseqfilelist | ||
| Returns a JSON list of all FSEQ files on the SD card. | ||
|
|
||
|
coderabbitai[bot] marked this conversation as resolved.
|
||
| --- | ||
|
|
||
| ## Configurable SPI Pin Settings | ||
|
|
||
| Default SPI pin assignments for SD over SPI: | ||
|
|
||
| #ifdef WLED_USE_SD_SPI | ||
| int8_t UsermodFseq::configPinSourceSelect = 5; | ||
| int8_t UsermodFseq::configPinSourceClock = 18; | ||
| int8_t UsermodFseq::configPinPoci = 19; | ||
| int8_t UsermodFseq::configPinPico = 23; | ||
| #endif | ||
|
coderabbitai[bot] marked this conversation as resolved.
Outdated
|
||
|
|
||
| These values can be modified via the WLED Usermods settings tab without recompiling the firmware. | ||
|
|
||
| After making changes, you must reboot the device. | ||
|
|
||
| --- | ||
|
|
||
| ## Summary | ||
|
|
||
| The SD & FSEQ Usermod for WLED enables FSEQ playback from an SD card with a full-featured web interface and UDP synchronization. With configurable SPI pin settings, it integrates seamlessly into WLED without modifying the core code. | ||
|
|
||
| For further customization or support, please refer to the project documentation or open an issue on GitHub. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| Import("env") | ||
|
|
||
| # Reference to the current build environment | ||
| projenv = env | ||
|
|
||
| # Read the custom_usermods option from platformio.ini (WLED 0.16 structure) | ||
| custom_usermods = projenv.GetProjectOption("custom_usermods", default="") | ||
|
|
||
| # Convert the string into a clean uppercase list | ||
| # Supports comma or space separated entries | ||
| usermod_list = [ | ||
| u.strip().upper() | ||
| for u in custom_usermods.replace(",", " ").split() | ||
| ] | ||
|
|
||
| # Check if FSEQ or wildcard "*" is selected | ||
| fseq_enabled = ( | ||
| "FSEQ" in usermod_list or | ||
| "*" in usermod_list | ||
| ) | ||
|
|
||
| # Get current CPPDEFINES (build flags) | ||
| cpp_defines = projenv.get("CPPDEFINES", []) | ||
|
|
||
| # Extract define names into a simple list | ||
| define_names = [] | ||
| for d in cpp_defines: | ||
| if isinstance(d, tuple): | ||
| define_names.append(d[0]) | ||
| else: | ||
| define_names.append(d) | ||
|
|
||
| # Check if MMC or SPI is already enabled | ||
| mmc_enabled = "WLED_USE_SD_MMC" in define_names | ||
| spi_enabled = "WLED_USE_SD_SPI" in define_names | ||
|
|
||
| # Logic: | ||
| # If FSEQ usermod is selected | ||
| # AND neither MMC nor SPI is already defined | ||
| # then automatically enable SPI | ||
| if fseq_enabled and not mmc_enabled and not spi_enabled: | ||
| print("FSEQ usermod detected -> enabling WLED_USE_SD_SPI") | ||
| projenv.Append(CPPDEFINES=["WLED_USE_SD_SPI"]) |
Uh oh!
There was an error while loading. Please reload this page.