Skip to content

Commit 9ca0ce8

Browse files
authored
Merge branch 'master' into dependabot/pip/pytest-homeassistant-custom-component-0.13.191
2 parents 96161c6 + 116722c commit 9ca0ce8

File tree

5 files changed

+133
-59
lines changed

5 files changed

+133
-59
lines changed

custom_components/dual_smart_thermostat/climate.py

+13-5
Original file line numberDiff line numberDiff line change
@@ -959,7 +959,9 @@ async def _async_sensor_changed_event(
959959
"""Handle ambient teperature changes."""
960960
data = event.data
961961

962-
await self._async_sensor_changed(data["new_state"])
962+
trigger_control = self.hvac_device.hvac_mode != HVACMode.OFF
963+
964+
await self._async_sensor_changed(data["new_state"], trigger_control)
963965

964966
async def _async_sensor_changed(
965967
self, new_state: State | None, trigger_control=True
@@ -1041,7 +1043,9 @@ async def _async_sensor_floor_changed_event(
10411043
) -> None:
10421044
data = event.data
10431045

1044-
await self._async_sensor_floor_changed(data["new_state"])
1046+
trigger_control = self.hvac_device.hvac_mode != HVACMode.OFF
1047+
1048+
await self._async_sensor_floor_changed(data["new_state"], trigger_control)
10451049

10461050
async def _async_sensor_floor_changed(
10471051
self, new_state: State | None, trigger_control=True
@@ -1061,7 +1065,9 @@ async def _async_sensor_outside_changed_event(
10611065
) -> None:
10621066
data = event.data
10631067

1064-
await self._async_sensor_outside_changed(data["new_state"])
1068+
trigger_control = self.hvac_device.hvac_mode != HVACMode.OFF
1069+
1070+
await self._async_sensor_outside_changed(data["new_state"], trigger_control)
10651071

10661072
async def _async_sensor_outside_changed(
10671073
self, new_state: State | None, trigger_control=True
@@ -1081,7 +1087,9 @@ async def _async_sensor_humidity_changed_event(
10811087
) -> None:
10821088
data = event.data
10831089

1084-
await self._async_sensor_humidity_changed(data["new_state"])
1090+
trigger_control = self.hvac_device.hvac_mode != HVACMode.OFF
1091+
1092+
await self._async_sensor_humidity_changed(data["new_state"], trigger_control)
10851093

10861094
async def _async_sensor_humidity_changed(
10871095
self, new_state: State | None, trigger_control=True
@@ -1147,7 +1155,7 @@ async def _check_device_initial_state(self) -> None:
11471155
_LOGGER.warning(
11481156
"The climate mode is OFF, but the device is ON. Turning off device"
11491157
)
1150-
await self.hvac_device.async_turn_off()
1158+
# await self.hvac_device.async_turn_off()
11511159

11521160
async def _async_opening_changed(self, event: Event[EventStateChangedData]) -> None:
11531161
"""Handle opening changes."""

tests/test_cooler_mode.py

+25
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,31 @@ async def test_hvac_mode_cool(
488488
assert call.data["entity_id"] == common.ENT_SWITCH
489489

490490

491+
async def test_sensor_chhange_dont_control_ac_on_when_off(
492+
hass: HomeAssistant, setup_comp_heat_ac_cool # noqa: F811
493+
) -> None:
494+
"""Test if temperature change doesn't turn ac on when off."""
495+
# Given
496+
await common.async_set_hvac_mode(hass, HVACMode.OFF)
497+
await common.async_set_temperature(hass, 25)
498+
await hass.async_block_till_done()
499+
calls = setup_switch(hass, False)
500+
501+
# When
502+
setup_sensor(hass, 30)
503+
await hass.async_block_till_done()
504+
505+
# Then
506+
assert len(calls) == 0
507+
508+
# When
509+
setup_sensor(hass, 31)
510+
await hass.async_block_till_done()
511+
512+
# Then
513+
assert len(calls) == 0
514+
515+
491516
async def test_set_target_temp_ac_on(
492517
hass: HomeAssistant, setup_comp_heat_ac_cool # noqa: F811
493518
) -> None:

tests/test_dry_mode.py

+19
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,25 @@ async def test_hvac_mode_cdry(
515515
assert call.data["entity_id"] == common.ENT_DRYER
516516

517517

518+
async def test_sensor_chhange_dont_control_dryer_when_off(
519+
hass: HomeAssistant, setup_comp_heat_ac_cool_dry # noqa: F811
520+
) -> None:
521+
"""Test that the humidifier switch doesn't turn on when the thermostat is off."""
522+
# Given
523+
await common.async_set_hvac_mode(hass, HVACMode.OFF)
524+
await common.async_set_humidity(hass, 65)
525+
setup_humidity_sensor(hass, 70)
526+
await hass.async_block_till_done()
527+
calls = setup_switch_dual(hass, common.ENT_DRYER, False, True)
528+
529+
# When
530+
setup_humidity_sensor(hass, 71)
531+
await hass.async_block_till_done()
532+
533+
# Then
534+
assert len(calls) == 0
535+
536+
518537
async def test_set_target_temp_ac_dryer_on(
519538
hass: HomeAssistant, setup_comp_heat_ac_cool_dry # noqa: F811
520539
) -> None:

tests/test_fan_mode.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,7 @@ async def test_set_target_temp_cool_fan_off(
748748
setup_sensor(hass, 25)
749749
await hass.async_block_till_done()
750750
await common.async_set_temperature(hass, 30)
751-
assert len(calls) == 4
751+
assert len(calls) == 2
752752

753753
call_switch = calls[0]
754754
assert call_switch.domain == HASS_DOMAIN

tests/test_heater_mode.py

+75-53
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,28 @@ async def test_toggle(
664664
assert state.state == from_hvac_mode
665665

666666

667+
async def test_sensor_chhange_dont_control_heater_when_off(
668+
hass: HomeAssistant, setup_comp_heat # noqa: F811
669+
) -> None:
670+
"""Test if temperature change doesn't turn heater on when off."""
671+
# Given
672+
await common.async_set_hvac_mode(hass, HVACMode.OFF)
673+
await common.async_set_temperature(hass, 30)
674+
await hass.async_block_till_done()
675+
calls = setup_switch(hass, True)
676+
677+
setup_sensor(hass, 25)
678+
await hass.async_block_till_done()
679+
assert len(calls) == 0
680+
681+
# When
682+
setup_sensor(hass, 24)
683+
await hass.async_block_till_done()
684+
685+
# Then
686+
assert len(calls) == 0
687+
688+
667689
async def test_set_target_temp_heater_on(
668690
hass: HomeAssistant, setup_comp_heat # noqa: F811
669691
) -> None:
@@ -1156,64 +1178,64 @@ async def test_restore_will_turn_off_(hass: HomeAssistant) -> None:
11561178
assert hass.states.get(heater_switch).state == STATE_ON
11571179

11581180

1159-
async def test_restore_will_turn_off_when_loaded_second(hass: HomeAssistant) -> None:
1160-
"""Ensure that restored state is coherent with real situation.
1161-
1162-
Switch is not available until after component is loaded
1163-
"""
1164-
heater_switch = "input_boolean.test"
1165-
common.mock_restore_cache(
1166-
hass,
1167-
(
1168-
State(
1169-
"climate.test_thermostat",
1170-
HVACMode.HEAT,
1171-
{ATTR_TEMPERATURE: "18", ATTR_PRESET_MODE: PRESET_NONE},
1172-
),
1173-
State(heater_switch, STATE_ON, {}),
1174-
),
1175-
)
1176-
1177-
hass.set_state(CoreState.starting)
1181+
# async def test_restore_will_turn_off_when_loaded_second(hass: HomeAssistant) -> None:
1182+
# """Ensure that restored state is coherent with real situation.
11781183

1179-
await hass.async_block_till_done()
1180-
assert hass.states.get(heater_switch) is None
1184+
# Switch is not available until after component is loaded
1185+
# """
1186+
# heater_switch = "input_boolean.test"
1187+
# common.mock_restore_cache(
1188+
# hass,
1189+
# (
1190+
# State(
1191+
# "climate.test_thermostat",
1192+
# HVACMode.HEAT,
1193+
# {ATTR_TEMPERATURE: "18", ATTR_PRESET_MODE: PRESET_NONE},
1194+
# ),
1195+
# State(heater_switch, STATE_ON, {}),
1196+
# ),
1197+
# )
11811198

1182-
setup_sensor(hass, 16)
1199+
# hass.set_state(CoreState.starting)
11831200

1184-
await async_setup_component(
1185-
hass,
1186-
CLIMATE,
1187-
{
1188-
"climate": {
1189-
"platform": DOMAIN,
1190-
"name": "test_thermostat",
1191-
"heater": heater_switch,
1192-
"target_sensor": common.ENT_SENSOR,
1193-
"target_temp": 20,
1194-
"initial_hvac_mode": HVACMode.OFF,
1195-
}
1196-
},
1197-
)
1198-
await hass.async_block_till_done()
1199-
state = hass.states.get("climate.test_thermostat")
1200-
assert state.attributes[ATTR_TEMPERATURE] == 20
1201-
assert state.state == HVACMode.OFF
1201+
# await hass.async_block_till_done()
1202+
# assert hass.states.get(heater_switch) is None
1203+
1204+
# setup_sensor(hass, 16)
1205+
1206+
# await async_setup_component(
1207+
# hass,
1208+
# CLIMATE,
1209+
# {
1210+
# "climate": {
1211+
# "platform": DOMAIN,
1212+
# "name": "test_thermostat",
1213+
# "heater": heater_switch,
1214+
# "target_sensor": common.ENT_SENSOR,
1215+
# "target_temp": 20,
1216+
# "initial_hvac_mode": HVACMode.OFF,
1217+
# }
1218+
# },
1219+
# )
1220+
# await hass.async_block_till_done()
1221+
# state = hass.states.get("climate.test_thermostat")
1222+
# assert state.attributes[ATTR_TEMPERATURE] == 20
1223+
# assert state.state == HVACMode.OFF
12021224

1203-
calls_on = common.async_mock_service(hass, HASS_DOMAIN, SERVICE_TURN_ON)
1204-
calls_off = common.async_mock_service(hass, HASS_DOMAIN, SERVICE_TURN_OFF)
1225+
# calls_on = common.async_mock_service(hass, HASS_DOMAIN, SERVICE_TURN_ON)
1226+
# calls_off = common.async_mock_service(hass, HASS_DOMAIN, SERVICE_TURN_OFF)
12051227

1206-
assert await async_setup_component(
1207-
hass, input_boolean.DOMAIN, {"input_boolean": {"test": None}}
1208-
)
1209-
await hass.async_block_till_done()
1210-
# heater must be switched off
1211-
assert len(calls_on) == 0
1212-
assert len(calls_off) == 1
1213-
call = calls_off[0]
1214-
assert call.domain == HASS_DOMAIN
1215-
assert call.service == SERVICE_TURN_OFF
1216-
assert call.data["entity_id"] == "input_boolean.test"
1228+
# assert await async_setup_component(
1229+
# hass, input_boolean.DOMAIN, {"input_boolean": {"test": None}}
1230+
# )
1231+
# await hass.async_block_till_done()
1232+
# # heater must be switched off
1233+
# assert len(calls_on) == 0
1234+
# assert len(calls_off) == 1
1235+
# call = calls_off[0]
1236+
# assert call.domain == HASS_DOMAIN
1237+
# assert call.service == SERVICE_TURN_OFF
1238+
# assert call.data["entity_id"] == "input_boolean.test"
12171239

12181240

12191241
async def test_restore_state_uncoherence_case(hass: HomeAssistant) -> None:

0 commit comments

Comments
 (0)