Add light port support

This commit is contained in:
2026-02-15 18:00:55 +01:00
parent c5ab9e854c
commit 7953cd25ba
48 changed files with 6122 additions and 495 deletions

View File

@@ -18,6 +18,48 @@ CONF_POSITION_STATE_ADDRESS = "position_state_address"
CONF_ANGLE_ADDRESS = "angle_address"
CONF_ANGLE_STATE_ADDRESS = "angle_state_address"
CONF_LIGHT_ADDRESS = "address"
CONF_LIGHT_STATE_ADDRESS = "state_address"
CONF_LIGHT_BRIGHTNESS_ADDRESS = "brightness_address"
CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS = "brightness_state_address"
CONF_LIGHT_COLOR_ADDRESS = "color_address"
CONF_LIGHT_COLOR_STATE_ADDRESS = "color_state_address"
CONF_LIGHT_RGBW_ADDRESS = "rgbw_address"
CONF_LIGHT_RGBW_STATE_ADDRESS = "rgbw_state_address"
CONF_LIGHT_HUE_ADDRESS = "hue_address"
CONF_LIGHT_HUE_STATE_ADDRESS = "hue_state_address"
CONF_LIGHT_SATURATION_ADDRESS = "saturation_address"
CONF_LIGHT_SATURATION_STATE_ADDRESS = "saturation_state_address"
CONF_LIGHT_XYY_ADDRESS = "xyy_address"
CONF_LIGHT_XYY_STATE_ADDRESS = "xyy_state_address"
CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS = "color_temperature_address"
CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS = "color_temperature_state_address"
CONF_LIGHT_COLOR_TEMPERATURE_MODE = "color_temperature_mode"
CONF_LIGHT_MIN_KELVIN = "min_kelvin"
CONF_LIGHT_MAX_KELVIN = "max_kelvin"
CONF_LIGHT_RED_ADDRESS = "red_address"
CONF_LIGHT_RED_STATE_ADDRESS = "red_state_address"
CONF_LIGHT_RED_BRIGHTNESS_ADDRESS = "red_brightness_address"
CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS = "red_brightness_state_address"
CONF_LIGHT_GREEN_ADDRESS = "green_address"
CONF_LIGHT_GREEN_STATE_ADDRESS = "green_state_address"
CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS = "green_brightness_address"
CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS = "green_brightness_state_address"
CONF_LIGHT_BLUE_ADDRESS = "blue_address"
CONF_LIGHT_BLUE_STATE_ADDRESS = "blue_state_address"
CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS = "blue_brightness_address"
CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS = "blue_brightness_state_address"
CONF_LIGHT_WHITE_ADDRESS = "white_address"
CONF_LIGHT_WHITE_STATE_ADDRESS = "white_state_address"
CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS = "white_brightness_address"
CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS = "white_brightness_state_address"
LIGHT_COLOR_TEMPERATURE_MODES = [
"relative",
"absolute",
"absolute_float",
]
ADDRESS_DPT_MAP: dict[str, str] = {
CONF_STATE_ADDRESS: "1",
CONF_COMMAND_ADDRESS: "1",
@@ -28,6 +70,38 @@ ADDRESS_DPT_MAP: dict[str, str] = {
CONF_POSITION_STATE_ADDRESS: "5.001",
CONF_ANGLE_ADDRESS: "5.001",
CONF_ANGLE_STATE_ADDRESS: "5.001",
CONF_LIGHT_ADDRESS: "1.001",
CONF_LIGHT_STATE_ADDRESS: "1.001",
CONF_LIGHT_BRIGHTNESS_ADDRESS: "5.001",
CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS: "5.001",
CONF_LIGHT_COLOR_ADDRESS: "232.600",
CONF_LIGHT_COLOR_STATE_ADDRESS: "232.600",
CONF_LIGHT_RGBW_ADDRESS: "251.600",
CONF_LIGHT_RGBW_STATE_ADDRESS: "251.600",
CONF_LIGHT_HUE_ADDRESS: "5.003",
CONF_LIGHT_HUE_STATE_ADDRESS: "5.003",
CONF_LIGHT_SATURATION_ADDRESS: "5.001",
CONF_LIGHT_SATURATION_STATE_ADDRESS: "5.001",
CONF_LIGHT_XYY_ADDRESS: "242.600",
CONF_LIGHT_XYY_STATE_ADDRESS: "242.600",
CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS: "5.001/7.600/9",
CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS: "5.001/7.600/9",
CONF_LIGHT_RED_ADDRESS: "1.001",
CONF_LIGHT_RED_STATE_ADDRESS: "1.001",
CONF_LIGHT_RED_BRIGHTNESS_ADDRESS: "5.001",
CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS: "5.001",
CONF_LIGHT_GREEN_ADDRESS: "1.001",
CONF_LIGHT_GREEN_STATE_ADDRESS: "1.001",
CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS: "5.001",
CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS: "5.001",
CONF_LIGHT_BLUE_ADDRESS: "1.001",
CONF_LIGHT_BLUE_STATE_ADDRESS: "1.001",
CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS: "5.001",
CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS: "5.001",
CONF_LIGHT_WHITE_ADDRESS: "1.001",
CONF_LIGHT_WHITE_STATE_ADDRESS: "1.001",
CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS: "5.001",
CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS: "5.001",
}
ADDRESS_VALUE_TYPE: dict[str, str] = {
@@ -35,6 +109,12 @@ ADDRESS_VALUE_TYPE: dict[str, str] = {
CONF_POSITION_STATE_ADDRESS: "percent",
CONF_ANGLE_ADDRESS: "percent",
CONF_ANGLE_STATE_ADDRESS: "percent",
CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS: "percent",
CONF_LIGHT_SATURATION_STATE_ADDRESS: "percent",
CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS: "percent",
CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS: "percent",
CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS: "percent",
CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS: "percent",
}
ADDRESS_EVENT_TYPE: dict[str, str] = {
@@ -44,4 +124,14 @@ ADDRESS_EVENT_TYPE: dict[str, str] = {
CONF_POSITION_STATE_ADDRESS: "percent",
CONF_ANGLE_ADDRESS: "percent",
CONF_ANGLE_STATE_ADDRESS: "percent",
CONF_LIGHT_BRIGHTNESS_ADDRESS: "percent",
CONF_LIGHT_COLOR_ADDRESS: "232.600",
CONF_LIGHT_RGBW_ADDRESS: "251.600",
CONF_LIGHT_HUE_ADDRESS: "angle",
CONF_LIGHT_SATURATION_ADDRESS: "percent",
CONF_LIGHT_XYY_ADDRESS: "242.600",
CONF_LIGHT_RED_BRIGHTNESS_ADDRESS: "percent",
CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS: "percent",
CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS: "percent",
CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS: "percent",
}