addressed all pending suggestions

This commit is contained in:
Martín Villagra
2021-11-23 19:59:38 +00:00
parent 7251d62035
commit ae3f305db0
3 changed files with 31 additions and 38 deletions

View File

@@ -7,33 +7,32 @@ import json
import voluptuous as vol import voluptuous as vol
from homeassistant.components.climate import ( from homeassistant.components.climate import (
ClimateEntity,
DEFAULT_MAX_TEMP, DEFAULT_MAX_TEMP,
DEFAULT_MIN_TEMP, DEFAULT_MIN_TEMP,
DOMAIN, DOMAIN,
ClimateEntity,
) )
from homeassistant.components.climate.const import ( from homeassistant.components.climate.const import (
CURRENT_HVAC_HEAT,
CURRENT_HVAC_OFF,
HVAC_MODE_AUTO, HVAC_MODE_AUTO,
HVAC_MODE_HEAT,
HVAC_MODE_OFF,
HVAC_MODE_COOL, HVAC_MODE_COOL,
HVAC_MODE_HEAT_COOL,
HVAC_MODE_DRY, HVAC_MODE_DRY,
HVAC_MODE_FAN_ONLY, HVAC_MODE_FAN_ONLY,
HVAC_MODE_HEAT,
HVAC_MODE_HEAT_COOL,
HVAC_MODE_OFF,
PRESET_ACTIVITY,
PRESET_AWAY,
PRESET_BOOST,
PRESET_COMFORT,
PRESET_ECO,
PRESET_HOME,
PRESET_NONE,
PRESET_SLEEP,
SUPPORT_FAN_MODE,
SUPPORT_PRESET_MODE, SUPPORT_PRESET_MODE,
SUPPORT_TARGET_TEMPERATURE, SUPPORT_TARGET_TEMPERATURE,
SUPPORT_TARGET_TEMPERATURE_RANGE, SUPPORT_TARGET_TEMPERATURE_RANGE,
CURRENT_HVAC_OFF,
CURRENT_HVAC_HEAT,
PRESET_NONE,
PRESET_ECO,
PRESET_AWAY,
PRESET_BOOST,
PRESET_COMFORT,
PRESET_HOME,
PRESET_SLEEP,
PRESET_ACTIVITY,
) )
from homeassistant.const import ( from homeassistant.const import (
ATTR_TEMPERATURE, ATTR_TEMPERATURE,
@@ -48,22 +47,21 @@ from homeassistant.const import (
from .common import LocalTuyaEntity, async_setup_entry from .common import LocalTuyaEntity, async_setup_entry
from .const import ( from .const import (
CONF_CURRENT_TEMPERATURE_DP, CONF_CURRENT_TEMPERATURE_DP,
CONF_ECO_DP,
CONF_ECO_VALUE,
CONF_EURISTIC_ACTION,
CONF_FAN_MODE_DP,
CONF_HVAC_ACTION_DP,
CONF_HVAC_ACTION_SET,
CONF_HVAC_MODE_DP,
CONF_HVAC_MODE_SET,
CONF_MAX_TEMP_DP, CONF_MAX_TEMP_DP,
CONF_MIN_TEMP_DP, CONF_MIN_TEMP_DP,
CONF_PRECISION, CONF_PRECISION,
CONF_PRESET_DP,
CONF_PRESET_SET,
CONF_TARGET_PRECISION, CONF_TARGET_PRECISION,
CONF_TARGET_TEMPERATURE_DP, CONF_TARGET_TEMPERATURE_DP,
CONF_TEMPERATURE_STEP, CONF_TEMPERATURE_STEP,
CONF_HVAC_MODE_DP,
CONF_HVAC_MODE_SET,
CONF_EURISTIC_ACTION,
CONF_HVAC_ACTION_DP,
CONF_HVAC_ACTION_SET,
CONF_ECO_DP,
CONF_ECO_VALUE,
CONF_PRESET_DP,
CONF_PRESET_SET,
) )
from . import pytuya from . import pytuya
@@ -72,12 +70,12 @@ _LOGGER = logging.getLogger(__name__)
HVAC_MODE_SETS = { HVAC_MODE_SETS = {
"manual/auto": { "manual/auto": {
HVAC_MODE_AUTO: "auto",
HVAC_MODE_HEAT: "manual", HVAC_MODE_HEAT: "manual",
HVAC_MODE_AUTO: "auto",
}, },
"Manual/Auto": { "Manual/Auto": {
HVAC_MODE_AUTO: "Auto",
HVAC_MODE_HEAT: "Manual", HVAC_MODE_HEAT: "Manual",
HVAC_MODE_AUTO: "Auto",
}, },
"True/False": { "True/False": {
HVAC_MODE_HEAT: True, HVAC_MODE_HEAT: True,
@@ -99,9 +97,9 @@ HVAC_ACTION_SETS = {
} }
PRESET_SETS = { PRESET_SETS = {
"Manual/Holiday/Program": { "Manual/Holiday/Program": {
PRESET_NONE: "Manual",
PRESET_AWAY: "Holiday", PRESET_AWAY: "Holiday",
PRESET_HOME: "Program", PRESET_HOME: "Program",
PRESET_NONE: "Manual",
}, },
} }
@@ -110,6 +108,7 @@ TEMPERATURE_FAHRENHEIT = "fahrenheit"
DEFAULT_TEMPERATURE_UNIT = TEMPERATURE_CELSIUS DEFAULT_TEMPERATURE_UNIT = TEMPERATURE_CELSIUS
DEFAULT_PRECISION = PRECISION_TENTHS DEFAULT_PRECISION = PRECISION_TENTHS
DEFAULT_TEMPERATURE_STEP = PRECISION_HALVES DEFAULT_TEMPERATURE_STEP = PRECISION_HALVES
# Empirically tested to work for AVATTO thermostat
MODE_WAIT = 0.1 MODE_WAIT = 0.1
def flow_schema(dps): def flow_schema(dps):
@@ -146,7 +145,6 @@ def flow_schema(dps):
[PRECISION_WHOLE, PRECISION_HALVES, PRECISION_TENTHS] [PRECISION_WHOLE, PRECISION_HALVES, PRECISION_TENTHS]
), ),
vol.Optional(CONF_EURISTIC_ACTION, default=False): bool, vol.Optional(CONF_EURISTIC_ACTION, default=False): bool,
vol.Optional(CONF_FAN_MODE_DP): vol.In(dps),
} }
@@ -179,7 +177,7 @@ class LocaltuyaClimate(LocalTuyaEntity, ClimateEntity):
self._conf_eco_dp = self._config.get(CONF_ECO_DP) self._conf_eco_dp = self._config.get(CONF_ECO_DP)
self._conf_eco_value = self._config.get(CONF_ECO_VALUE, "ECO") self._conf_eco_value = self._config.get(CONF_ECO_VALUE, "ECO")
self._has_presets = self.has_config(CONF_ECO_DP) or self.has_config(CONF_PRESET_DP) self._has_presets = self.has_config(CONF_ECO_DP) or self.has_config(CONF_PRESET_DP)
_LOGGER.debug(f"Initialized climate [{self.name}]") print("Initialized climate [{}]".format(self.name))
@property @property
def supported_features(self): def supported_features(self):
@@ -189,8 +187,6 @@ class LocaltuyaClimate(LocalTuyaEntity, ClimateEntity):
supported_features = supported_features | SUPPORT_TARGET_TEMPERATURE supported_features = supported_features | SUPPORT_TARGET_TEMPERATURE
if self.has_config(CONF_MAX_TEMP_DP): if self.has_config(CONF_MAX_TEMP_DP):
supported_features = supported_features | SUPPORT_TARGET_TEMPERATURE_RANGE supported_features = supported_features | SUPPORT_TARGET_TEMPERATURE_RANGE
if self.has_config(CONF_FAN_MODE_DP):
supported_features = supported_features | SUPPORT_FAN_MODE
if self.has_config(CONF_PRESET_DP) or self.has_config(CONF_ECO_DP): if self.has_config(CONF_PRESET_DP) or self.has_config(CONF_ECO_DP):
supported_features = supported_features | SUPPORT_PRESET_MODE supported_features = supported_features | SUPPORT_PRESET_MODE
return supported_features return supported_features
@@ -303,6 +299,7 @@ class LocaltuyaClimate(LocalTuyaEntity, ClimateEntity):
return return
if not self._state and self._conf_hvac_mode_dp != self._dp_id: if not self._state and self._conf_hvac_mode_dp != self._dp_id:
await self._device.set_dp(True, self._dp_id) await self._device.set_dp(True, self._dp_id)
# Some thermostats need a small wait before sending another update
await asyncio.sleep(MODE_WAIT) await asyncio.sleep(MODE_WAIT)
await self._device.set_dp(self._conf_hvac_mode_set[hvac_mode], self._conf_hvac_mode_dp) await self._device.set_dp(self._conf_hvac_mode_set[hvac_mode], self._conf_hvac_mode_dp)
@@ -341,7 +338,6 @@ class LocaltuyaClimate(LocalTuyaEntity, ClimateEntity):
self.dps_conf(CONF_CURRENT_TEMPERATURE_DP) * self._precision self.dps_conf(CONF_CURRENT_TEMPERATURE_DP) * self._precision
) )
#_LOGGER.debug("the test is %s", test)he preset status"""
if self._has_presets: if self._has_presets:
if self.has_config(CONF_ECO_DP) and self.dps_conf(CONF_ECO_DP) == self._conf_eco_value: if self.has_config(CONF_ECO_DP) and self.dps_conf(CONF_ECO_DP) == self._conf_eco_value:
self._preset_mode = PRESET_ECO self._preset_mode = PRESET_ECO
@@ -353,7 +349,7 @@ class LocaltuyaClimate(LocalTuyaEntity, ClimateEntity):
else: else:
self._preset_mode = PRESET_NONE self._preset_mode = PRESET_NONE
# Update the HVAC status """Update the HVAC status"""
if self.has_config(CONF_HVAC_MODE_DP): if self.has_config(CONF_HVAC_MODE_DP):
if not self._state: if not self._state:
self._hvac_mode = HVAC_MODE_OFF self._hvac_mode = HVAC_MODE_OFF
@@ -366,7 +362,7 @@ class LocaltuyaClimate(LocalTuyaEntity, ClimateEntity):
# in case hvac mode and preset share the same dp # in case hvac mode and preset share the same dp
self._hvac_mode = HVAC_MODE_AUTO self._hvac_mode = HVAC_MODE_AUTO
# Update the current action """Update the current action"""
for action,value in self._conf_hvac_action_set.items(): for action,value in self._conf_hvac_action_set.items():
if self.dps_conf(CONF_HVAC_ACTION_DP) == value: if self.dps_conf(CONF_HVAC_ACTION_DP) == value:
self._hvac_action = action self._hvac_action = action

View File

@@ -47,7 +47,6 @@ CONF_CURRENT_TEMPERATURE_DP = "current_temperature_dp"
CONF_TEMPERATURE_STEP = "temperature_step" CONF_TEMPERATURE_STEP = "temperature_step"
CONF_MAX_TEMP_DP = "max_temperature_dp" CONF_MAX_TEMP_DP = "max_temperature_dp"
CONF_MIN_TEMP_DP = "min_temperature_dp" CONF_MIN_TEMP_DP = "min_temperature_dp"
CONF_FAN_MODE_DP = "fan_mode_dp"
CONF_PRECISION = "precision" CONF_PRECISION = "precision"
CONF_TARGET_PRECISION = "target_precision" CONF_TARGET_PRECISION = "target_precision"
CONF_HVAC_MODE_DP = "hvac_mode_dp" CONF_HVAC_MODE_DP = "hvac_mode_dp"

View File

@@ -77,7 +77,6 @@
"fan_speed_high": "Fan High Speed Setting", "fan_speed_high": "Fan High Speed Setting",
"current_temperature_dp": "Current Temperature", "current_temperature_dp": "Current Temperature",
"target_temperature_dp": "Target Temperature", "target_temperature_dp": "Target Temperature",
"fan_mode_dp": "Fan Mode (optional)",
"temperature_step": "Temperature Step (optional)", "temperature_step": "Temperature Step (optional)",
"max_temperature_dp": "Max Temperature (optional)", "max_temperature_dp": "Max Temperature (optional)",
"min_temperature_dp": "Min Temperature (optional)", "min_temperature_dp": "Min Temperature (optional)",
@@ -147,7 +146,6 @@
"fan_speed_high": "Fan High Speed Setting", "fan_speed_high": "Fan High Speed Setting",
"current_temperature_dp": "Current Temperature", "current_temperature_dp": "Current Temperature",
"target_temperature_dp": "Target Temperature", "target_temperature_dp": "Target Temperature",
"fan_mode_dp": "Fan Mode (optional)",
"temperature_step": "Temperature Step (optional)", "temperature_step": "Temperature Step (optional)",
"max_temperature_dp": "Max Temperature (optional)", "max_temperature_dp": "Max Temperature (optional)",
"min_temperature_dp": "Min Temperature (optional)", "min_temperature_dp": "Min Temperature (optional)",