KNX passive group addresses (#48009)

This commit is contained in:
Matthias Alphart 2021-03-30 18:14:38 +02:00 committed by GitHub
parent e9f2062f1b
commit 338be8c70b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -34,6 +34,7 @@ ga_validator = vol.Any(
vol.All(vol.Coerce(int), vol.Range(min=1, max=65535)),
msg="value does not match pattern for KNX group address '<main>/<middle>/<sub>', '<main>/<sub>' or '<free>' (eg.'1/2/3', '9/234', '123')",
)
ga_list_validator = vol.All(cv.ensure_list, [ga_validator])
ia_validator = vol.Any(
cv.matches_regex(IndividualAddress.ADDRESS_RE.pattern),
@ -99,7 +100,7 @@ class BinarySensorSchema:
vol.Optional(CONF_SYNC_STATE, default=True): sync_state_validator,
vol.Optional(CONF_IGNORE_INTERNAL_STATE, default=False): cv.boolean,
vol.Optional(CONF_INVERT, default=False): cv.boolean,
vol.Required(CONF_STATE_ADDRESS): ga_validator,
vol.Required(CONF_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_CONTEXT_TIMEOUT): vol.All(
vol.Coerce(float), vol.Range(min=0, max=10)
),
@ -169,27 +170,27 @@ class ClimateSchema:
vol.Optional(
CONF_TEMPERATURE_STEP, default=DEFAULT_TEMPERATURE_STEP
): vol.All(float, vol.Range(min=0, max=2)),
vol.Required(CONF_TEMPERATURE_ADDRESS): ga_validator,
vol.Required(CONF_TARGET_TEMPERATURE_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_TARGET_TEMPERATURE_ADDRESS): ga_validator,
vol.Optional(CONF_SETPOINT_SHIFT_ADDRESS): ga_validator,
vol.Optional(CONF_SETPOINT_SHIFT_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_OPERATION_MODE_ADDRESS): ga_validator,
vol.Optional(CONF_OPERATION_MODE_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_CONTROLLER_STATUS_ADDRESS): ga_validator,
vol.Optional(CONF_CONTROLLER_STATUS_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_CONTROLLER_MODE_ADDRESS): ga_validator,
vol.Optional(CONF_CONTROLLER_MODE_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_HEAT_COOL_ADDRESS): ga_validator,
vol.Optional(CONF_HEAT_COOL_STATE_ADDRESS): ga_validator,
vol.Required(CONF_TEMPERATURE_ADDRESS): ga_list_validator,
vol.Required(CONF_TARGET_TEMPERATURE_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_TARGET_TEMPERATURE_ADDRESS): ga_list_validator,
vol.Optional(CONF_SETPOINT_SHIFT_ADDRESS): ga_list_validator,
vol.Optional(CONF_SETPOINT_SHIFT_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_OPERATION_MODE_ADDRESS): ga_list_validator,
vol.Optional(CONF_OPERATION_MODE_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_CONTROLLER_STATUS_ADDRESS): ga_list_validator,
vol.Optional(CONF_CONTROLLER_STATUS_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_CONTROLLER_MODE_ADDRESS): ga_list_validator,
vol.Optional(CONF_CONTROLLER_MODE_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_HEAT_COOL_ADDRESS): ga_list_validator,
vol.Optional(CONF_HEAT_COOL_STATE_ADDRESS): ga_list_validator,
vol.Optional(
CONF_OPERATION_MODE_FROST_PROTECTION_ADDRESS
): ga_validator,
vol.Optional(CONF_OPERATION_MODE_NIGHT_ADDRESS): ga_validator,
vol.Optional(CONF_OPERATION_MODE_COMFORT_ADDRESS): ga_validator,
vol.Optional(CONF_OPERATION_MODE_STANDBY_ADDRESS): ga_validator,
vol.Optional(CONF_ON_OFF_ADDRESS): ga_validator,
vol.Optional(CONF_ON_OFF_STATE_ADDRESS): ga_validator,
): ga_list_validator,
vol.Optional(CONF_OPERATION_MODE_NIGHT_ADDRESS): ga_list_validator,
vol.Optional(CONF_OPERATION_MODE_COMFORT_ADDRESS): ga_list_validator,
vol.Optional(CONF_OPERATION_MODE_STANDBY_ADDRESS): ga_list_validator,
vol.Optional(CONF_ON_OFF_ADDRESS): ga_list_validator,
vol.Optional(CONF_ON_OFF_STATE_ADDRESS): ga_list_validator,
vol.Optional(
CONF_ON_OFF_INVERT, default=DEFAULT_ON_OFF_INVERT
): cv.boolean,
@ -230,13 +231,13 @@ class CoverSchema:
SCHEMA = vol.Schema(
{
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_MOVE_LONG_ADDRESS): ga_validator,
vol.Optional(CONF_MOVE_SHORT_ADDRESS): ga_validator,
vol.Optional(CONF_STOP_ADDRESS): ga_validator,
vol.Optional(CONF_POSITION_ADDRESS): ga_validator,
vol.Optional(CONF_POSITION_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_ANGLE_ADDRESS): ga_validator,
vol.Optional(CONF_ANGLE_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_MOVE_LONG_ADDRESS): ga_list_validator,
vol.Optional(CONF_MOVE_SHORT_ADDRESS): ga_list_validator,
vol.Optional(CONF_STOP_ADDRESS): ga_list_validator,
vol.Optional(CONF_POSITION_ADDRESS): ga_list_validator,
vol.Optional(CONF_POSITION_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_ANGLE_ADDRESS): ga_list_validator,
vol.Optional(CONF_ANGLE_STATE_ADDRESS): ga_list_validator,
vol.Optional(
CONF_TRAVELLING_TIME_DOWN, default=DEFAULT_TRAVEL_TIME
): cv.positive_float,
@ -295,10 +296,10 @@ class FanSchema:
SCHEMA = vol.Schema(
{
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Required(KNX_ADDRESS): ga_validator,
vol.Optional(CONF_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_OSCILLATION_ADDRESS): ga_validator,
vol.Optional(CONF_OSCILLATION_STATE_ADDRESS): ga_validator,
vol.Required(KNX_ADDRESS): ga_list_validator,
vol.Optional(CONF_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_OSCILLATION_ADDRESS): ga_list_validator,
vol.Optional(CONF_OSCILLATION_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_MAX_STEP): cv.byte,
}
)
@ -333,10 +334,10 @@ class LightSchema:
COLOR_SCHEMA = vol.Schema(
{
vol.Optional(KNX_ADDRESS): ga_validator,
vol.Optional(CONF_STATE_ADDRESS): ga_validator,
vol.Required(CONF_BRIGHTNESS_ADDRESS): ga_validator,
vol.Optional(CONF_BRIGHTNESS_STATE_ADDRESS): ga_validator,
vol.Optional(KNX_ADDRESS): ga_list_validator,
vol.Optional(CONF_STATE_ADDRESS): ga_list_validator,
vol.Required(CONF_BRIGHTNESS_ADDRESS): ga_list_validator,
vol.Optional(CONF_BRIGHTNESS_STATE_ADDRESS): ga_list_validator,
}
)
@ -344,25 +345,25 @@ class LightSchema:
vol.Schema(
{
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(KNX_ADDRESS): ga_validator,
vol.Optional(CONF_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_BRIGHTNESS_ADDRESS): ga_validator,
vol.Optional(CONF_BRIGHTNESS_STATE_ADDRESS): ga_validator,
vol.Optional(KNX_ADDRESS): ga_list_validator,
vol.Optional(CONF_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_BRIGHTNESS_ADDRESS): ga_list_validator,
vol.Optional(CONF_BRIGHTNESS_STATE_ADDRESS): ga_list_validator,
vol.Exclusive(CONF_INDIVIDUAL_COLORS, "color"): {
vol.Inclusive(CONF_RED, "colors"): COLOR_SCHEMA,
vol.Inclusive(CONF_GREEN, "colors"): COLOR_SCHEMA,
vol.Inclusive(CONF_BLUE, "colors"): COLOR_SCHEMA,
vol.Optional(CONF_WHITE): COLOR_SCHEMA,
},
vol.Exclusive(CONF_COLOR_ADDRESS, "color"): ga_validator,
vol.Optional(CONF_COLOR_STATE_ADDRESS): ga_validator,
vol.Optional(CONF_COLOR_TEMP_ADDRESS): ga_validator,
vol.Optional(CONF_COLOR_TEMP_STATE_ADDRESS): ga_validator,
vol.Exclusive(CONF_COLOR_ADDRESS, "color"): ga_list_validator,
vol.Optional(CONF_COLOR_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_COLOR_TEMP_ADDRESS): ga_list_validator,
vol.Optional(CONF_COLOR_TEMP_STATE_ADDRESS): ga_list_validator,
vol.Optional(
CONF_COLOR_TEMP_MODE, default=DEFAULT_COLOR_TEMP_MODE
): vol.All(vol.Upper, cv.enum(ColorTempModes)),
vol.Exclusive(CONF_RGBW_ADDRESS, "color"): ga_validator,
vol.Optional(CONF_RGBW_STATE_ADDRESS): ga_validator,
vol.Exclusive(CONF_RGBW_ADDRESS, "color"): ga_list_validator,
vol.Optional(CONF_RGBW_STATE_ADDRESS): ga_list_validator,
vol.Optional(CONF_MIN_KELVIN, default=DEFAULT_MIN_KELVIN): vol.All(
vol.Coerce(int), vol.Range(min=1)
),
@ -415,7 +416,7 @@ class SceneSchema:
SCHEMA = vol.Schema(
{
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Required(KNX_ADDRESS): ga_validator,
vol.Required(KNX_ADDRESS): ga_list_validator,
vol.Required(CONF_SCENE_NUMBER): cv.positive_int,
}
)
@ -434,8 +435,8 @@ class SensorSchema:
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_SYNC_STATE, default=True): sync_state_validator,
vol.Optional(CONF_ALWAYS_CALLBACK, default=False): cv.boolean,
vol.Required(CONF_STATE_ADDRESS): ga_validator,
vol.Required(CONF_TYPE): sensor_type_validator,
vol.Required(CONF_STATE_ADDRESS): ga_list_validator,
}
)
@ -451,8 +452,8 @@ class SwitchSchema:
{
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_INVERT, default=False): cv.boolean,
vol.Required(KNX_ADDRESS): ga_validator,
vol.Optional(CONF_STATE_ADDRESS): ga_validator,
vol.Required(KNX_ADDRESS): ga_list_validator,
vol.Optional(CONF_STATE_ADDRESS): ga_list_validator,
}
)
@ -483,18 +484,18 @@ class WeatherSchema:
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_SYNC_STATE, default=True): sync_state_validator,
vol.Optional(CONF_KNX_CREATE_SENSORS, default=False): cv.boolean,
vol.Required(CONF_KNX_TEMPERATURE_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_BRIGHTNESS_SOUTH_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_BRIGHTNESS_EAST_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_BRIGHTNESS_WEST_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_BRIGHTNESS_NORTH_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_WIND_SPEED_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_WIND_BEARING_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_RAIN_ALARM_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_FROST_ALARM_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_WIND_ALARM_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_DAY_NIGHT_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_AIR_PRESSURE_ADDRESS): ga_validator,
vol.Optional(CONF_KNX_HUMIDITY_ADDRESS): ga_validator,
vol.Required(CONF_KNX_TEMPERATURE_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_BRIGHTNESS_SOUTH_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_BRIGHTNESS_EAST_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_BRIGHTNESS_WEST_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_BRIGHTNESS_NORTH_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_WIND_SPEED_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_WIND_BEARING_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_RAIN_ALARM_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_FROST_ALARM_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_WIND_ALARM_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_DAY_NIGHT_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_AIR_PRESSURE_ADDRESS): ga_list_validator,
vol.Optional(CONF_KNX_HUMIDITY_ADDRESS): ga_list_validator,
}
)