Deprecate system_id parameter in SimpliSafe service calls (#61076)

This commit is contained in:
Aaron Bach 2021-12-06 00:55:52 -07:00 committed by GitHub
parent 2f0695e408
commit 0ae6969aa4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -145,57 +145,86 @@ SERVICES = (
SERVICE_NAME_SET_SYSTEM_PROPERTIES, SERVICE_NAME_SET_SYSTEM_PROPERTIES,
) )
SERVICE_CLEAR_NOTIFICATIONS_SCHEMA = vol.All(
SERVICE_REMOVE_PIN_SCHEMA = vol.Schema( cv.deprecated(ATTR_SYSTEM_ID),
{ vol.Schema(
vol.Required(ATTR_DEVICE_ID): cv.string, {
vol.Required(ATTR_PIN_LABEL_OR_VALUE): cv.string, vol.Optional(ATTR_DEVICE_ID): cv.string,
} vol.Optional(ATTR_SYSTEM_ID): cv.string,
}
),
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_SYSTEM_ID),
) )
SERVICE_SET_PIN_SCHEMA = vol.Schema( SERVICE_REMOVE_PIN_SCHEMA = vol.All(
{ cv.deprecated(ATTR_SYSTEM_ID),
vol.Required(ATTR_DEVICE_ID): cv.string, vol.Schema(
vol.Required(ATTR_PIN_LABEL): cv.string, {
vol.Required(ATTR_PIN_VALUE): cv.string, vol.Optional(ATTR_DEVICE_ID): cv.string,
} vol.Optional(ATTR_SYSTEM_ID): cv.string,
vol.Required(ATTR_PIN_LABEL_OR_VALUE): cv.string,
}
),
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_SYSTEM_ID),
) )
SERVICE_SET_SYSTEM_PROPERTIES_SCHEMA = vol.Schema( SERVICE_SET_PIN_SCHEMA = vol.All(
{ cv.deprecated(ATTR_SYSTEM_ID),
vol.Required(ATTR_DEVICE_ID): cv.string, vol.Schema(
vol.Optional(ATTR_ALARM_DURATION): vol.All( {
cv.time_period, vol.Optional(ATTR_DEVICE_ID): cv.string,
lambda value: value.total_seconds(), vol.Optional(ATTR_SYSTEM_ID): cv.string,
vol.Range(min=MIN_ALARM_DURATION, max=MAX_ALARM_DURATION), vol.Required(ATTR_PIN_LABEL): cv.string,
), vol.Required(ATTR_PIN_VALUE): cv.string,
vol.Optional(ATTR_ALARM_VOLUME): vol.All(vol.In(VOLUME_MAP), VOLUME_MAP.get), },
vol.Optional(ATTR_CHIME_VOLUME): vol.All(vol.In(VOLUME_MAP), VOLUME_MAP.get), ),
vol.Optional(ATTR_ENTRY_DELAY_AWAY): vol.All( cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_SYSTEM_ID),
cv.time_period, )
lambda value: value.total_seconds(),
vol.Range(min=MIN_ENTRY_DELAY_AWAY, max=MAX_ENTRY_DELAY_AWAY), SERVICE_SET_SYSTEM_PROPERTIES_SCHEMA = vol.All(
), cv.deprecated(ATTR_SYSTEM_ID),
vol.Optional(ATTR_ENTRY_DELAY_HOME): vol.All( vol.Schema(
cv.time_period, {
lambda value: value.total_seconds(), vol.Optional(ATTR_DEVICE_ID): cv.string,
vol.Range(max=MAX_ENTRY_DELAY_HOME), vol.Optional(ATTR_SYSTEM_ID): cv.string,
), vol.Optional(ATTR_ALARM_DURATION): vol.All(
vol.Optional(ATTR_EXIT_DELAY_AWAY): vol.All( cv.time_period,
cv.time_period, lambda value: value.total_seconds(),
lambda value: value.total_seconds(), vol.Range(min=MIN_ALARM_DURATION, max=MAX_ALARM_DURATION),
vol.Range(min=MIN_EXIT_DELAY_AWAY, max=MAX_EXIT_DELAY_AWAY), ),
), vol.Optional(ATTR_ALARM_VOLUME): vol.All(
vol.Optional(ATTR_EXIT_DELAY_HOME): vol.All( vol.In(VOLUME_MAP), VOLUME_MAP.get
cv.time_period, ),
lambda value: value.total_seconds(), vol.Optional(ATTR_CHIME_VOLUME): vol.All(
vol.Range(max=MAX_EXIT_DELAY_HOME), vol.In(VOLUME_MAP), VOLUME_MAP.get
), ),
vol.Optional(ATTR_LIGHT): cv.boolean, vol.Optional(ATTR_ENTRY_DELAY_AWAY): vol.All(
vol.Optional(ATTR_VOICE_PROMPT_VOLUME): vol.All( cv.time_period,
vol.In(VOLUME_MAP), VOLUME_MAP.get lambda value: value.total_seconds(),
), vol.Range(min=MIN_ENTRY_DELAY_AWAY, max=MAX_ENTRY_DELAY_AWAY),
} ),
vol.Optional(ATTR_ENTRY_DELAY_HOME): vol.All(
cv.time_period,
lambda value: value.total_seconds(),
vol.Range(max=MAX_ENTRY_DELAY_HOME),
),
vol.Optional(ATTR_EXIT_DELAY_AWAY): vol.All(
cv.time_period,
lambda value: value.total_seconds(),
vol.Range(min=MIN_EXIT_DELAY_AWAY, max=MAX_EXIT_DELAY_AWAY),
),
vol.Optional(ATTR_EXIT_DELAY_HOME): vol.All(
cv.time_period,
lambda value: value.total_seconds(),
vol.Range(max=MAX_EXIT_DELAY_HOME),
),
vol.Optional(ATTR_LIGHT): cv.boolean,
vol.Optional(ATTR_VOICE_PROMPT_VOLUME): vol.All(
vol.In(VOLUME_MAP), VOLUME_MAP.get
),
}
),
cv.has_at_least_one_key(ATTR_DEVICE_ID, ATTR_SYSTEM_ID),
) )
WEBSOCKET_EVENTS_REQUIRING_SERIAL = [EVENT_LOCK_LOCKED, EVENT_LOCK_UNLOCKED] WEBSOCKET_EVENTS_REQUIRING_SERIAL = [EVENT_LOCK_LOCKED, EVENT_LOCK_UNLOCKED]
@ -217,6 +246,15 @@ def _async_get_system_for_service_call(
hass: HomeAssistant, call: ServiceCall hass: HomeAssistant, call: ServiceCall
) -> SystemType: ) -> SystemType:
"""Get the SimpliSafe system related to a service call (by device ID).""" """Get the SimpliSafe system related to a service call (by device ID)."""
if ATTR_SYSTEM_ID in call.data:
for entry in hass.config_entries.async_entries(DOMAIN):
simplisafe = hass.data[DOMAIN][entry.entry_id]
if (
system := simplisafe.systems.get(int(call.data[ATTR_SYSTEM_ID]))
) is None:
continue
return cast(SystemType, system)
device_id = call.data[ATTR_DEVICE_ID] device_id = call.data[ATTR_DEVICE_ID]
device_registry = dr.async_get(hass) device_registry = dr.async_get(hass)
@ -366,7 +404,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
) )
for service, method, schema in ( for service, method, schema in (
(SERVICE_NAME_CLEAR_NOTIFICATIONS, async_clear_notifications, None), (
SERVICE_NAME_CLEAR_NOTIFICATIONS,
async_clear_notifications,
SERVICE_CLEAR_NOTIFICATIONS_SCHEMA,
),
(SERVICE_NAME_REMOVE_PIN, async_remove_pin, SERVICE_REMOVE_PIN_SCHEMA), (SERVICE_NAME_REMOVE_PIN, async_remove_pin, SERVICE_REMOVE_PIN_SCHEMA),
(SERVICE_NAME_SET_PIN, async_set_pin, SERVICE_SET_PIN_SCHEMA), (SERVICE_NAME_SET_PIN, async_set_pin, SERVICE_SET_PIN_SCHEMA),
( (