Device automation extra fields translation for KNX (#119518)

This commit is contained in:
Matthias Alphart 2024-06-15 11:31:10 +02:00 committed by GitHub
parent 8c5c7203ea
commit c8e9a3a8f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 56 additions and 17 deletions

View File

@ -21,8 +21,12 @@ from .const import DOMAIN
from .project import KNXProject
from .trigger import (
CONF_KNX_DESTINATION,
CONF_KNX_GROUP_VALUE_READ,
CONF_KNX_GROUP_VALUE_RESPONSE,
CONF_KNX_GROUP_VALUE_WRITE,
CONF_KNX_INCOMING,
CONF_KNX_OUTGOING,
PLATFORM_TYPE_TRIGGER_TELEGRAM,
TELEGRAM_TRIGGER_OPTIONS,
TELEGRAM_TRIGGER_SCHEMA,
TRIGGER_SCHEMA as TRIGGER_TRIGGER_SCHEMA,
)
@ -79,7 +83,21 @@ async def async_get_trigger_capabilities(
options=options,
),
),
**TELEGRAM_TRIGGER_OPTIONS,
vol.Optional(
CONF_KNX_GROUP_VALUE_WRITE, default=True
): selector.BooleanSelector(),
vol.Optional(
CONF_KNX_GROUP_VALUE_RESPONSE, default=True
): selector.BooleanSelector(),
vol.Optional(
CONF_KNX_GROUP_VALUE_READ, default=True
): selector.BooleanSelector(),
vol.Optional(
CONF_KNX_INCOMING, default=True
): selector.BooleanSelector(),
vol.Optional(
CONF_KNX_OUTGOING, default=True
): selector.BooleanSelector(),
}
)
}
@ -98,7 +116,7 @@ async def async_attach_trigger(
} | {CONF_PLATFORM: PLATFORM_TYPE_TRIGGER_TELEGRAM}
try:
TRIGGER_TRIGGER_SCHEMA(trigger_config)
trigger_config = TRIGGER_TRIGGER_SCHEMA(trigger_config)
except vol.Invalid as err:
raise InvalidDeviceAutomationConfig(f"{err}") from err

View File

@ -296,7 +296,23 @@
},
"device_automation": {
"trigger_type": {
"telegram": "Telegram sent or received"
"telegram": "Telegram"
},
"extra_fields": {
"destination": "Group addresses",
"group_value_write": "GroupValueWrite",
"group_value_read": "GroupValueRead",
"group_value_response": "GroupValueResponse",
"incoming": "Incoming",
"outgoing": "Outgoing"
},
"extra_fields_descriptions": {
"destination": "The trigger will listen to telegrams sent or received on these group addresses. If no address is selected, the trigger will fire for every group address.",
"group_value_write": "Listen on GroupValueWrite telegrams.",
"group_value_read": "Listen on GroupValueRead telegrams.",
"group_value_response": "Listen on GroupValueResponse telegrams.",
"incoming": "Listen on incoming telegrams.",
"outgoing": "Listen on outgoing telegrams."
}
},
"services": {

View File

@ -31,20 +31,15 @@ CONF_KNX_GROUP_VALUE_RESPONSE: Final = "group_value_response"
CONF_KNX_INCOMING: Final = "incoming"
CONF_KNX_OUTGOING: Final = "outgoing"
TELEGRAM_TRIGGER_OPTIONS: Final = {
TELEGRAM_TRIGGER_SCHEMA: Final = {
vol.Optional(CONF_KNX_DESTINATION): vol.All(cv.ensure_list, [ga_validator]),
vol.Optional(CONF_KNX_GROUP_VALUE_WRITE, default=True): cv.boolean,
vol.Optional(CONF_KNX_GROUP_VALUE_RESPONSE, default=True): cv.boolean,
vol.Optional(CONF_KNX_GROUP_VALUE_READ, default=True): cv.boolean,
vol.Optional(CONF_KNX_INCOMING, default=True): cv.boolean,
vol.Optional(CONF_KNX_OUTGOING, default=True): cv.boolean,
}
TELEGRAM_TRIGGER_SCHEMA: Final = {
vol.Optional(CONF_KNX_DESTINATION): vol.All(
cv.ensure_list,
[ga_validator],
),
**TELEGRAM_TRIGGER_OPTIONS,
}
# TRIGGER_SCHEMA is exclusive to triggers, the above are used in device triggers too
TRIGGER_SCHEMA = cv.TRIGGER_BASE_SCHEMA.extend(
{

View File

@ -319,31 +319,41 @@ async def test_get_trigger_capabilities(
"name": "group_value_write",
"optional": True,
"default": True,
"type": "boolean",
"selector": {
"boolean": {},
},
},
{
"name": "group_value_response",
"optional": True,
"default": True,
"type": "boolean",
"selector": {
"boolean": {},
},
},
{
"name": "group_value_read",
"optional": True,
"default": True,
"type": "boolean",
"selector": {
"boolean": {},
},
},
{
"name": "incoming",
"optional": True,
"default": True,
"type": "boolean",
"selector": {
"boolean": {},
},
},
{
"name": "outgoing",
"optional": True,
"default": True,
"type": "boolean",
"selector": {
"boolean": {},
},
},
]