mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 11:47:06 +00:00
Fix climate hold bug in ecobee (#46613)
This commit is contained in:
parent
08201d146b
commit
960b5b7d86
@ -559,7 +559,7 @@ class Thermostat(ClimateEntity):
|
|||||||
|
|
||||||
if preset_mode == PRESET_AWAY:
|
if preset_mode == PRESET_AWAY:
|
||||||
self.data.ecobee.set_climate_hold(
|
self.data.ecobee.set_climate_hold(
|
||||||
self.thermostat_index, "away", "indefinite"
|
self.thermostat_index, "away", "indefinite", self.hold_hours()
|
||||||
)
|
)
|
||||||
|
|
||||||
elif preset_mode == PRESET_TEMPERATURE:
|
elif preset_mode == PRESET_TEMPERATURE:
|
||||||
@ -570,6 +570,7 @@ class Thermostat(ClimateEntity):
|
|||||||
self.thermostat_index,
|
self.thermostat_index,
|
||||||
PRESET_TO_ECOBEE_HOLD[preset_mode],
|
PRESET_TO_ECOBEE_HOLD[preset_mode],
|
||||||
self.hold_preference(),
|
self.hold_preference(),
|
||||||
|
self.hold_hours(),
|
||||||
)
|
)
|
||||||
|
|
||||||
elif preset_mode == PRESET_NONE:
|
elif preset_mode == PRESET_NONE:
|
||||||
@ -585,14 +586,20 @@ class Thermostat(ClimateEntity):
|
|||||||
|
|
||||||
if climate_ref is not None:
|
if climate_ref is not None:
|
||||||
self.data.ecobee.set_climate_hold(
|
self.data.ecobee.set_climate_hold(
|
||||||
self.thermostat_index, climate_ref, self.hold_preference()
|
self.thermostat_index,
|
||||||
|
climate_ref,
|
||||||
|
self.hold_preference(),
|
||||||
|
self.hold_hours(),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
_LOGGER.warning("Received unknown preset mode: %s", preset_mode)
|
_LOGGER.warning("Received unknown preset mode: %s", preset_mode)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
self.data.ecobee.set_climate_hold(
|
self.data.ecobee.set_climate_hold(
|
||||||
self.thermostat_index, preset_mode, self.hold_preference()
|
self.thermostat_index,
|
||||||
|
preset_mode,
|
||||||
|
self.hold_preference(),
|
||||||
|
self.hold_hours(),
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -743,7 +750,7 @@ class Thermostat(ClimateEntity):
|
|||||||
"useEndTime2hour": 2,
|
"useEndTime2hour": 2,
|
||||||
"useEndTime4hour": 4,
|
"useEndTime4hour": 4,
|
||||||
}
|
}
|
||||||
return hold_hours_map.get(device_preference, 0)
|
return hold_hours_map.get(device_preference)
|
||||||
|
|
||||||
def create_vacation(self, service_data):
|
def create_vacation(self, service_data):
|
||||||
"""Create a vacation with user-specified parameters."""
|
"""Create a vacation with user-specified parameters."""
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
"name": "ecobee",
|
"name": "ecobee",
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/integrations/ecobee",
|
"documentation": "https://www.home-assistant.io/integrations/ecobee",
|
||||||
"requirements": ["python-ecobee-api==0.2.8"],
|
"requirements": ["python-ecobee-api==0.2.10"],
|
||||||
"codeowners": ["@marthoc"]
|
"codeowners": ["@marthoc"]
|
||||||
}
|
}
|
||||||
|
@ -1747,7 +1747,7 @@ python-clementine-remote==1.0.1
|
|||||||
python-digitalocean==1.13.2
|
python-digitalocean==1.13.2
|
||||||
|
|
||||||
# homeassistant.components.ecobee
|
# homeassistant.components.ecobee
|
||||||
python-ecobee-api==0.2.8
|
python-ecobee-api==0.2.10
|
||||||
|
|
||||||
# homeassistant.components.eq3btsmart
|
# homeassistant.components.eq3btsmart
|
||||||
# python-eq3bt==0.1.11
|
# python-eq3bt==0.1.11
|
||||||
|
@ -914,7 +914,7 @@ pysqueezebox==0.5.5
|
|||||||
pysyncthru==0.7.0
|
pysyncthru==0.7.0
|
||||||
|
|
||||||
# homeassistant.components.ecobee
|
# homeassistant.components.ecobee
|
||||||
python-ecobee-api==0.2.8
|
python-ecobee-api==0.2.10
|
||||||
|
|
||||||
# homeassistant.components.darksky
|
# homeassistant.components.darksky
|
||||||
python-forecastio==1.4.0
|
python-forecastio==1.4.0
|
||||||
|
@ -209,14 +209,14 @@ async def test_set_temperature(ecobee_fixture, thermostat, data):
|
|||||||
data.reset_mock()
|
data.reset_mock()
|
||||||
thermostat.set_temperature(target_temp_low=20, target_temp_high=30)
|
thermostat.set_temperature(target_temp_low=20, target_temp_high=30)
|
||||||
data.ecobee.set_hold_temp.assert_has_calls(
|
data.ecobee.set_hold_temp.assert_has_calls(
|
||||||
[mock.call(1, 30, 20, "nextTransition", 0)]
|
[mock.call(1, 30, 20, "nextTransition", None)]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Auto -> Hold
|
# Auto -> Hold
|
||||||
data.reset_mock()
|
data.reset_mock()
|
||||||
thermostat.set_temperature(temperature=20)
|
thermostat.set_temperature(temperature=20)
|
||||||
data.ecobee.set_hold_temp.assert_has_calls(
|
data.ecobee.set_hold_temp.assert_has_calls(
|
||||||
[mock.call(1, 25, 15, "nextTransition", 0)]
|
[mock.call(1, 25, 15, "nextTransition", None)]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Cool -> Hold
|
# Cool -> Hold
|
||||||
@ -224,7 +224,7 @@ async def test_set_temperature(ecobee_fixture, thermostat, data):
|
|||||||
ecobee_fixture["settings"]["hvacMode"] = "cool"
|
ecobee_fixture["settings"]["hvacMode"] = "cool"
|
||||||
thermostat.set_temperature(temperature=20.5)
|
thermostat.set_temperature(temperature=20.5)
|
||||||
data.ecobee.set_hold_temp.assert_has_calls(
|
data.ecobee.set_hold_temp.assert_has_calls(
|
||||||
[mock.call(1, 20.5, 20.5, "nextTransition", 0)]
|
[mock.call(1, 20.5, 20.5, "nextTransition", None)]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Heat -> Hold
|
# Heat -> Hold
|
||||||
@ -232,7 +232,7 @@ async def test_set_temperature(ecobee_fixture, thermostat, data):
|
|||||||
ecobee_fixture["settings"]["hvacMode"] = "heat"
|
ecobee_fixture["settings"]["hvacMode"] = "heat"
|
||||||
thermostat.set_temperature(temperature=20)
|
thermostat.set_temperature(temperature=20)
|
||||||
data.ecobee.set_hold_temp.assert_has_calls(
|
data.ecobee.set_hold_temp.assert_has_calls(
|
||||||
[mock.call(1, 20, 20, "nextTransition", 0)]
|
[mock.call(1, 20, 20, "nextTransition", None)]
|
||||||
)
|
)
|
||||||
|
|
||||||
# Heat -> Auto
|
# Heat -> Auto
|
||||||
@ -311,7 +311,7 @@ def test_hold_hours(ecobee_fixture, thermostat):
|
|||||||
"askMe",
|
"askMe",
|
||||||
]:
|
]:
|
||||||
ecobee_fixture["settings"]["holdAction"] = action
|
ecobee_fixture["settings"]["holdAction"] = action
|
||||||
assert thermostat.hold_hours() == 0
|
assert thermostat.hold_hours() is None
|
||||||
|
|
||||||
|
|
||||||
async def test_set_fan_mode_on(thermostat, data):
|
async def test_set_fan_mode_on(thermostat, data):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user