Home Assistant Unofficial Reference 2024.12.1
lock.py
Go to the documentation of this file.
1 """Lock platform for Tessie integration."""
2 
3 from __future__ import annotations
4 
5 from typing import Any
6 
7 from tessie_api import lock, open_unlock_charge_port, unlock
8 
9 from homeassistant.components.lock import LockEntity
10 from homeassistant.core import HomeAssistant
11 from homeassistant.exceptions import ServiceValidationError
12 from homeassistant.helpers.entity_platform import AddEntitiesCallback
13 
14 from . import TessieConfigEntry
15 from .const import DOMAIN, TessieChargeCableLockStates
16 from .entity import TessieEntity
17 from .models import TessieVehicleData
18 
19 PARALLEL_UPDATES = 0
20 
21 
23  hass: HomeAssistant,
24  entry: TessieConfigEntry,
25  async_add_entities: AddEntitiesCallback,
26 ) -> None:
27  """Set up the Tessie sensor platform from a config entry."""
28  data = entry.runtime_data
29 
31  klass(vehicle)
32  for klass in (TessieLockEntity, TessieCableLockEntity)
33  for vehicle in data.vehicles
34  )
35 
36 
38  """Lock entity for Tessie."""
39 
40  def __init__(
41  self,
42  vehicle: TessieVehicleData,
43  ) -> None:
44  """Initialize the sensor."""
45  super().__init__(vehicle, "vehicle_state_locked")
46 
47  @property
48  def is_locked(self) -> bool | None:
49  """Return the state of the Lock."""
50  return self._value_value_value
51 
52  async def async_lock(self, **kwargs: Any) -> None:
53  """Set new value."""
54  await self.runrun(lock)
55  self.setset((self.keykey, True))
56 
57  async def async_unlock(self, **kwargs: Any) -> None:
58  """Set new value."""
59  await self.runrun(unlock)
60  self.setset((self.keykey, False))
61 
62 
64  """Cable Lock entity for Tessie."""
65 
66  def __init__(
67  self,
68  vehicle: TessieVehicleData,
69  ) -> None:
70  """Initialize the sensor."""
71  super().__init__(vehicle, "charge_state_charge_port_latch")
72 
73  @property
74  def is_locked(self) -> bool | None:
75  """Return the state of the Lock."""
76  return self._value_value_value_value == TessieChargeCableLockStates.ENGAGED
77 
78  async def async_lock(self, **kwargs: Any) -> None:
79  """Charge cable Lock cannot be manually locked."""
81  translation_domain=DOMAIN,
82  translation_key="no_cable",
83  )
84 
85  async def async_unlock(self, **kwargs: Any) -> None:
86  """Unlock charge cable lock."""
87  await self.runrun(open_unlock_charge_port)
88  self.setset((self.keykey, TessieChargeCableLockStates.DISENGAGED))
None run(self, Callable[..., Awaitable[dict[str, Any]]] func, **Any kargs)
Definition: entity.py:96
None __init__(self, TessieVehicleData vehicle)
Definition: lock.py:69
None __init__(self, TessieVehicleData vehicle)
Definition: lock.py:43
None async_setup_entry(HomeAssistant hass, TessieConfigEntry entry, AddEntitiesCallback async_add_entities)
Definition: lock.py:26