mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +00:00
Add defrost preset mode to Tesla (#34186)
* style: update logging details * Add defrost preset mode to Tesla * Bump teslajsonpy to 0.7.0
This commit is contained in:
parent
994e83811f
commit
5fc0e00ead
@ -1,10 +1,14 @@
|
|||||||
"""Support for Tesla HVAC system."""
|
"""Support for Tesla HVAC system."""
|
||||||
import logging
|
import logging
|
||||||
|
from typing import List, Optional
|
||||||
|
|
||||||
|
from teslajsonpy.exceptions import UnknownPresetMode
|
||||||
|
|
||||||
from homeassistant.components.climate import ClimateDevice
|
from homeassistant.components.climate import ClimateDevice
|
||||||
from homeassistant.components.climate.const import (
|
from homeassistant.components.climate.const import (
|
||||||
HVAC_MODE_HEAT_COOL,
|
HVAC_MODE_HEAT_COOL,
|
||||||
HVAC_MODE_OFF,
|
HVAC_MODE_OFF,
|
||||||
|
SUPPORT_PRESET_MODE,
|
||||||
SUPPORT_TARGET_TEMPERATURE,
|
SUPPORT_TARGET_TEMPERATURE,
|
||||||
)
|
)
|
||||||
from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT
|
from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS, TEMP_FAHRENHEIT
|
||||||
@ -45,7 +49,7 @@ class TeslaThermostat(TeslaDevice, ClimateDevice):
|
|||||||
@property
|
@property
|
||||||
def supported_features(self):
|
def supported_features(self):
|
||||||
"""Return the list of supported features."""
|
"""Return the list of supported features."""
|
||||||
return SUPPORT_TARGET_TEMPERATURE
|
return SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def hvac_mode(self):
|
def hvac_mode(self):
|
||||||
@ -93,15 +97,39 @@ class TeslaThermostat(TeslaDevice, ClimateDevice):
|
|||||||
|
|
||||||
async def async_set_temperature(self, **kwargs):
|
async def async_set_temperature(self, **kwargs):
|
||||||
"""Set new target temperatures."""
|
"""Set new target temperatures."""
|
||||||
_LOGGER.debug("Setting temperature for: %s", self._name)
|
|
||||||
temperature = kwargs.get(ATTR_TEMPERATURE)
|
temperature = kwargs.get(ATTR_TEMPERATURE)
|
||||||
if temperature:
|
if temperature:
|
||||||
|
_LOGGER.debug("%s: Setting temperature to %s", self._name, temperature)
|
||||||
await self.tesla_device.set_temperature(temperature)
|
await self.tesla_device.set_temperature(temperature)
|
||||||
|
|
||||||
async def async_set_hvac_mode(self, hvac_mode):
|
async def async_set_hvac_mode(self, hvac_mode):
|
||||||
"""Set new target hvac mode."""
|
"""Set new target hvac mode."""
|
||||||
_LOGGER.debug("Setting mode for: %s", self._name)
|
_LOGGER.debug("%s: Setting hvac mode to %s", self._name, hvac_mode)
|
||||||
if hvac_mode == HVAC_MODE_OFF:
|
if hvac_mode == HVAC_MODE_OFF:
|
||||||
await self.tesla_device.set_status(False)
|
await self.tesla_device.set_status(False)
|
||||||
elif hvac_mode == HVAC_MODE_HEAT_COOL:
|
elif hvac_mode == HVAC_MODE_HEAT_COOL:
|
||||||
await self.tesla_device.set_status(True)
|
await self.tesla_device.set_status(True)
|
||||||
|
|
||||||
|
async def async_set_preset_mode(self, preset_mode: str) -> None:
|
||||||
|
"""Set new preset mode."""
|
||||||
|
_LOGGER.debug("%s: Setting preset_mode to: %s", self.name, preset_mode)
|
||||||
|
try:
|
||||||
|
await self.tesla_device.set_preset_mode(preset_mode)
|
||||||
|
except UnknownPresetMode as ex:
|
||||||
|
_LOGGER.error("%s", ex.message)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def preset_mode(self) -> Optional[str]:
|
||||||
|
"""Return the current preset mode, e.g., home, away, temp.
|
||||||
|
|
||||||
|
Requires SUPPORT_PRESET_MODE.
|
||||||
|
"""
|
||||||
|
return self.tesla_device.preset_mode
|
||||||
|
|
||||||
|
@property
|
||||||
|
def preset_modes(self) -> Optional[List[str]]:
|
||||||
|
"""Return a list of available preset modes.
|
||||||
|
|
||||||
|
Requires SUPPORT_PRESET_MODE.
|
||||||
|
"""
|
||||||
|
return self.tesla_device.preset_modes
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
"name": "Tesla",
|
"name": "Tesla",
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/integrations/tesla",
|
"documentation": "https://www.home-assistant.io/integrations/tesla",
|
||||||
"requirements": ["teslajsonpy==0.6.0"],
|
"requirements": ["teslajsonpy==0.7.0"],
|
||||||
"codeowners": ["@zabuldon", "@alandtse"]
|
"codeowners": ["@zabuldon", "@alandtse"]
|
||||||
}
|
}
|
||||||
|
@ -2020,7 +2020,7 @@ temperusb==1.5.3
|
|||||||
tesla-powerwall==0.2.3
|
tesla-powerwall==0.2.3
|
||||||
|
|
||||||
# homeassistant.components.tesla
|
# homeassistant.components.tesla
|
||||||
teslajsonpy==0.6.0
|
teslajsonpy==0.7.0
|
||||||
|
|
||||||
# homeassistant.components.thermoworks_smoke
|
# homeassistant.components.thermoworks_smoke
|
||||||
thermoworks_smoke==0.1.8
|
thermoworks_smoke==0.1.8
|
||||||
|
@ -756,7 +756,7 @@ tellduslive==0.10.10
|
|||||||
tesla-powerwall==0.2.3
|
tesla-powerwall==0.2.3
|
||||||
|
|
||||||
# homeassistant.components.tesla
|
# homeassistant.components.tesla
|
||||||
teslajsonpy==0.6.0
|
teslajsonpy==0.7.0
|
||||||
|
|
||||||
# homeassistant.components.toon
|
# homeassistant.components.toon
|
||||||
toonapilib==3.2.4
|
toonapilib==3.2.4
|
||||||
|
Loading…
x
Reference in New Issue
Block a user