Code cleanup in LCN (#48074)

This commit is contained in:
Andre Lengwenus 2021-05-25 14:17:36 +02:00 committed by GitHub
parent bdb8cdf717
commit c868353459
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 15 additions and 57 deletions

View file

@ -15,13 +15,11 @@ from homeassistant.const import (
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import entity_registry as er
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from .const import CONF_DIM_MODE, CONF_SK_NUM_TRIES, CONNECTION, DOMAIN from .const import CONF_DIM_MODE, CONF_SK_NUM_TRIES, CONNECTION, DOMAIN, PLATFORMS
from .helpers import generate_unique_id, import_lcn_config from .helpers import generate_unique_id, import_lcn_config
from .schemas import CONFIG_SCHEMA # noqa: F401 from .schemas import CONFIG_SCHEMA # noqa: F401
from .services import SERVICES from .services import SERVICES
PLATFORMS = ["binary_sensor", "climate", "cover", "light", "scene", "sensor", "switch"]
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View file

@ -89,7 +89,4 @@ class LcnFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
self.hass.config_entries.async_update_entry(entry, data=data) self.hass.config_entries.async_update_entry(entry, data=data)
return self.async_abort(reason="existing_configuration_updated") return self.async_abort(reason="existing_configuration_updated")
return self.async_create_entry( return self.async_create_entry(title=f"{host_name}", data=data)
title=f"{host_name}",
data=data,
)

View file

@ -10,6 +10,8 @@ from homeassistant.const import (
VOLT, VOLT,
) )
PLATFORMS = ["binary_sensor", "climate", "cover", "light", "scene", "sensor", "switch"]
DOMAIN = "lcn" DOMAIN = "lcn"
DATA_LCN = "lcn" DATA_LCN = "lcn"
DEFAULT_NAME = "pchk" DEFAULT_NAME = "pchk"

View file

@ -224,44 +224,12 @@ def is_address(value):
addr = (int(matcher.group("seg_id")), int(matcher.group("id")), is_group) addr = (int(matcher.group("seg_id")), int(matcher.group("id")), is_group)
conn_id = matcher.group("conn_id") conn_id = matcher.group("conn_id")
return addr, conn_id return addr, conn_id
raise vol.error.Invalid("Not a valid address string.") raise ValueError(f"{value} is not a valid address string")
def is_relays_states_string(states_string): def is_states_string(states_string):
"""Validate the given states string and return states list.""" """Validate the given states string and return states list."""
if len(states_string) == 8: if len(states_string) != 8:
states = [] raise ValueError("Invalid length of states string")
for state_string in states_string: states = {"1": "ON", "0": "OFF", "T": "TOGGLE", "-": "NOCHANGE"}
if state_string == "1": return [states[state_string] for state_string in states_string]
state = "ON"
elif state_string == "0":
state = "OFF"
elif state_string == "T":
state = "TOGGLE"
elif state_string == "-":
state = "NOCHANGE"
else:
raise vol.error.Invalid("Not a valid relay state string.")
states.append(state)
return states
raise vol.error.Invalid("Wrong length of relay state string.")
def is_key_lock_states_string(states_string):
"""Validate the given states string and returns states list."""
if len(states_string) == 8:
states = []
for state_string in states_string:
if state_string == "1":
state = "ON"
elif state_string == "0":
state = "OFF"
elif state_string == "T":
state = "TOGGLE"
elif state_string == "-":
state = "NOCHANGE"
else:
raise vol.error.Invalid("Not a valid key lock state string.")
states.append(state)
return states
raise vol.error.Invalid("Wrong length of key lock state string.")

View file

@ -40,12 +40,7 @@ from .const import (
VAR_UNITS, VAR_UNITS,
VARIABLES, VARIABLES,
) )
from .helpers import ( from .helpers import get_device_connection, is_address, is_states_string
get_device_connection,
is_address,
is_key_lock_states_string,
is_relays_states_string,
)
class LcnServiceCall: class LcnServiceCall:
@ -150,9 +145,7 @@ class OutputToggle(LcnServiceCall):
class Relays(LcnServiceCall): class Relays(LcnServiceCall):
"""Set the relays status.""" """Set the relays status."""
schema = LcnServiceCall.schema.extend( schema = LcnServiceCall.schema.extend({vol.Required(CONF_STATE): is_states_string})
{vol.Required(CONF_STATE): is_relays_states_string}
)
async def async_call_service(self, service): async def async_call_service(self, service):
"""Execute service call.""" """Execute service call."""
@ -330,7 +323,7 @@ class LockKeys(LcnServiceCall):
vol.Optional(CONF_TABLE, default="a"): vol.All( vol.Optional(CONF_TABLE, default="a"): vol.All(
vol.Upper, cv.matches_regex(r"^[A-D]$") vol.Upper, cv.matches_regex(r"^[A-D]$")
), ),
vol.Required(CONF_STATE): is_key_lock_states_string, vol.Required(CONF_STATE): is_states_string,
vol.Optional(CONF_TIME, default=0): cv.positive_int, vol.Optional(CONF_TIME, default=0): cv.positive_int,
vol.Optional(CONF_TIME_UNIT, default=TIME_SECONDS): vol.All( vol.Optional(CONF_TIME_UNIT, default=TIME_SECONDS): vol.All(
vol.Upper, vol.In(TIME_UNITS) vol.Upper, vol.In(TIME_UNITS)
@ -361,7 +354,7 @@ class LockKeys(LcnServiceCall):
else: else:
await device_connection.lock_keys(table_id, states) await device_connection.lock_keys(table_id, states)
handler = device_connection.status_request_handler handler = device_connection.status_requests_handler
await handler.request_status_locked_keys_timeout() await handler.request_status_locked_keys_timeout()

View file

@ -521,7 +521,7 @@ lock_keys:
table: table:
name: Table name: Table
description: "Table with keys to lock (must be A for interval)." description: "Table with keys to lock (must be A for interval)."
example: "a5" example: "a"
default: a default: a
selector: selector:
text: text: