Skip to content

Add 4-PWM RGBW LED mode#2162

Open
lumixen wants to merge 3 commits into
openshwprojects:mainfrom
lumixen:rgbw-4pwm-mode
Open

Add 4-PWM RGBW LED mode#2162
lumixen wants to merge 3 commits into
openshwprojects:mainfrom
lumixen:rgbw-4pwm-mode

Conversation

@lumixen

@lumixen lumixen commented Jul 13, 2026

Copy link
Copy Markdown

Summary

Adds Flag 52 (OBK_FLAG_LED_4PWM_RGBW_MODE) for 4-PWM RGB + independent White LED strips, exposed as a single HA light entity with RGB/White color modes, including led_enableWhite command, led_colorMode MQTT topic, HA discovery via template schema, Web UI mode selector with dynamic RGB picker hide/show, and selftest coverage.

I have tested and am using these changes for the Magic Home RGBW controller:

RGB Mode:

White Mode:

HA light entity:

Essentially this PR implements a request for RGB+separate white channel from https://www.elektroda.pl/rtvforum/topic4003384.html

MQTT structure

Direction Topic Value
Set RGB cmnd/<device>/led_basecolor_rgb RRGGBB hex
Set White cmnd/<device>/led_enableWhite any value (ignored)
Set enable cmnd/<device>/led_enableAll 0 or 1
Set brightness cmnd/<device>/led_dimmer 0100
Get RGB state <device>/led_basecolor_rgb/get RRGGBB hex
Get color mode <device>/led_colorMode/get "rgb" or "white"
Get enable <device>/led_enableAll/get 0 or 1
Get dimmer <device>/led_dimmer/get 0100

HA discover payload:

{
  "rgb_cmd_tpl": "{{'#%02x%02x%02x0000'|format(red,green,blue)}}",
  "rgb_val_tpl": "{{ value[0:2]|int(base=16) }},{{ value[2:4]|int(base=16) }},{{ value[4:6]|int(base=16) }}",
  "rgb_stat_t": "~/led_basecolor_rgb/get",
  "rgb_cmd_t": "cmnd/<device>/led_basecolor_rgb",
  "whit_cmd_t": "cmnd/<device>/led_enableWhite",
  "whit_scl": 100,
  "clrm_stat_t": "~/led_colorMode/get",
  "stat_t": "~/led_enableAll/get",
  "cmd_t": "cmnd/<device>/led_enableAll",
  "bri_stat_t": "~/led_dimmer/get",
  "bri_cmd_t": "cmnd/<device>/led_dimmer",
  "bri_scl": 100
}

@openshwprojects, thank you for all your great work in making this project possible. Please let me know your feedback and whether exposing this feature as a new flag is an acceptable approach.

@lumixen
lumixen force-pushed the rgbw-4pwm-mode branch 5 times, most recently from 897078f to 199268d Compare July 19, 2026 10:26
@openshwprojects

Copy link
Copy Markdown
Owner

lumixen added 3 commits July 24, 2026 13:35
- Store colorMode (RGB/White) in mode slot high byte
- Reuse temperature slot for white channel when flag 52 is active
- Add HAL_LED_PackModeAndColorMode / UnpackModeAndColorMode helpers
- Update all 14 HAL implementations, flags docs
- Struct stays at 64 bytes, zero format change
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants