mirror of
https://github.com/home-assistant/core.git
synced 2026-08-28 18:24:50 -05:00
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
"""Services for the StarLine integration."""
|
|
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.const import CONF_SCAN_INTERVAL
|
|
from homeassistant.core import HomeAssistant, ServiceCall, callback
|
|
|
|
from .const import (
|
|
CONF_SCAN_OBD_INTERVAL,
|
|
DOMAIN,
|
|
SERVICE_SET_SCAN_INTERVAL,
|
|
SERVICE_SET_SCAN_OBD_INTERVAL,
|
|
SERVICE_UPDATE_STATE,
|
|
)
|
|
|
|
SET_SCAN_INTERVAL_SCHEMA = vol.Schema(
|
|
{vol.Required(CONF_SCAN_INTERVAL): vol.All(vol.Coerce(int), vol.Range(min=10))}
|
|
)
|
|
|
|
SET_SCAN_OBD_INTERVAL_SCHEMA = vol.Schema(
|
|
{vol.Required(CONF_SCAN_INTERVAL): vol.All(vol.Coerce(int), vol.Range(min=180))}
|
|
)
|
|
|
|
|
|
async def _async_update(call: ServiceCall) -> None:
|
|
"""Update all data."""
|
|
for entry in call.hass.config_entries.async_loaded_entries(DOMAIN):
|
|
account = entry.runtime_data
|
|
await account.update()
|
|
await account.update_obd()
|
|
|
|
|
|
async def _async_set_scan_interval(call: ServiceCall) -> None:
|
|
"""Set scan interval."""
|
|
for entry in call.hass.config_entries.async_loaded_entries(DOMAIN):
|
|
options = dict(entry.options)
|
|
options[CONF_SCAN_INTERVAL] = call.data[CONF_SCAN_INTERVAL]
|
|
call.hass.config_entries.async_update_entry(entry=entry, options=options)
|
|
|
|
|
|
async def _async_set_scan_obd_interval(call: ServiceCall) -> None:
|
|
"""Set OBD info scan interval."""
|
|
for entry in call.hass.config_entries.async_loaded_entries(DOMAIN):
|
|
options = dict(entry.options)
|
|
options[CONF_SCAN_OBD_INTERVAL] = call.data[CONF_SCAN_INTERVAL]
|
|
call.hass.config_entries.async_update_entry(entry=entry, options=options)
|
|
|
|
|
|
@callback
|
|
def async_setup_services(hass: HomeAssistant) -> None:
|
|
"""Register StarLine services."""
|
|
|
|
hass.services.async_register(DOMAIN, SERVICE_UPDATE_STATE, _async_update)
|
|
hass.services.async_register(
|
|
DOMAIN,
|
|
SERVICE_SET_SCAN_INTERVAL,
|
|
_async_set_scan_interval,
|
|
schema=SET_SCAN_INTERVAL_SCHEMA,
|
|
)
|
|
hass.services.async_register(
|
|
DOMAIN,
|
|
SERVICE_SET_SCAN_OBD_INTERVAL,
|
|
_async_set_scan_obd_interval,
|
|
schema=SET_SCAN_OBD_INTERVAL_SCHEMA,
|
|
)
|