Compare commits
2 Commits
6.6.0
...
6.6.1.beta1
| Author | SHA1 | Date | |
|---|---|---|---|
| ae9b065387 | |||
| 2d79d961dc |
@@ -84,6 +84,10 @@ def get_tz(hass: HomeAssistant):
|
|||||||
return dt_util.get_time_zone(hass.config.time_zone)
|
return dt_util.get_time_zone(hass.config.time_zone)
|
||||||
|
|
||||||
|
|
||||||
|
_LOGGER_ENERGY = logging.getLogger(
|
||||||
|
"custom_components.versatile_thermostat.energy_debug"
|
||||||
|
)
|
||||||
|
|
||||||
class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
||||||
"""Representation of a base class for all Versatile Thermostat device."""
|
"""Representation of a base class for all Versatile Thermostat device."""
|
||||||
|
|
||||||
@@ -198,6 +202,7 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
|||||||
self._attr_translation_key = "versatile_thermostat"
|
self._attr_translation_key = "versatile_thermostat"
|
||||||
|
|
||||||
self._total_energy = None
|
self._total_energy = None
|
||||||
|
_LOGGER_ENERGY.debug("%s - _init_ resetting energy to None", self)
|
||||||
|
|
||||||
# because energy of climate is calculated in the thermostat we have to keep that here and not in underlying entity
|
# because energy of climate is calculated in the thermostat we have to keep that here and not in underlying entity
|
||||||
self._underlying_climate_start_hvac_action_date = None
|
self._underlying_climate_start_hvac_action_date = None
|
||||||
@@ -470,6 +475,7 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
|||||||
self._presence_state = None
|
self._presence_state = None
|
||||||
|
|
||||||
self._total_energy = None
|
self._total_energy = None
|
||||||
|
_LOGGER_ENERGY.debug("%s - post_init_ resetting energy to None", self)
|
||||||
|
|
||||||
# Read the parameter from configuration.yaml if it exists
|
# Read the parameter from configuration.yaml if it exists
|
||||||
short_ema_params = DEFAULT_SHORT_EMA_PARAMS
|
short_ema_params = DEFAULT_SHORT_EMA_PARAMS
|
||||||
@@ -804,6 +810,11 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
|||||||
|
|
||||||
old_total_energy = old_state.attributes.get(ATTR_TOTAL_ENERGY)
|
old_total_energy = old_state.attributes.get(ATTR_TOTAL_ENERGY)
|
||||||
self._total_energy = old_total_energy if old_total_energy is not None else 0
|
self._total_energy = old_total_energy if old_total_energy is not None else 0
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - get_my_previous_state restored energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
|
|
||||||
self.restore_specific_previous_state(old_state)
|
self.restore_specific_previous_state(old_state)
|
||||||
else:
|
else:
|
||||||
@@ -817,6 +828,11 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
|||||||
"No previously saved temperature, setting to %s", self._target_temp
|
"No previously saved temperature, setting to %s", self._target_temp
|
||||||
)
|
)
|
||||||
self._total_energy = 0
|
self._total_energy = 0
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - get_my_previous_state no previous state energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
|
|
||||||
if not self._hvac_mode:
|
if not self._hvac_mode:
|
||||||
self._hvac_mode = HVACMode.OFF
|
self._hvac_mode = HVACMode.OFF
|
||||||
@@ -2622,6 +2638,22 @@ class BaseThermostat(ClimateEntity, RestoreEntity, Generic[T]):
|
|||||||
"hvac_off_reason": self.hvac_off_reason,
|
"hvac_off_reason": self.hvac_off_reason,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - update_custom_attributes saved energy is %s",
|
||||||
|
self,
|
||||||
|
self.total_energy,
|
||||||
|
)
|
||||||
|
|
||||||
|
@overrides
|
||||||
|
def async_write_ha_state(self):
|
||||||
|
"""overrides to have log"""
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - async_write_ha_state written state energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
|
return super().async_write_ha_state()
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_registry_entry_updated(self):
|
def async_registry_entry_updated(self):
|
||||||
"""update the entity if the config entry have been updated
|
"""update the entity if the config entry have been updated
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ from .const import DOMAIN, DEVICE_MANUFACTURER, ServiceConfigurationError
|
|||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_tz(hass: HomeAssistant):
|
def get_tz(hass: HomeAssistant):
|
||||||
"""Get the current timezone"""
|
"""Get the current timezone"""
|
||||||
|
|
||||||
|
|||||||
@@ -354,7 +354,11 @@ CONF_WINDOW_ACTIONS = [
|
|||||||
CONF_WINDOW_ECO_TEMP,
|
CONF_WINDOW_ECO_TEMP,
|
||||||
]
|
]
|
||||||
|
|
||||||
SUPPORT_FLAGS = ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.TURN_OFF | ClimateEntityFeature.TURN_ON
|
SUPPORT_FLAGS = (
|
||||||
|
ClimateEntityFeature.TARGET_TEMPERATURE
|
||||||
|
| ClimateEntityFeature.TURN_OFF
|
||||||
|
| ClimateEntityFeature.TURN_ON
|
||||||
|
)
|
||||||
|
|
||||||
SERVICE_SET_PRESENCE = "set_presence"
|
SERVICE_SET_PRESENCE = "set_presence"
|
||||||
SERVICE_SET_PRESET_TEMPERATURE = "set_preset_temperature"
|
SERVICE_SET_PRESET_TEMPERATURE = "set_preset_temperature"
|
||||||
|
|||||||
@@ -31,6 +31,10 @@ from .auto_start_stop_algorithm import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
_LOGGER_ENERGY = logging.getLogger(
|
||||||
|
"custom_components.versatile_thermostat.energy_debug"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
HVAC_ACTION_ON = [ # pylint: disable=invalid-name
|
HVAC_ACTION_ON = [ # pylint: disable=invalid-name
|
||||||
HVACAction.COOLING,
|
HVACAction.COOLING,
|
||||||
@@ -549,6 +553,7 @@ class ThermostatOverClimate(BaseThermostat[UnderlyingClimate]):
|
|||||||
] = self._auto_start_stop_algo.accumulated_error_threshold
|
] = self._auto_start_stop_algo.accumulated_error_threshold
|
||||||
|
|
||||||
self.async_write_ha_state()
|
self.async_write_ha_state()
|
||||||
|
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"%s - Calling update_custom_attributes: %s",
|
"%s - Calling update_custom_attributes: %s",
|
||||||
self,
|
self,
|
||||||
@@ -595,8 +600,18 @@ class ThermostatOverClimate(BaseThermostat[UnderlyingClimate]):
|
|||||||
|
|
||||||
if self._total_energy is None:
|
if self._total_energy is None:
|
||||||
self._total_energy = added_energy
|
self._total_energy = added_energy
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - incremente_energy set energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
self._total_energy += added_energy
|
self._total_energy += added_energy
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - incremente_energy incremented energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
|
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
"%s - added energy is %.3f . Total energy is now: %.3f",
|
"%s - added energy is %.3f . Total energy is now: %.3f",
|
||||||
|
|||||||
@@ -21,7 +21,9 @@ from .underlyings import UnderlyingSwitch
|
|||||||
from .prop_algorithm import PropAlgorithm
|
from .prop_algorithm import PropAlgorithm
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
_LOGGER_ENERGY = logging.getLogger(
|
||||||
|
"custom_components.versatile_thermostat.energy_debug"
|
||||||
|
)
|
||||||
|
|
||||||
class ThermostatOverSwitch(BaseThermostat[UnderlyingSwitch]):
|
class ThermostatOverSwitch(BaseThermostat[UnderlyingSwitch]):
|
||||||
"""Representation of a base class for a Versatile Thermostat over a switch."""
|
"""Representation of a base class for a Versatile Thermostat over a switch."""
|
||||||
@@ -183,8 +185,18 @@ class ThermostatOverSwitch(BaseThermostat[UnderlyingSwitch]):
|
|||||||
|
|
||||||
if self._total_energy is None:
|
if self._total_energy is None:
|
||||||
self._total_energy = added_energy
|
self._total_energy = added_energy
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - incremente_energy set energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
self._total_energy += added_energy
|
self._total_energy += added_energy
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - incremente_energy increment energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
|
|
||||||
self.update_custom_attributes()
|
self.update_custom_attributes()
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,9 @@ from .const import (
|
|||||||
from .underlyings import UnderlyingValve
|
from .underlyings import UnderlyingValve
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
_LOGGER_ENERGY = logging.getLogger(
|
||||||
|
"custom_components.versatile_thermostat.energy_debug"
|
||||||
|
)
|
||||||
|
|
||||||
class ThermostatOverValve(BaseThermostat[UnderlyingValve]): # pylint: disable=abstract-method
|
class ThermostatOverValve(BaseThermostat[UnderlyingValve]): # pylint: disable=abstract-method
|
||||||
"""Representation of a class for a Versatile Thermostat over a Valve"""
|
"""Representation of a class for a Versatile Thermostat over a Valve"""
|
||||||
@@ -265,8 +267,18 @@ class ThermostatOverValve(BaseThermostat[UnderlyingValve]): # pylint: disable=a
|
|||||||
|
|
||||||
if self._total_energy is None:
|
if self._total_energy is None:
|
||||||
self._total_energy = added_energy
|
self._total_energy = added_energy
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - incremente_energy set energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
self._total_energy += added_energy
|
self._total_energy += added_energy
|
||||||
|
_LOGGER_ENERGY.debug(
|
||||||
|
"%s - get_my_previous_state increment energy is %s",
|
||||||
|
self,
|
||||||
|
self._total_energy,
|
||||||
|
)
|
||||||
|
|
||||||
self.update_custom_attributes()
|
self.update_custom_attributes()
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@
|
|||||||
"use_motion_feature": "Use motion detection",
|
"use_motion_feature": "Use motion detection",
|
||||||
"use_power_feature": "Use power management",
|
"use_power_feature": "Use power management",
|
||||||
"use_presence_feature": "Use presence detection",
|
"use_presence_feature": "Use presence detection",
|
||||||
"use_central_boiler_feature": "Use a central boiler. Check to add a control to your central boiler. You will have to configure the VTherm which will have a control of the central boiler after seecting this checkbox to take effect. If one VTherm requires heating, the boiler will be turned on. If no VTherm requires heating, the boiler will be turned off. Commands for turning on/off the central boiler are given in the related configuration page",
|
"use_central_boiler_feature": "Use a central boiler. Check to add a control to your central boiler. You will have to configure the VTherm which will have a control of the central boiler after selecting this checkbox to take effect. If one VTherm requires heating, the boiler will be turned on. If no VTherm requires heating, the boiler will be turned off. Commands for turning on/off the central boiler are given in the related configuration page",
|
||||||
"use_auto_start_stop_feature": "Use the auto start and stop feature"
|
"use_auto_start_stop_feature": "Use the auto start and stop feature"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user