diff --git a/homeassistant/components/bmw_connected_drive/__init__.py b/homeassistant/components/bmw_connected_drive/__init__.py index 061b09c1b3b..b0ad1a867a8 100644 --- a/homeassistant/components/bmw_connected_drive/__init__.py +++ b/homeassistant/components/bmw_connected_drive/__init__.py @@ -20,6 +20,7 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'bmw_connected_drive' CONF_REGION = 'region' +CONF_READ_ONLY = 'read_only' ATTR_VIN = 'vin' ACCOUNT_SCHEMA = vol.Schema({ @@ -27,6 +28,7 @@ ACCOUNT_SCHEMA = vol.Schema({ vol.Required(CONF_PASSWORD): cv.string, vol.Required(CONF_REGION): vol.Any('north_america', 'china', 'rest_of_world'), + vol.Optional(CONF_READ_ONLY, default=False): cv.boolean, }) CONFIG_SCHEMA = vol.Schema({ @@ -82,8 +84,10 @@ def setup_account(account_config: dict, hass, name: str) \ username = account_config[CONF_USERNAME] password = account_config[CONF_PASSWORD] region = account_config[CONF_REGION] + read_only = account_config[CONF_READ_ONLY] _LOGGER.debug('Adding new account %s', name) - cd_account = BMWConnectedDriveAccount(username, password, region, name) + cd_account = BMWConnectedDriveAccount(username, password, region, name, + read_only) def execute_service(call): """Execute a service for a vehicle. @@ -99,13 +103,13 @@ def setup_account(account_config: dict, hass, name: str) \ function_name = _SERVICE_MAP[call.service] function_call = getattr(vehicle.remote_services, function_name) function_call() - - # register the remote services - for service in _SERVICE_MAP: - hass.services.register( - DOMAIN, service, - execute_service, - schema=SERVICE_SCHEMA) + if not read_only: + # register the remote services + for service in _SERVICE_MAP: + hass.services.register( + DOMAIN, service, + execute_service, + schema=SERVICE_SCHEMA) # update every UPDATE_INTERVAL minutes, starting now # this should even out the load on the servers @@ -122,13 +126,14 @@ class BMWConnectedDriveAccount: """Representation of a BMW vehicle.""" def __init__(self, username: str, password: str, region_str: str, - name: str) -> None: + name: str, read_only) -> None: """Constructor.""" from bimmer_connected.account import ConnectedDriveAccount from bimmer_connected.country_selector import get_region_from_name region = get_region_from_name(region_str) + self.read_only = read_only self.account = ConnectedDriveAccount(username, password, region) self.name = name self._update_listeners = [] diff --git a/homeassistant/components/lock/bmw_connected_drive.py b/homeassistant/components/lock/bmw_connected_drive.py index 52734b1259c..f4fb6d1fbf0 100644 --- a/homeassistant/components/lock/bmw_connected_drive.py +++ b/homeassistant/components/lock/bmw_connected_drive.py @@ -23,9 +23,10 @@ def setup_platform(hass, config, add_devices, discovery_info=None): ', '.join([a.name for a in accounts])) devices = [] for account in accounts: - for vehicle in account.account.vehicles: - device = BMWLock(account, vehicle, 'lock', 'BMW lock') - devices.append(device) + if not account.read_only: + for vehicle in account.account.vehicles: + device = BMWLock(account, vehicle, 'lock', 'BMW lock') + devices.append(device) add_devices(devices, True)