1 """Cover platform for Tessie integration."""
3 from __future__
import annotations
5 from itertools
import chain
8 from tessie_api
import (
12 open_close_rear_trunk,
14 open_unlock_charge_port,
27 from .
import TessieConfigEntry
28 from .const
import TessieCoverStates
29 from .entity
import TessieEntity
30 from .models
import TessieVehicleData
37 entry: TessieConfigEntry,
38 async_add_entities: AddEntitiesCallback,
40 """Set up the Tessie sensor platform from a config entry."""
41 data = entry.runtime_data
49 TessieChargePortEntity,
50 TessieFrontTrunkEntity,
51 TessieRearTrunkEntity,
53 for vehicle
in data.vehicles
57 for vehicle
in data.vehicles
58 if vehicle.data_coordinator.data.get(
59 "vehicle_config_sun_roof_installed"
67 """Cover entity for current charge."""
69 _attr_device_class = CoverDeviceClass.WINDOW
70 _attr_supported_features = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
72 def __init__(self, vehicle: TessieVehicleData) ->
None:
73 """Initialize the sensor."""
78 """Return if the cover is closed or not."""
80 self.
getget(
"vehicle_state_fd_window") == TessieCoverStates.CLOSED
81 and self.
getget(
"vehicle_state_fp_window") == TessieCoverStates.CLOSED
82 and self.
getget(
"vehicle_state_rd_window") == TessieCoverStates.CLOSED
83 and self.
getget(
"vehicle_state_rp_window") == TessieCoverStates.CLOSED
88 await self.
runrun(vent_windows)
90 (
"vehicle_state_fd_window", TessieCoverStates.OPEN),
91 (
"vehicle_state_fp_window", TessieCoverStates.OPEN),
92 (
"vehicle_state_rd_window", TessieCoverStates.OPEN),
93 (
"vehicle_state_rp_window", TessieCoverStates.OPEN),
98 await self.
runrun(close_windows)
100 (
"vehicle_state_fd_window", TessieCoverStates.CLOSED),
101 (
"vehicle_state_fp_window", TessieCoverStates.CLOSED),
102 (
"vehicle_state_rd_window", TessieCoverStates.CLOSED),
103 (
"vehicle_state_rp_window", TessieCoverStates.CLOSED),
108 """Cover entity for the charge port."""
110 _attr_device_class = CoverDeviceClass.DOOR
111 _attr_supported_features = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
113 def __init__(self, vehicle: TessieVehicleData) ->
None:
114 """Initialize the sensor."""
115 super().
__init__(vehicle,
"charge_state_charge_port_door_open")
119 """Return if the cover is closed or not."""
124 await self.
runrun(open_unlock_charge_port)
125 self.
setset((self.
keykey,
True))
129 await self.
runrun(close_charge_port)
130 self.
setset((self.
keykey,
False))
134 """Cover entity for the charge port."""
136 _attr_device_class = CoverDeviceClass.DOOR
137 _attr_supported_features = CoverEntityFeature.OPEN
139 def __init__(self, vehicle: TessieVehicleData) ->
None:
140 """Initialize the sensor."""
141 super().
__init__(vehicle,
"vehicle_state_ft")
145 """Return if the cover is closed or not."""
149 """Open front trunk."""
150 await self.
runrun(open_front_trunk)
151 self.
setset((self.
keykey, TessieCoverStates.OPEN))
155 """Cover entity for the charge port."""
157 _attr_device_class = CoverDeviceClass.DOOR
158 _attr_supported_features = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
160 def __init__(self, vehicle: TessieVehicleData) ->
None:
161 """Initialize the sensor."""
162 super().
__init__(vehicle,
"vehicle_state_rt")
166 """Return if the cover is closed or not."""
170 """Open rear trunk."""
172 await self.
runrun(open_close_rear_trunk)
173 self.
setset((self.
keykey, TessieCoverStates.OPEN))
176 """Close rear trunk."""
178 await self.
runrun(open_close_rear_trunk)
179 self.
setset((self.
keykey, TessieCoverStates.CLOSED))
183 """Cover entity for the sunroof."""
185 _attr_device_class = CoverDeviceClass.WINDOW
186 _attr_supported_features = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
188 def __init__(self, vehicle: TessieVehicleData) ->
None:
189 """Initialize the sensor."""
190 super().
__init__(vehicle,
"vehicle_state_sun_roof_state")
194 """Return if the cover is closed or not."""
199 """Return the percentage open."""
200 return self.
getget(
"vehicle_state_sun_roof_percent_open")
204 await self.
runrun(vent_sunroof)
205 self.
setset((self.
keykey, TessieCoverStates.OPEN))
209 await self.
runrun(close_sunroof)
210 self.
setset((self.
keykey, TessieCoverStates.CLOSED))
bool|None is_closed(self)
None async_close_cover(self, **Any kwargs)
None __init__(self, TessieVehicleData vehicle)
None async_open_cover(self, **Any kwargs)
bool|None is_closed(self)
bool|None is_closed(self)
None __init__(self, TessieVehicleData vehicle)
None async_open_cover(self, **Any kwargs)
None async_close_cover(self, **Any kwargs)
bool|None is_closed(self)
None async_open_cover(self, **Any kwargs)
None __init__(self, TessieVehicleData vehicle)
None async_open_cover(self, **Any kwargs)
bool|None is_closed(self)
None async_close_cover(self, **Any kwargs)
None __init__(self, TessieVehicleData vehicle)
None __init__(self, TessieVehicleData vehicle)
None async_close_cover(self, **Any kwargs)
bool|None is_closed(self)
None async_open_cover(self, **Any kwargs)
Any get(self, str|None key=None, Any|None default=None)
None set(self, *Any args)
None run(self, Callable[..., Awaitable[dict[str, Any]]] func, **Any kargs)
None async_setup_entry(HomeAssistant hass, TessieConfigEntry entry, AddEntitiesCallback async_add_entities)