1 """Services for the Netgear LTE integration."""
3 from eternalegypt.eternalegypt
import Modem
4 import voluptuous
as vol
20 SERVICE_DELETE_SMS =
"delete_sms"
21 SERVICE_SET_OPTION =
"set_option"
22 SERVICE_CONNECT_LTE =
"connect_lte"
23 SERVICE_DISCONNECT_LTE =
"disconnect_lte"
25 DELETE_SMS_SCHEMA = vol.Schema(
27 vol.Optional(ATTR_HOST): cv.string,
28 vol.Required(ATTR_SMS_ID): vol.All(cv.ensure_list, [cv.positive_int]),
32 SET_OPTION_SCHEMA = vol.Schema(
34 cv.has_at_least_one_key(ATTR_FAILOVER, ATTR_AUTOCONNECT),
36 vol.Optional(ATTR_HOST): cv.string,
37 vol.Optional(ATTR_FAILOVER): vol.In(FAILOVER_MODES),
38 vol.Optional(ATTR_AUTOCONNECT): vol.In(AUTOCONNECT_MODES),
43 CONNECT_LTE_SCHEMA = vol.Schema({vol.Optional(ATTR_HOST): cv.string})
45 DISCONNECT_LTE_SCHEMA = vol.Schema({vol.Optional(ATTR_HOST): cv.string})
49 """Set up services for Netgear LTE integration."""
51 async
def service_handler(call: ServiceCall) ->
None:
52 """Apply a service."""
53 host = call.data.get(ATTR_HOST)
56 LOGGER.error(
"%s: host %s unavailable", call.service, host)
59 if call.service == SERVICE_DELETE_SMS:
60 for sms_id
in call.data[ATTR_SMS_ID]:
61 await modem.delete_sms(sms_id)
62 elif call.service == SERVICE_SET_OPTION:
63 if failover := call.data.get(ATTR_FAILOVER):
64 await modem.set_failover_mode(failover)
65 if autoconnect := call.data.get(ATTR_AUTOCONNECT):
66 await modem.set_autoconnect_mode(autoconnect)
67 elif call.service == SERVICE_CONNECT_LTE:
68 await modem.connect_lte()
69 elif call.service == SERVICE_DISCONNECT_LTE:
70 await modem.disconnect_lte()
73 SERVICE_DELETE_SMS: DELETE_SMS_SCHEMA,
74 SERVICE_SET_OPTION: SET_OPTION_SCHEMA,
75 SERVICE_CONNECT_LTE: CONNECT_LTE_SCHEMA,
76 SERVICE_DISCONNECT_LTE: DISCONNECT_LTE_SCHEMA,
79 for service, schema
in service_schemas.items():
80 hass.services.async_register(DOMAIN, service, service_handler, schema=schema)
None async_setup_services(HomeAssistant hass, Modem modem)