34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
"""Remote vehicle services for Subaru integration."""
|
|
import logging
|
|
|
|
from subarulink.exceptions import SubaruException
|
|
|
|
from homeassistant.exceptions import HomeAssistantError
|
|
|
|
from .const import SERVICE_UNLOCK, VEHICLE_NAME, VEHICLE_VIN
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
async def async_call_remote_service(controller, cmd, vehicle_info, arg=None):
|
|
"""Execute subarulink remote command."""
|
|
car_name = vehicle_info[VEHICLE_NAME]
|
|
vin = vehicle_info[VEHICLE_VIN]
|
|
|
|
_LOGGER.debug("Sending %s command command to %s", cmd, car_name)
|
|
success = False
|
|
err_msg = ""
|
|
try:
|
|
if cmd == SERVICE_UNLOCK:
|
|
success = await getattr(controller, cmd)(vin, arg)
|
|
else:
|
|
success = await getattr(controller, cmd)(vin)
|
|
except SubaruException as err:
|
|
err_msg = err.message
|
|
|
|
if success:
|
|
_LOGGER.debug("%s command successfully completed for %s", cmd, car_name)
|
|
return
|
|
|
|
raise HomeAssistantError(f"Service {cmd} failed for {car_name}: {err_msg}")
|