feat: Enhance DALI Gateway with RGBW and RGBCW support

- Added support for RGBW and RGBCW color modes in the DALI Gateway.
- Updated JSON color mode parsing to handle new color types.
- Extended the StoreDt8SceneSnapshot function to include white, amber, and free color parameters.
- Introduced new methods in DaliGatewayBridge for setting RGBW, RGBCW, and RGBWAF colors.
- Modified KnxDaliChannel to send RGBW and RGBCW colors based on the color type.
- Updated parameter types and definitions in the KNX product XML files to accommodate new color modes.
- Enhanced README with migration details and validation instructions.

Signed-off-by: Tony <tonylu@tony-cloud.com>
This commit is contained in:
Tony
2026-05-29 11:32:10 +08:00
parent f39ae6f0c6
commit c60ef2ccde
19 changed files with 554 additions and 18 deletions
@@ -82,6 +82,8 @@ enum class DaliDt8SceneColorMode {
kDisabled,
kColorTemperature,
kRgb,
kRgbw,
kRgbcw,
};
struct DaliDomainSnapshot {
@@ -158,7 +160,8 @@ class DaliDomainService {
bool storeDt8SceneSnapshot(uint8_t gateway_id, int short_address, int scene, int brightness,
DaliDt8SceneColorMode color_mode = DaliDt8SceneColorMode::kDisabled,
int color_temperature = 0, int red = 0, int green = 0,
int blue = 0) const;
int blue = 0, int white = 0, int amber = 0,
int freecolour = 255, int rgbwaf_control = -1) const;
bool storeDt8PowerOnLevelSnapshot(uint8_t gateway_id, int short_address, int level) const;
bool storeDt8SystemFailureLevelSnapshot(uint8_t gateway_id, int short_address, int level) const;
bool setBright(uint8_t gateway_id, int short_address, int brightness) const;
@@ -166,6 +169,11 @@ class DaliDomainService {
bool setColTemp(uint8_t gateway_id, int short_address, int kelvin) const;
bool setColourRaw(uint8_t gateway_id, int raw_addr, int x, int y) const;
bool setColourRGB(uint8_t gateway_id, int short_address, int r, int g, int b) const;
bool setColourRGBW(uint8_t gateway_id, int short_address, int r, int g, int b, int w) const;
bool setColourRGBCW(uint8_t gateway_id, int short_address, int r, int g, int b,
int cool_white, int warm_white) const;
bool setColourRGBWAF(uint8_t gateway_id, int short_address, int r, int g, int b, int w,
int amber, int freecolour, int control = -1) const;
bool on(uint8_t gateway_id, int short_address) const;
bool off(uint8_t gateway_id, int short_address) const;
bool off(int short_address) const;