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:
Alan Tse 2020-04-14 10:27:07 -07:00 committed by GitHub
parent 994e83811f
commit 5fc0e00ead
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 6 deletions

View File

@ -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

View File

@ -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"]
} }

View File

@ -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

View File

@ -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