Testus +1
This commit is contained in:
@@ -204,6 +204,11 @@ class VersatileThermostat(ClimateEntity, RestoreEntity):
|
||||
_last_temperature_mesure: datetime
|
||||
_last_ext_temperature_mesure: datetime
|
||||
_total_energy: float
|
||||
_overpowering_state: bool
|
||||
_window_state: bool
|
||||
_motion_state: bool
|
||||
_presence_state: bool
|
||||
_security_state: bool
|
||||
|
||||
def __init__(self, hass: HomeAssistant, unique_id, name, entry_infos) -> None:
|
||||
"""Initialize the thermostat."""
|
||||
@@ -366,8 +371,6 @@ class VersatileThermostat(ClimateEntity, RestoreEntity):
|
||||
and self._device_power
|
||||
):
|
||||
self._pmax_on = True
|
||||
self._current_power = 0
|
||||
self._current_power_max = 0
|
||||
else:
|
||||
_LOGGER.info("%s - Power management is not fully configured", self)
|
||||
|
||||
@@ -997,7 +1000,7 @@ class VersatileThermostat(ClimateEntity, RestoreEntity):
|
||||
if self._is_over_climate:
|
||||
return None
|
||||
elif self._device_power:
|
||||
return self._device_power * self._prop_algorithm.on_percent
|
||||
return float(self._device_power * self._prop_algorithm.on_percent)
|
||||
else:
|
||||
return None
|
||||
|
||||
@@ -1006,6 +1009,11 @@ class VersatileThermostat(ClimateEntity, RestoreEntity):
|
||||
"""Returns the total energy calculated for this thermostast"""
|
||||
return self._total_energy
|
||||
|
||||
@property
|
||||
def overpowering_state(self) -> bool | None:
|
||||
"""Get the overpowering_state"""
|
||||
return self._overpowering_state
|
||||
|
||||
def turn_aux_heat_on(self) -> None:
|
||||
"""Turn auxiliary heater on."""
|
||||
if self._is_over_climate and self._underlying_climate:
|
||||
@@ -1696,7 +1704,16 @@ class VersatileThermostat(ClimateEntity, RestoreEntity):
|
||||
"""
|
||||
|
||||
if not self._pmax_on:
|
||||
return
|
||||
_LOGGER.debug("%s - power not configured. check_overpowering not available")
|
||||
return False
|
||||
|
||||
if (
|
||||
self._current_power is None
|
||||
or self._device_power is None
|
||||
or self._current_power_max is None
|
||||
):
|
||||
_LOGGER.warning("%s - power not valued. check_overpowering not available")
|
||||
return False
|
||||
|
||||
_LOGGER.debug(
|
||||
"%s - overpowering check: power=%.3f, max_power=%.3f heater power=%.3f",
|
||||
@@ -1705,6 +1722,7 @@ class VersatileThermostat(ClimateEntity, RestoreEntity):
|
||||
self._current_power_max,
|
||||
self._device_power,
|
||||
)
|
||||
|
||||
ret = self._current_power + self._device_power >= self._current_power_max
|
||||
if not self._overpowering_state and ret and not self._hvac_mode == HVACMode.OFF:
|
||||
_LOGGER.warning(
|
||||
|
||||
@@ -114,3 +114,35 @@ async def send_temperature_change_event(entity: VersatileThermostat, new_temp, d
|
||||
},
|
||||
)
|
||||
await entity._async_temperature_changed(temp_event)
|
||||
|
||||
|
||||
async def send_power_change_event(entity: VersatileThermostat, new_power, date):
|
||||
"""Sending a new power event simulating a change on power sensor"""
|
||||
power_event = Event(
|
||||
EVENT_STATE_CHANGED,
|
||||
{
|
||||
"new_state": State(
|
||||
entity_id=entity.entity_id,
|
||||
state=new_power,
|
||||
last_changed=date,
|
||||
last_updated=date,
|
||||
)
|
||||
},
|
||||
)
|
||||
await entity._async_power_changed(power_event)
|
||||
|
||||
|
||||
async def send_max_power_change_event(entity: VersatileThermostat, new_power_max, date):
|
||||
"""Sending a new power event simulating a change on power max sensor"""
|
||||
power_event = Event(
|
||||
EVENT_STATE_CHANGED,
|
||||
{
|
||||
"new_state": State(
|
||||
entity_id=entity.entity_id,
|
||||
state=new_power_max,
|
||||
last_changed=date,
|
||||
last_updated=date,
|
||||
)
|
||||
},
|
||||
)
|
||||
await entity._async_max_power_changed(power_event)
|
||||
|
||||
@@ -46,7 +46,7 @@ async def test_tpi_calculation(hass: HomeAssistant, skip_hass_states_is_state):
|
||||
assert tpi_algo.calculated_on_percent == 1
|
||||
assert tpi_algo.on_time_sec == 300
|
||||
assert tpi_algo.off_time_sec == 0
|
||||
assert entity.mean_cycle_power is None
|
||||
assert entity.mean_cycle_power is None # no device power configured
|
||||
|
||||
tpi_algo.calculate(15, 14, 5)
|
||||
assert tpi_algo.on_percent == 0.4
|
||||
|
||||
Reference in New Issue
Block a user