1 """Support for BMW car locks with BMW ConnectedDrive."""
3 from __future__
import annotations
8 from bimmer_connected.models
import MyBMWAPIError
9 from bimmer_connected.vehicle
import MyBMWVehicle
10 from bimmer_connected.vehicle.doors_windows
import LockState
17 from .
import BMWConfigEntry
18 from .coordinator
import BMWDataUpdateCoordinator
19 from .entity
import BMWBaseEntity
21 DOOR_LOCK_STATE =
"door_lock_state"
22 _LOGGER = logging.getLogger(__name__)
27 config_entry: BMWConfigEntry,
28 async_add_entities: AddEntitiesCallback,
30 """Set up the MyBMW lock from config entry."""
31 coordinator = config_entry.runtime_data.coordinator
33 if not coordinator.read_only:
35 BMWLock(coordinator, vehicle)
for vehicle
in coordinator.account.vehicles
40 """Representation of a MyBMW vehicle lock."""
42 _attr_translation_key =
"lock"
46 coordinator: BMWDataUpdateCoordinator,
47 vehicle: MyBMWVehicle,
49 """Initialize the lock."""
50 super().
__init__(coordinator, vehicle)
57 _LOGGER.debug(
"%s: locking doors", self.
vehiclevehicle.name)
65 await self.
vehiclevehicle.remote_services.trigger_remote_door_lock()
66 except MyBMWAPIError
as ex:
77 _LOGGER.debug(
"%s: unlocking doors", self.
vehiclevehicle.name)
85 await self.
vehiclevehicle.remote_services.trigger_remote_door_unlock()
86 except MyBMWAPIError
as ex:
97 """Handle updated data from the coordinator."""
98 _LOGGER.debug(
"Updating lock data of %s", self.
vehiclevehicle.name)
107 DOOR_LOCK_STATE: self.
vehiclevehicle.doors_and_windows.door_lock_state.value
door_lock_state_available
_attr_extra_state_attributes
None __init__(self, BMWDataUpdateCoordinator coordinator, MyBMWVehicle vehicle)
None async_lock(self, **Any kwargs)
None async_unlock(self, **Any kwargs)
None _handle_coordinator_update(self)
None async_write_ha_state(self)
None async_update_listeners(self)
None async_setup_entry(HomeAssistant hass, BMWConfigEntry config_entry, AddEntitiesCallback async_add_entities)