2016-08-19 07:17:28 +00:00
|
|
|
"""The test the Honeywell thermostat module."""
|
|
|
|
import unittest
|
|
|
|
from unittest import mock
|
|
|
|
|
2019-12-09 13:19:48 +00:00
|
|
|
import pytest
|
Improve evohome exception handling and fix bugs (#22140)
* Use latest client library, evohomeclient v0.3.1
* Fix issue #22097: Failed to call service climate/turn_on...
* BUGFIX: handle case where a Zone doesn't have a temperature
* BUGFIX: missing exception handler, and inappropriate delint hints
* Improve exception handling, and also better messages
* improve code (REDACT secrets); remove TODOs
* minor refactor - improve error message
* more refactoring - improve error message
* remove TODOs
* update to latest evohomeclient library
* Use latest client library, evohomeclient v0.3.1
* Fix issue #22097: Failed to call service climate/turn_on...
* BUGFIX: handle case where a Zone doesn't have a temperature
* BUGFIX: missing exception handler, and inappropriate delint hints
* Improve exception handling, and also better messages
* improve code (REDACT secrets); remove TODOs
* minor refactor - improve error message
* more refactoring - improve error message
* remove TODOs
* update to latest evohomeclient library
* fix requests for houndci-bot
* Tidy up requests exception handling
* Correct lint error
* update to latest client library
* minor de-lint
* more cleanup of exceptions, messages
* refactored for new exception
* fix error in requirements*_all.txt
* de-lint
* delint unused import
* import 3rd-party library only inside methods
* change honeywell tests
* delint, fix typo
* we dont log usernames, passwords, etc.
* de-lint
2019-04-02 13:11:26 +00:00
|
|
|
import requests.exceptions
|
2016-08-19 07:17:28 +00:00
|
|
|
import somecomfort
|
2019-12-09 13:19:48 +00:00
|
|
|
import voluptuous as vol
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-02-14 19:34:43 +00:00
|
|
|
from homeassistant.components.climate.const import (
|
2019-07-31 19:25:30 +00:00
|
|
|
ATTR_FAN_MODE,
|
|
|
|
ATTR_FAN_MODES,
|
|
|
|
ATTR_HVAC_MODES,
|
|
|
|
)
|
2019-03-19 06:07:39 +00:00
|
|
|
import homeassistant.components.honeywell.climate as honeywell
|
2019-12-09 13:19:48 +00:00
|
|
|
from homeassistant.const import (
|
|
|
|
CONF_PASSWORD,
|
|
|
|
CONF_USERNAME,
|
|
|
|
TEMP_CELSIUS,
|
|
|
|
TEMP_FAHRENHEIT,
|
|
|
|
)
|
Climate 1.0 (#23899)
* Climate 1.0 / part 1/2/3
* fix flake
* Lint
* Update Google Assistant
* ambiclimate to climate 1.0 (#24911)
* Fix Alexa
* Lint
* Migrate zhong_hong
* Migrate tuya
* Migrate honeywell to new climate schema (#24257)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* Fix PRESET can be None
* apply PR#23913 from dev
* remove EU component, etc.
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* apply PR#23913 from dev
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* delint, move debug code
* away preset now working
* code tidy-up
* code tidy-up 2
* code tidy-up 3
* address issues #18932, #15063
* address issues #18932, #15063 - 2/2
* refactor MODE_AUTO to MODE_HEAT_COOL and use F not C
* add low/high to set_temp
* add low/high to set_temp 2
* add low/high to set_temp - delint
* run HA scripts
* port changes from PR #24402
* manual rebase
* manual rebase 2
* delint
* minor change
* remove SUPPORT_HVAC_ACTION
* Migrate radiotherm
* Convert touchline
* Migrate flexit
* Migrate nuheat
* Migrate maxcube
* Fix names maxcube const
* Migrate proliphix
* Migrate heatmiser
* Migrate fritzbox
* Migrate opentherm_gw
* Migrate venstar
* Migrate daikin
* Migrate modbus
* Fix elif
* Migrate Homematic IP Cloud to climate-1.0 (#24913)
* hmip climate fix
* Update hvac_mode and preset_mode
* fix lint
* Fix lint
* Migrate generic_thermostat
* Migrate incomfort to new climate schema (#24915)
* initial commit
* Update climate.py
* Migrate eq3btsmart
* Lint
* cleanup PRESET_MANUAL
* Migrate ecobee
* No conditional features
* KNX: Migrate climate component to new climate platform (#24931)
* Migrate climate component
* Remove unused code
* Corrected line length
* Lint
* Lint
* fix tests
* Fix value
* Migrate geniushub to new climate schema (#24191)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* delinted
* delinted
* use latest client
* clean up mappings
* clean up mappings
* add duration to set_temperature
* add duration to set_temperature
* manual rebase
* tweak
* fix regression
* small fix
* fix rebase mixup
* address comments
* finish refactor
* fix regression
* tweak type hints
* delint
* manual rebase
* WIP: Fixes for honeywell migration to climate-1.0 (#24938)
* add type hints
* code tidy-up
* Fixes for incomfort migration to climate-1.0 (#24936)
* delint type hints
* no async unless await
* revert: no async unless await
* revert: no async unless await 2
* delint
* fix typo
* Fix homekit_controller on climate-1.0 (#24948)
* Fix tests on climate-1.0 branch
* As part of climate-1.0, make state return the heating-cooling.current characteristic
* Fixes from review
* lint
* Fix imports
* Migrate stibel_eltron
* Fix lint
* Migrate coolmaster to climate 1.0 (#24967)
* Migrate coolmaster to climate 1.0
* fix lint errors
* More lint fixes
* Fix demo to work with UI
* Migrate spider
* Demo update
* Updated frontend to 20190705.0
* Fix boost mode (#24980)
* Prepare Netatmo for climate 1.0 (#24973)
* Migration Netatmo
* Address comments
* Update climate.py
* Migrate ephember
* Migrate Sensibo
* Implemented review comments (#24942)
* Migrate ESPHome
* Migrate MQTT
* Migrate Nest
* Migrate melissa
* Initial/partial migration of ST
* Migrate ST
* Remove Away mode (#24995)
* Migrate evohome, cache access tokens (#24491)
* add water_heater, add storage - initial commit
* add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
* Add Broker, Water Heater & Refactor
add missing code
desiderata
* update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
* bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
* support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
* store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
* update CODEOWNERS
* fix regression
* fix requirements
* migrate to climate-1.0
* tweaking
* de-lint
* TCS working? & delint
* tweaking
* TCS code finalised
* remove available() logic
* refactor _switchpoints()
* tidy up switchpoint code
* tweak
* teaking device_state_attributes
* some refactoring
* move PRESET_CUSTOM back to evohome
* move CONF_ACCESS_TOKEN_EXPIRES CONF_REFRESH_TOKEN back to evohome
* refactor SP code and dt conversion
* delinted
* delinted
* remove water_heater
* fix regression
* Migrate homekit
* Cleanup away mode
* Fix tests
* add helpers
* fix tests melissa
* Fix nehueat
* fix zwave
* add more tests
* fix deconz
* Fix climate test emulate_hue
* fix tests
* fix dyson tests
* fix demo with new layout
* fix honeywell
* Switch homekit_controller to use HVAC_MODE_HEAT_COOL instead of HVAC_MODE_AUTO (#25009)
* Lint
* PyLint
* Pylint
* fix fritzbox tests
* Fix google
* Fix all tests
* Fix lint
* Fix auto for homekit like controler
* Fix lint
* fix lint
2019-07-08 12:00:24 +00:00
|
|
|
|
|
|
|
pytestmark = pytest.mark.skip("Need to be fixed!")
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
class TestHoneywell(unittest.TestCase):
|
|
|
|
"""A test class for Honeywell themostats."""
|
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
@mock.patch("somecomfort.SomeComfort")
|
2020-01-02 19:17:10 +00:00
|
|
|
@mock.patch("homeassistant.components.honeywell.climate.HoneywellUSThermostat")
|
2016-08-19 07:17:28 +00:00
|
|
|
def test_setup_us(self, mock_ht, mock_sc):
|
|
|
|
"""Test for the US setup."""
|
|
|
|
config = {
|
2019-07-31 19:25:30 +00:00
|
|
|
CONF_USERNAME: "user",
|
|
|
|
CONF_PASSWORD: "pass",
|
|
|
|
honeywell.CONF_REGION: "us",
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
2019-07-31 19:25:30 +00:00
|
|
|
bad_pass_config = {CONF_USERNAME: "user", honeywell.CONF_REGION: "us"}
|
2016-08-19 07:17:28 +00:00
|
|
|
bad_region_config = {
|
2019-07-31 19:25:30 +00:00
|
|
|
CONF_USERNAME: "user",
|
|
|
|
CONF_PASSWORD: "pass",
|
|
|
|
honeywell.CONF_REGION: "un",
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
2016-09-11 07:21:16 +00:00
|
|
|
|
2018-10-24 10:10:05 +00:00
|
|
|
with pytest.raises(vol.Invalid):
|
2016-09-11 07:21:16 +00:00
|
|
|
honeywell.PLATFORM_SCHEMA(None)
|
|
|
|
|
2018-10-24 10:10:05 +00:00
|
|
|
with pytest.raises(vol.Invalid):
|
2016-09-11 07:21:16 +00:00
|
|
|
honeywell.PLATFORM_SCHEMA({})
|
|
|
|
|
2018-10-24 10:10:05 +00:00
|
|
|
with pytest.raises(vol.Invalid):
|
2016-09-11 07:21:16 +00:00
|
|
|
honeywell.PLATFORM_SCHEMA(bad_pass_config)
|
|
|
|
|
2018-10-24 10:10:05 +00:00
|
|
|
with pytest.raises(vol.Invalid):
|
2016-09-11 07:21:16 +00:00
|
|
|
honeywell.PLATFORM_SCHEMA(bad_region_config)
|
|
|
|
|
2016-08-19 07:17:28 +00:00
|
|
|
hass = mock.MagicMock()
|
2018-08-24 14:37:30 +00:00
|
|
|
add_entities = mock.MagicMock()
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
locations = [mock.MagicMock(), mock.MagicMock()]
|
2016-08-19 07:17:28 +00:00
|
|
|
devices_1 = [mock.MagicMock()]
|
|
|
|
devices_2 = [mock.MagicMock(), mock.MagicMock]
|
2019-07-31 19:25:30 +00:00
|
|
|
mock_sc.return_value.locations_by_id.values.return_value = locations
|
2016-08-19 07:17:28 +00:00
|
|
|
locations[0].devices_by_id.values.return_value = devices_1
|
|
|
|
locations[1].devices_by_id.values.return_value = devices_2
|
|
|
|
|
2018-08-24 14:37:30 +00:00
|
|
|
result = honeywell.setup_platform(hass, config, add_entities)
|
2018-10-24 10:10:05 +00:00
|
|
|
assert result
|
|
|
|
assert mock_sc.call_count == 1
|
2019-07-31 19:25:30 +00:00
|
|
|
assert mock_sc.call_args == mock.call("user", "pass")
|
|
|
|
mock_ht.assert_has_calls(
|
|
|
|
[
|
|
|
|
mock.call(mock_sc.return_value, devices_1[0], 18, 28, "user", "pass"),
|
|
|
|
mock.call(mock_sc.return_value, devices_2[0], 18, 28, "user", "pass"),
|
|
|
|
mock.call(mock_sc.return_value, devices_2[1], 18, 28, "user", "pass"),
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
@mock.patch("somecomfort.SomeComfort")
|
2016-08-19 07:17:28 +00:00
|
|
|
def test_setup_us_failures(self, mock_sc):
|
|
|
|
"""Test the US setup."""
|
|
|
|
hass = mock.MagicMock()
|
2018-08-24 14:37:30 +00:00
|
|
|
add_entities = mock.MagicMock()
|
2016-08-19 07:17:28 +00:00
|
|
|
config = {
|
2019-07-31 19:25:30 +00:00
|
|
|
CONF_USERNAME: "user",
|
|
|
|
CONF_PASSWORD: "pass",
|
|
|
|
honeywell.CONF_REGION: "us",
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
mock_sc.side_effect = somecomfort.AuthError
|
2018-08-24 14:37:30 +00:00
|
|
|
result = honeywell.setup_platform(hass, config, add_entities)
|
2018-10-24 10:10:05 +00:00
|
|
|
assert not result
|
|
|
|
assert not add_entities.called
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
mock_sc.side_effect = somecomfort.SomeComfortError
|
2018-08-24 14:37:30 +00:00
|
|
|
result = honeywell.setup_platform(hass, config, add_entities)
|
2018-10-24 10:10:05 +00:00
|
|
|
assert not result
|
|
|
|
assert not add_entities.called
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
@mock.patch("somecomfort.SomeComfort")
|
2020-01-02 19:17:10 +00:00
|
|
|
@mock.patch("homeassistant.components.honeywell.climate.HoneywellUSThermostat")
|
2016-08-19 07:17:28 +00:00
|
|
|
def _test_us_filtered_devices(self, mock_ht, mock_sc, loc=None, dev=None):
|
|
|
|
"""Test for US filtered thermostats."""
|
|
|
|
config = {
|
2019-07-31 19:25:30 +00:00
|
|
|
CONF_USERNAME: "user",
|
|
|
|
CONF_PASSWORD: "pass",
|
|
|
|
honeywell.CONF_REGION: "us",
|
|
|
|
"location": loc,
|
|
|
|
"thermostat": dev,
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
|
|
|
locations = {
|
2019-07-31 19:25:30 +00:00
|
|
|
1: mock.MagicMock(
|
|
|
|
locationid=mock.sentinel.loc1,
|
|
|
|
devices_by_id={
|
|
|
|
11: mock.MagicMock(deviceid=mock.sentinel.loc1dev1),
|
|
|
|
12: mock.MagicMock(deviceid=mock.sentinel.loc1dev2),
|
|
|
|
},
|
|
|
|
),
|
|
|
|
2: mock.MagicMock(
|
|
|
|
locationid=mock.sentinel.loc2,
|
|
|
|
devices_by_id={21: mock.MagicMock(deviceid=mock.sentinel.loc2dev1)},
|
|
|
|
),
|
|
|
|
3: mock.MagicMock(
|
|
|
|
locationid=mock.sentinel.loc3,
|
|
|
|
devices_by_id={31: mock.MagicMock(deviceid=mock.sentinel.loc3dev1)},
|
|
|
|
),
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
|
|
|
mock_sc.return_value = mock.MagicMock(locations_by_id=locations)
|
|
|
|
hass = mock.MagicMock()
|
2018-08-24 14:37:30 +00:00
|
|
|
add_entities = mock.MagicMock()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert honeywell.setup_platform(hass, config, add_entities) is True
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
return mock_ht.call_args_list, mock_sc
|
|
|
|
|
|
|
|
def test_us_filtered_thermostat_1(self):
|
|
|
|
"""Test for US filtered thermostats."""
|
2019-07-31 19:25:30 +00:00
|
|
|
result, client = self._test_us_filtered_devices(dev=mock.sentinel.loc1dev1)
|
2016-08-19 07:17:28 +00:00
|
|
|
devices = [x[0][1].deviceid for x in result]
|
2018-10-24 10:10:05 +00:00
|
|
|
assert [mock.sentinel.loc1dev1] == devices
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_us_filtered_thermostat_2(self):
|
|
|
|
"""Test for US filtered location."""
|
2019-07-31 19:25:30 +00:00
|
|
|
result, client = self._test_us_filtered_devices(dev=mock.sentinel.loc2dev1)
|
2016-08-19 07:17:28 +00:00
|
|
|
devices = [x[0][1].deviceid for x in result]
|
2018-10-24 10:10:05 +00:00
|
|
|
assert [mock.sentinel.loc2dev1] == devices
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_us_filtered_location_1(self):
|
|
|
|
"""Test for US filtered locations."""
|
2019-07-31 19:25:30 +00:00
|
|
|
result, client = self._test_us_filtered_devices(loc=mock.sentinel.loc1)
|
2016-08-19 07:17:28 +00:00
|
|
|
devices = [x[0][1].deviceid for x in result]
|
2018-10-24 10:10:05 +00:00
|
|
|
assert [mock.sentinel.loc1dev1, mock.sentinel.loc1dev2] == devices
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_us_filtered_location_2(self):
|
|
|
|
"""Test for US filtered locations."""
|
2019-07-31 19:25:30 +00:00
|
|
|
result, client = self._test_us_filtered_devices(loc=mock.sentinel.loc2)
|
2016-08-19 07:17:28 +00:00
|
|
|
devices = [x[0][1].deviceid for x in result]
|
2018-10-24 10:10:05 +00:00
|
|
|
assert [mock.sentinel.loc2dev1] == devices
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
@mock.patch("evohomeclient.EvohomeClient")
|
2020-01-02 19:17:10 +00:00
|
|
|
@mock.patch("homeassistant.components.honeywell.climate.HoneywellUSThermostat")
|
2016-08-19 07:17:28 +00:00
|
|
|
def test_eu_setup_full_config(self, mock_round, mock_evo):
|
2016-09-11 07:21:16 +00:00
|
|
|
"""Test the EU setup with complete configuration."""
|
2016-08-19 07:17:28 +00:00
|
|
|
config = {
|
2019-07-31 19:25:30 +00:00
|
|
|
CONF_USERNAME: "user",
|
|
|
|
CONF_PASSWORD: "pass",
|
|
|
|
honeywell.CONF_REGION: "eu",
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
2019-07-31 19:25:30 +00:00
|
|
|
mock_evo.return_value.temperatures.return_value = [{"id": "foo"}, {"id": "bar"}]
|
2016-08-19 07:17:28 +00:00
|
|
|
hass = mock.MagicMock()
|
2018-08-24 14:37:30 +00:00
|
|
|
add_entities = mock.MagicMock()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert honeywell.setup_platform(hass, config, add_entities)
|
|
|
|
assert mock_evo.call_count == 1
|
2019-07-31 19:25:30 +00:00
|
|
|
assert mock_evo.call_args == mock.call("user", "pass")
|
2018-10-24 10:10:05 +00:00
|
|
|
assert mock_evo.return_value.temperatures.call_count == 1
|
2019-07-31 19:25:30 +00:00
|
|
|
assert mock_evo.return_value.temperatures.call_args == mock.call(
|
|
|
|
force_refresh=True
|
|
|
|
)
|
|
|
|
mock_round.assert_has_calls(
|
|
|
|
[
|
|
|
|
mock.call(mock_evo.return_value, "foo", True, 20.0),
|
|
|
|
mock.call(mock_evo.return_value, "bar", False, 20.0),
|
|
|
|
]
|
|
|
|
)
|
2018-10-24 10:10:05 +00:00
|
|
|
assert 2 == add_entities.call_count
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
@mock.patch("evohomeclient.EvohomeClient")
|
2020-01-02 19:17:10 +00:00
|
|
|
@mock.patch("homeassistant.components.honeywell.climate.HoneywellUSThermostat")
|
2016-08-19 07:17:28 +00:00
|
|
|
def test_eu_setup_partial_config(self, mock_round, mock_evo):
|
|
|
|
"""Test the EU setup with partial configuration."""
|
|
|
|
config = {
|
2019-07-31 19:25:30 +00:00
|
|
|
CONF_USERNAME: "user",
|
|
|
|
CONF_PASSWORD: "pass",
|
|
|
|
honeywell.CONF_REGION: "eu",
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
2016-09-11 07:21:16 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
mock_evo.return_value.temperatures.return_value = [{"id": "foo"}, {"id": "bar"}]
|
2016-09-11 07:21:16 +00:00
|
|
|
|
2016-08-19 07:17:28 +00:00
|
|
|
hass = mock.MagicMock()
|
2018-08-24 14:37:30 +00:00
|
|
|
add_entities = mock.MagicMock()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert honeywell.setup_platform(hass, config, add_entities)
|
2019-07-31 19:25:30 +00:00
|
|
|
mock_round.assert_has_calls(
|
|
|
|
[
|
|
|
|
mock.call(mock_evo.return_value, "foo", True, 16),
|
|
|
|
mock.call(mock_evo.return_value, "bar", False, 16),
|
|
|
|
]
|
|
|
|
)
|
|
|
|
|
|
|
|
@mock.patch("evohomeclient.EvohomeClient")
|
2020-01-02 19:17:10 +00:00
|
|
|
@mock.patch("homeassistant.components.honeywell.climate.HoneywellUSThermostat")
|
2016-08-19 07:17:28 +00:00
|
|
|
def test_eu_setup_bad_temp(self, mock_round, mock_evo):
|
|
|
|
"""Test the EU setup with invalid temperature."""
|
|
|
|
config = {
|
2019-07-31 19:25:30 +00:00
|
|
|
CONF_USERNAME: "user",
|
|
|
|
CONF_PASSWORD: "pass",
|
|
|
|
honeywell.CONF_REGION: "eu",
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
2016-09-11 07:21:16 +00:00
|
|
|
|
2018-10-24 10:10:05 +00:00
|
|
|
with pytest.raises(vol.Invalid):
|
2016-09-11 07:21:16 +00:00
|
|
|
honeywell.PLATFORM_SCHEMA(config)
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
@mock.patch("evohomeclient.EvohomeClient")
|
2020-01-02 19:17:10 +00:00
|
|
|
@mock.patch("homeassistant.components.honeywell.climate.HoneywellUSThermostat")
|
2016-08-19 07:17:28 +00:00
|
|
|
def test_eu_setup_error(self, mock_round, mock_evo):
|
|
|
|
"""Test the EU setup with errors."""
|
|
|
|
config = {
|
2019-07-31 19:25:30 +00:00
|
|
|
CONF_USERNAME: "user",
|
|
|
|
CONF_PASSWORD: "pass",
|
|
|
|
honeywell.CONF_REGION: "eu",
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
2019-07-31 19:25:30 +00:00
|
|
|
mock_evo.return_value.temperatures.side_effect = (
|
Improve evohome exception handling and fix bugs (#22140)
* Use latest client library, evohomeclient v0.3.1
* Fix issue #22097: Failed to call service climate/turn_on...
* BUGFIX: handle case where a Zone doesn't have a temperature
* BUGFIX: missing exception handler, and inappropriate delint hints
* Improve exception handling, and also better messages
* improve code (REDACT secrets); remove TODOs
* minor refactor - improve error message
* more refactoring - improve error message
* remove TODOs
* update to latest evohomeclient library
* Use latest client library, evohomeclient v0.3.1
* Fix issue #22097: Failed to call service climate/turn_on...
* BUGFIX: handle case where a Zone doesn't have a temperature
* BUGFIX: missing exception handler, and inappropriate delint hints
* Improve exception handling, and also better messages
* improve code (REDACT secrets); remove TODOs
* minor refactor - improve error message
* more refactoring - improve error message
* remove TODOs
* update to latest evohomeclient library
* fix requests for houndci-bot
* Tidy up requests exception handling
* Correct lint error
* update to latest client library
* minor de-lint
* more cleanup of exceptions, messages
* refactored for new exception
* fix error in requirements*_all.txt
* de-lint
* delint unused import
* import 3rd-party library only inside methods
* change honeywell tests
* delint, fix typo
* we dont log usernames, passwords, etc.
* de-lint
2019-04-02 13:11:26 +00:00
|
|
|
requests.exceptions.RequestException
|
2019-07-31 19:25:30 +00:00
|
|
|
)
|
2018-08-24 14:37:30 +00:00
|
|
|
add_entities = mock.MagicMock()
|
2016-08-19 07:17:28 +00:00
|
|
|
hass = mock.MagicMock()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert not honeywell.setup_platform(hass, config, add_entities)
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
class TestHoneywellRound(unittest.TestCase):
|
|
|
|
"""A test class for Honeywell Round thermostats."""
|
|
|
|
|
|
|
|
def setup_method(self, method):
|
|
|
|
"""Test the setup method."""
|
2019-07-31 19:25:30 +00:00
|
|
|
|
2016-08-19 07:17:28 +00:00
|
|
|
def fake_temperatures(force_refresh=None):
|
|
|
|
"""Create fake temperatures."""
|
|
|
|
temps = [
|
2019-07-31 19:25:30 +00:00
|
|
|
{
|
|
|
|
"id": "1",
|
|
|
|
"temp": 20,
|
|
|
|
"setpoint": 21,
|
|
|
|
"thermostat": "main",
|
|
|
|
"name": "House",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"id": "2",
|
|
|
|
"temp": 21,
|
|
|
|
"setpoint": 22,
|
|
|
|
"thermostat": "DOMESTIC_HOT_WATER",
|
|
|
|
},
|
2016-08-19 07:17:28 +00:00
|
|
|
]
|
|
|
|
return temps
|
|
|
|
|
|
|
|
self.device = mock.MagicMock()
|
|
|
|
self.device.temperatures.side_effect = fake_temperatures
|
2019-07-31 19:25:30 +00:00
|
|
|
self.round1 = honeywell.RoundThermostat(self.device, "1", True, 16)
|
2017-08-01 14:18:14 +00:00
|
|
|
self.round1.update()
|
2019-07-31 19:25:30 +00:00
|
|
|
self.round2 = honeywell.RoundThermostat(self.device, "2", False, 17)
|
2017-08-01 14:18:14 +00:00
|
|
|
self.round2.update()
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_attributes(self):
|
|
|
|
"""Test the attributes."""
|
2019-07-31 19:25:30 +00:00
|
|
|
assert "House" == self.round1.name
|
2018-10-24 10:10:05 +00:00
|
|
|
assert TEMP_CELSIUS == self.round1.temperature_unit
|
|
|
|
assert 20 == self.round1.current_temperature
|
|
|
|
assert 21 == self.round1.target_temperature
|
|
|
|
assert not self.round1.is_away_mode_on
|
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
assert "Hot Water" == self.round2.name
|
2018-10-24 10:10:05 +00:00
|
|
|
assert TEMP_CELSIUS == self.round2.temperature_unit
|
|
|
|
assert 21 == self.round2.current_temperature
|
|
|
|
assert self.round2.target_temperature is None
|
|
|
|
assert not self.round2.is_away_mode_on
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_away_mode(self):
|
|
|
|
"""Test setting the away mode."""
|
2018-10-24 10:10:05 +00:00
|
|
|
assert not self.round1.is_away_mode_on
|
2016-08-19 07:17:28 +00:00
|
|
|
self.round1.turn_away_mode_on()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert self.round1.is_away_mode_on
|
|
|
|
assert self.device.set_temperature.call_count == 1
|
2019-07-31 19:25:30 +00:00
|
|
|
assert self.device.set_temperature.call_args == mock.call("House", 16)
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
self.device.set_temperature.reset_mock()
|
|
|
|
self.round1.turn_away_mode_off()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert not self.round1.is_away_mode_on
|
|
|
|
assert self.device.cancel_temp_override.call_count == 1
|
2019-07-31 19:25:30 +00:00
|
|
|
assert self.device.cancel_temp_override.call_args == mock.call("House")
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_set_temperature(self):
|
|
|
|
"""Test setting the temperature."""
|
2016-09-09 17:06:53 +00:00
|
|
|
self.round1.set_temperature(temperature=25)
|
2018-10-24 10:10:05 +00:00
|
|
|
assert self.device.set_temperature.call_count == 1
|
2019-07-31 19:25:30 +00:00
|
|
|
assert self.device.set_temperature.call_args == mock.call("House", 25)
|
2016-08-19 07:17:28 +00:00
|
|
|
|
Climate 1.0 (#23899)
* Climate 1.0 / part 1/2/3
* fix flake
* Lint
* Update Google Assistant
* ambiclimate to climate 1.0 (#24911)
* Fix Alexa
* Lint
* Migrate zhong_hong
* Migrate tuya
* Migrate honeywell to new climate schema (#24257)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* Fix PRESET can be None
* apply PR#23913 from dev
* remove EU component, etc.
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* apply PR#23913 from dev
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* delint, move debug code
* away preset now working
* code tidy-up
* code tidy-up 2
* code tidy-up 3
* address issues #18932, #15063
* address issues #18932, #15063 - 2/2
* refactor MODE_AUTO to MODE_HEAT_COOL and use F not C
* add low/high to set_temp
* add low/high to set_temp 2
* add low/high to set_temp - delint
* run HA scripts
* port changes from PR #24402
* manual rebase
* manual rebase 2
* delint
* minor change
* remove SUPPORT_HVAC_ACTION
* Migrate radiotherm
* Convert touchline
* Migrate flexit
* Migrate nuheat
* Migrate maxcube
* Fix names maxcube const
* Migrate proliphix
* Migrate heatmiser
* Migrate fritzbox
* Migrate opentherm_gw
* Migrate venstar
* Migrate daikin
* Migrate modbus
* Fix elif
* Migrate Homematic IP Cloud to climate-1.0 (#24913)
* hmip climate fix
* Update hvac_mode and preset_mode
* fix lint
* Fix lint
* Migrate generic_thermostat
* Migrate incomfort to new climate schema (#24915)
* initial commit
* Update climate.py
* Migrate eq3btsmart
* Lint
* cleanup PRESET_MANUAL
* Migrate ecobee
* No conditional features
* KNX: Migrate climate component to new climate platform (#24931)
* Migrate climate component
* Remove unused code
* Corrected line length
* Lint
* Lint
* fix tests
* Fix value
* Migrate geniushub to new climate schema (#24191)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* delinted
* delinted
* use latest client
* clean up mappings
* clean up mappings
* add duration to set_temperature
* add duration to set_temperature
* manual rebase
* tweak
* fix regression
* small fix
* fix rebase mixup
* address comments
* finish refactor
* fix regression
* tweak type hints
* delint
* manual rebase
* WIP: Fixes for honeywell migration to climate-1.0 (#24938)
* add type hints
* code tidy-up
* Fixes for incomfort migration to climate-1.0 (#24936)
* delint type hints
* no async unless await
* revert: no async unless await
* revert: no async unless await 2
* delint
* fix typo
* Fix homekit_controller on climate-1.0 (#24948)
* Fix tests on climate-1.0 branch
* As part of climate-1.0, make state return the heating-cooling.current characteristic
* Fixes from review
* lint
* Fix imports
* Migrate stibel_eltron
* Fix lint
* Migrate coolmaster to climate 1.0 (#24967)
* Migrate coolmaster to climate 1.0
* fix lint errors
* More lint fixes
* Fix demo to work with UI
* Migrate spider
* Demo update
* Updated frontend to 20190705.0
* Fix boost mode (#24980)
* Prepare Netatmo for climate 1.0 (#24973)
* Migration Netatmo
* Address comments
* Update climate.py
* Migrate ephember
* Migrate Sensibo
* Implemented review comments (#24942)
* Migrate ESPHome
* Migrate MQTT
* Migrate Nest
* Migrate melissa
* Initial/partial migration of ST
* Migrate ST
* Remove Away mode (#24995)
* Migrate evohome, cache access tokens (#24491)
* add water_heater, add storage - initial commit
* add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
* Add Broker, Water Heater & Refactor
add missing code
desiderata
* update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
* bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
* support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
* store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
* update CODEOWNERS
* fix regression
* fix requirements
* migrate to climate-1.0
* tweaking
* de-lint
* TCS working? & delint
* tweaking
* TCS code finalised
* remove available() logic
* refactor _switchpoints()
* tidy up switchpoint code
* tweak
* teaking device_state_attributes
* some refactoring
* move PRESET_CUSTOM back to evohome
* move CONF_ACCESS_TOKEN_EXPIRES CONF_REFRESH_TOKEN back to evohome
* refactor SP code and dt conversion
* delinted
* delinted
* remove water_heater
* fix regression
* Migrate homekit
* Cleanup away mode
* Fix tests
* add helpers
* fix tests melissa
* Fix nehueat
* fix zwave
* add more tests
* fix deconz
* Fix climate test emulate_hue
* fix tests
* fix dyson tests
* fix demo with new layout
* fix honeywell
* Switch homekit_controller to use HVAC_MODE_HEAT_COOL instead of HVAC_MODE_AUTO (#25009)
* Lint
* PyLint
* Pylint
* fix fritzbox tests
* Fix google
* Fix all tests
* Fix lint
* Fix auto for homekit like controler
* Fix lint
* fix lint
2019-07-08 12:00:24 +00:00
|
|
|
def test_set_hvac_mode(self) -> None:
|
2016-08-19 07:17:28 +00:00
|
|
|
"""Test setting the system operation."""
|
2019-07-31 19:25:30 +00:00
|
|
|
self.round1.set_hvac_mode("cool")
|
|
|
|
assert "cool" == self.round1.current_operation
|
|
|
|
assert "cool" == self.device.system_mode
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
self.round1.set_hvac_mode("heat")
|
|
|
|
assert "heat" == self.round1.current_operation
|
|
|
|
assert "heat" == self.device.system_mode
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
class TestHoneywellUS(unittest.TestCase):
|
|
|
|
"""A test class for Honeywell US thermostats."""
|
|
|
|
|
|
|
|
def setup_method(self, method):
|
|
|
|
"""Test the setup method."""
|
|
|
|
self.client = mock.MagicMock()
|
|
|
|
self.device = mock.MagicMock()
|
2017-03-02 07:49:49 +00:00
|
|
|
self.cool_away_temp = 18
|
|
|
|
self.heat_away_temp = 28
|
2016-08-19 07:17:28 +00:00
|
|
|
self.honeywell = honeywell.HoneywellUSThermostat(
|
2019-07-31 19:25:30 +00:00
|
|
|
self.client,
|
|
|
|
self.device,
|
|
|
|
self.cool_away_temp,
|
|
|
|
self.heat_away_temp,
|
|
|
|
"user",
|
|
|
|
"password",
|
|
|
|
)
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
self.device.fan_running = True
|
2019-07-31 19:25:30 +00:00
|
|
|
self.device.name = "test"
|
|
|
|
self.device.temperature_unit = "F"
|
2016-08-19 07:17:28 +00:00
|
|
|
self.device.current_temperature = 72
|
|
|
|
self.device.setpoint_cool = 78
|
|
|
|
self.device.setpoint_heat = 65
|
2019-07-31 19:25:30 +00:00
|
|
|
self.device.system_mode = "heat"
|
|
|
|
self.device.fan_mode = "auto"
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_properties(self):
|
|
|
|
"""Test the properties."""
|
2018-10-24 10:10:05 +00:00
|
|
|
assert self.honeywell.is_fan_on
|
2019-07-31 19:25:30 +00:00
|
|
|
assert "test" == self.honeywell.name
|
2018-10-24 10:10:05 +00:00
|
|
|
assert 72 == self.honeywell.current_temperature
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_unit_of_measurement(self):
|
|
|
|
"""Test the unit of measurement."""
|
2018-10-24 10:10:05 +00:00
|
|
|
assert TEMP_FAHRENHEIT == self.honeywell.temperature_unit
|
2019-07-31 19:25:30 +00:00
|
|
|
self.device.temperature_unit = "C"
|
2018-10-24 10:10:05 +00:00
|
|
|
assert TEMP_CELSIUS == self.honeywell.temperature_unit
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_target_temp(self):
|
|
|
|
"""Test the target temperature."""
|
2018-10-24 10:10:05 +00:00
|
|
|
assert 65 == self.honeywell.target_temperature
|
2019-07-31 19:25:30 +00:00
|
|
|
self.device.system_mode = "cool"
|
2018-10-24 10:10:05 +00:00
|
|
|
assert 78 == self.honeywell.target_temperature
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_set_temp(self):
|
|
|
|
"""Test setting the temperature."""
|
2016-09-09 17:06:53 +00:00
|
|
|
self.honeywell.set_temperature(temperature=70)
|
2018-10-24 10:10:05 +00:00
|
|
|
assert 70 == self.device.setpoint_heat
|
|
|
|
assert 70 == self.honeywell.target_temperature
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
self.device.system_mode = "cool"
|
2018-10-24 10:10:05 +00:00
|
|
|
assert 78 == self.honeywell.target_temperature
|
2016-09-09 17:06:53 +00:00
|
|
|
self.honeywell.set_temperature(temperature=74)
|
2018-10-24 10:10:05 +00:00
|
|
|
assert 74 == self.device.setpoint_cool
|
|
|
|
assert 74 == self.honeywell.target_temperature
|
2016-08-19 07:17:28 +00:00
|
|
|
|
Climate 1.0 (#23899)
* Climate 1.0 / part 1/2/3
* fix flake
* Lint
* Update Google Assistant
* ambiclimate to climate 1.0 (#24911)
* Fix Alexa
* Lint
* Migrate zhong_hong
* Migrate tuya
* Migrate honeywell to new climate schema (#24257)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* Fix PRESET can be None
* apply PR#23913 from dev
* remove EU component, etc.
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* apply PR#23913 from dev
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* delint, move debug code
* away preset now working
* code tidy-up
* code tidy-up 2
* code tidy-up 3
* address issues #18932, #15063
* address issues #18932, #15063 - 2/2
* refactor MODE_AUTO to MODE_HEAT_COOL and use F not C
* add low/high to set_temp
* add low/high to set_temp 2
* add low/high to set_temp - delint
* run HA scripts
* port changes from PR #24402
* manual rebase
* manual rebase 2
* delint
* minor change
* remove SUPPORT_HVAC_ACTION
* Migrate radiotherm
* Convert touchline
* Migrate flexit
* Migrate nuheat
* Migrate maxcube
* Fix names maxcube const
* Migrate proliphix
* Migrate heatmiser
* Migrate fritzbox
* Migrate opentherm_gw
* Migrate venstar
* Migrate daikin
* Migrate modbus
* Fix elif
* Migrate Homematic IP Cloud to climate-1.0 (#24913)
* hmip climate fix
* Update hvac_mode and preset_mode
* fix lint
* Fix lint
* Migrate generic_thermostat
* Migrate incomfort to new climate schema (#24915)
* initial commit
* Update climate.py
* Migrate eq3btsmart
* Lint
* cleanup PRESET_MANUAL
* Migrate ecobee
* No conditional features
* KNX: Migrate climate component to new climate platform (#24931)
* Migrate climate component
* Remove unused code
* Corrected line length
* Lint
* Lint
* fix tests
* Fix value
* Migrate geniushub to new climate schema (#24191)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* delinted
* delinted
* use latest client
* clean up mappings
* clean up mappings
* add duration to set_temperature
* add duration to set_temperature
* manual rebase
* tweak
* fix regression
* small fix
* fix rebase mixup
* address comments
* finish refactor
* fix regression
* tweak type hints
* delint
* manual rebase
* WIP: Fixes for honeywell migration to climate-1.0 (#24938)
* add type hints
* code tidy-up
* Fixes for incomfort migration to climate-1.0 (#24936)
* delint type hints
* no async unless await
* revert: no async unless await
* revert: no async unless await 2
* delint
* fix typo
* Fix homekit_controller on climate-1.0 (#24948)
* Fix tests on climate-1.0 branch
* As part of climate-1.0, make state return the heating-cooling.current characteristic
* Fixes from review
* lint
* Fix imports
* Migrate stibel_eltron
* Fix lint
* Migrate coolmaster to climate 1.0 (#24967)
* Migrate coolmaster to climate 1.0
* fix lint errors
* More lint fixes
* Fix demo to work with UI
* Migrate spider
* Demo update
* Updated frontend to 20190705.0
* Fix boost mode (#24980)
* Prepare Netatmo for climate 1.0 (#24973)
* Migration Netatmo
* Address comments
* Update climate.py
* Migrate ephember
* Migrate Sensibo
* Implemented review comments (#24942)
* Migrate ESPHome
* Migrate MQTT
* Migrate Nest
* Migrate melissa
* Initial/partial migration of ST
* Migrate ST
* Remove Away mode (#24995)
* Migrate evohome, cache access tokens (#24491)
* add water_heater, add storage - initial commit
* add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
* Add Broker, Water Heater & Refactor
add missing code
desiderata
* update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
* bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
* support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
* store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
* update CODEOWNERS
* fix regression
* fix requirements
* migrate to climate-1.0
* tweaking
* de-lint
* TCS working? & delint
* tweaking
* TCS code finalised
* remove available() logic
* refactor _switchpoints()
* tidy up switchpoint code
* tweak
* teaking device_state_attributes
* some refactoring
* move PRESET_CUSTOM back to evohome
* move CONF_ACCESS_TOKEN_EXPIRES CONF_REFRESH_TOKEN back to evohome
* refactor SP code and dt conversion
* delinted
* delinted
* remove water_heater
* fix regression
* Migrate homekit
* Cleanup away mode
* Fix tests
* add helpers
* fix tests melissa
* Fix nehueat
* fix zwave
* add more tests
* fix deconz
* Fix climate test emulate_hue
* fix tests
* fix dyson tests
* fix demo with new layout
* fix honeywell
* Switch homekit_controller to use HVAC_MODE_HEAT_COOL instead of HVAC_MODE_AUTO (#25009)
* Lint
* PyLint
* Pylint
* fix fritzbox tests
* Fix google
* Fix all tests
* Fix lint
* Fix auto for homekit like controler
* Fix lint
* fix lint
2019-07-08 12:00:24 +00:00
|
|
|
def test_set_hvac_mode(self) -> None:
|
2016-08-19 07:17:28 +00:00
|
|
|
"""Test setting the operation mode."""
|
2019-07-31 19:25:30 +00:00
|
|
|
self.honeywell.set_hvac_mode("cool")
|
|
|
|
assert "cool" == self.device.system_mode
|
2016-08-19 07:17:28 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
self.honeywell.set_hvac_mode("heat")
|
|
|
|
assert "heat" == self.device.system_mode
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_set_temp_fail(self):
|
|
|
|
"""Test if setting the temperature fails."""
|
|
|
|
self.device.setpoint_heat = mock.MagicMock(
|
2019-07-31 19:25:30 +00:00
|
|
|
side_effect=somecomfort.SomeComfortError
|
|
|
|
)
|
2016-09-09 17:06:53 +00:00
|
|
|
self.honeywell.set_temperature(temperature=123)
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_attributes(self):
|
|
|
|
"""Test the attributes."""
|
|
|
|
expected = {
|
2019-07-31 19:25:30 +00:00
|
|
|
honeywell.ATTR_FAN: "running",
|
|
|
|
ATTR_FAN_MODE: "auto",
|
Climate 1.0 (#23899)
* Climate 1.0 / part 1/2/3
* fix flake
* Lint
* Update Google Assistant
* ambiclimate to climate 1.0 (#24911)
* Fix Alexa
* Lint
* Migrate zhong_hong
* Migrate tuya
* Migrate honeywell to new climate schema (#24257)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* Fix PRESET can be None
* apply PR#23913 from dev
* remove EU component, etc.
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* apply PR#23913 from dev
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* delint, move debug code
* away preset now working
* code tidy-up
* code tidy-up 2
* code tidy-up 3
* address issues #18932, #15063
* address issues #18932, #15063 - 2/2
* refactor MODE_AUTO to MODE_HEAT_COOL and use F not C
* add low/high to set_temp
* add low/high to set_temp 2
* add low/high to set_temp - delint
* run HA scripts
* port changes from PR #24402
* manual rebase
* manual rebase 2
* delint
* minor change
* remove SUPPORT_HVAC_ACTION
* Migrate radiotherm
* Convert touchline
* Migrate flexit
* Migrate nuheat
* Migrate maxcube
* Fix names maxcube const
* Migrate proliphix
* Migrate heatmiser
* Migrate fritzbox
* Migrate opentherm_gw
* Migrate venstar
* Migrate daikin
* Migrate modbus
* Fix elif
* Migrate Homematic IP Cloud to climate-1.0 (#24913)
* hmip climate fix
* Update hvac_mode and preset_mode
* fix lint
* Fix lint
* Migrate generic_thermostat
* Migrate incomfort to new climate schema (#24915)
* initial commit
* Update climate.py
* Migrate eq3btsmart
* Lint
* cleanup PRESET_MANUAL
* Migrate ecobee
* No conditional features
* KNX: Migrate climate component to new climate platform (#24931)
* Migrate climate component
* Remove unused code
* Corrected line length
* Lint
* Lint
* fix tests
* Fix value
* Migrate geniushub to new climate schema (#24191)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* delinted
* delinted
* use latest client
* clean up mappings
* clean up mappings
* add duration to set_temperature
* add duration to set_temperature
* manual rebase
* tweak
* fix regression
* small fix
* fix rebase mixup
* address comments
* finish refactor
* fix regression
* tweak type hints
* delint
* manual rebase
* WIP: Fixes for honeywell migration to climate-1.0 (#24938)
* add type hints
* code tidy-up
* Fixes for incomfort migration to climate-1.0 (#24936)
* delint type hints
* no async unless await
* revert: no async unless await
* revert: no async unless await 2
* delint
* fix typo
* Fix homekit_controller on climate-1.0 (#24948)
* Fix tests on climate-1.0 branch
* As part of climate-1.0, make state return the heating-cooling.current characteristic
* Fixes from review
* lint
* Fix imports
* Migrate stibel_eltron
* Fix lint
* Migrate coolmaster to climate 1.0 (#24967)
* Migrate coolmaster to climate 1.0
* fix lint errors
* More lint fixes
* Fix demo to work with UI
* Migrate spider
* Demo update
* Updated frontend to 20190705.0
* Fix boost mode (#24980)
* Prepare Netatmo for climate 1.0 (#24973)
* Migration Netatmo
* Address comments
* Update climate.py
* Migrate ephember
* Migrate Sensibo
* Implemented review comments (#24942)
* Migrate ESPHome
* Migrate MQTT
* Migrate Nest
* Migrate melissa
* Initial/partial migration of ST
* Migrate ST
* Remove Away mode (#24995)
* Migrate evohome, cache access tokens (#24491)
* add water_heater, add storage - initial commit
* add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
* Add Broker, Water Heater & Refactor
add missing code
desiderata
* update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
* bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
* support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
* store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
* update CODEOWNERS
* fix regression
* fix requirements
* migrate to climate-1.0
* tweaking
* de-lint
* TCS working? & delint
* tweaking
* TCS code finalised
* remove available() logic
* refactor _switchpoints()
* tidy up switchpoint code
* tweak
* teaking device_state_attributes
* some refactoring
* move PRESET_CUSTOM back to evohome
* move CONF_ACCESS_TOKEN_EXPIRES CONF_REFRESH_TOKEN back to evohome
* refactor SP code and dt conversion
* delinted
* delinted
* remove water_heater
* fix regression
* Migrate homekit
* Cleanup away mode
* Fix tests
* add helpers
* fix tests melissa
* Fix nehueat
* fix zwave
* add more tests
* fix deconz
* Fix climate test emulate_hue
* fix tests
* fix dyson tests
* fix demo with new layout
* fix honeywell
* Switch homekit_controller to use HVAC_MODE_HEAT_COOL instead of HVAC_MODE_AUTO (#25009)
* Lint
* PyLint
* Pylint
* fix fritzbox tests
* Fix google
* Fix all tests
* Fix lint
* Fix auto for homekit like controler
* Fix lint
* fix lint
2019-07-08 12:00:24 +00:00
|
|
|
ATTR_FAN_MODES: somecomfort.FAN_MODES,
|
|
|
|
ATTR_HVAC_MODES: somecomfort.SYSTEM_MODES,
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
2018-10-24 10:10:05 +00:00
|
|
|
assert expected == self.honeywell.device_state_attributes
|
2019-07-31 19:25:30 +00:00
|
|
|
expected["fan"] = "idle"
|
2016-08-19 07:17:28 +00:00
|
|
|
self.device.fan_running = False
|
2018-10-24 10:10:05 +00:00
|
|
|
assert expected == self.honeywell.device_state_attributes
|
2016-08-19 07:17:28 +00:00
|
|
|
|
|
|
|
def test_with_no_fan(self):
|
|
|
|
"""Test if there is on fan."""
|
|
|
|
self.device.fan_running = False
|
|
|
|
self.device.fan_mode = None
|
|
|
|
expected = {
|
2019-07-31 19:25:30 +00:00
|
|
|
honeywell.ATTR_FAN: "idle",
|
2017-03-02 07:49:49 +00:00
|
|
|
ATTR_FAN_MODE: None,
|
Climate 1.0 (#23899)
* Climate 1.0 / part 1/2/3
* fix flake
* Lint
* Update Google Assistant
* ambiclimate to climate 1.0 (#24911)
* Fix Alexa
* Lint
* Migrate zhong_hong
* Migrate tuya
* Migrate honeywell to new climate schema (#24257)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* Fix PRESET can be None
* apply PR#23913 from dev
* remove EU component, etc.
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* apply PR#23913 from dev
* remove EU component, etc.
* ready to test now
* de-linted
* some tweaks
* de-lint
* better handling of edge cases
* delint
* fix set_mode typos
* delint, move debug code
* away preset now working
* code tidy-up
* code tidy-up 2
* code tidy-up 3
* address issues #18932, #15063
* address issues #18932, #15063 - 2/2
* refactor MODE_AUTO to MODE_HEAT_COOL and use F not C
* add low/high to set_temp
* add low/high to set_temp 2
* add low/high to set_temp - delint
* run HA scripts
* port changes from PR #24402
* manual rebase
* manual rebase 2
* delint
* minor change
* remove SUPPORT_HVAC_ACTION
* Migrate radiotherm
* Convert touchline
* Migrate flexit
* Migrate nuheat
* Migrate maxcube
* Fix names maxcube const
* Migrate proliphix
* Migrate heatmiser
* Migrate fritzbox
* Migrate opentherm_gw
* Migrate venstar
* Migrate daikin
* Migrate modbus
* Fix elif
* Migrate Homematic IP Cloud to climate-1.0 (#24913)
* hmip climate fix
* Update hvac_mode and preset_mode
* fix lint
* Fix lint
* Migrate generic_thermostat
* Migrate incomfort to new climate schema (#24915)
* initial commit
* Update climate.py
* Migrate eq3btsmart
* Lint
* cleanup PRESET_MANUAL
* Migrate ecobee
* No conditional features
* KNX: Migrate climate component to new climate platform (#24931)
* Migrate climate component
* Remove unused code
* Corrected line length
* Lint
* Lint
* fix tests
* Fix value
* Migrate geniushub to new climate schema (#24191)
* Update one
* Fix model climate v2
* Cleanup p4
* Add comfort hold mode
* Fix old code
* Update homeassistant/components/climate/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/climate/const.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* First renaming
* Rename operation to hvac for paulus
* Rename hold mode to preset mode
* Cleanup & update comments
* Remove on/off
* Fix supported feature count
* Update services
* Update demo
* Fix tests & use current_hvac
* Update comment
* Fix tests & add typing
* Add more typing
* Update modes
* Fix tests
* Cleanup low/high with range
* Update homematic part 1
* Finish homematic
* Fix lint
* fix hm mapping
* Support simple devices
* convert lcn
* migrate oem
* Fix xs1
* update hive
* update mil
* Update toon
* migrate deconz
* cleanup
* update tesla
* Fix lint
* Fix vera
* Migrate zwave
* Migrate velbus
* Cleanup humity feature
* Cleanup
* Migrate wink
* migrate dyson
* Fix current hvac
* Renaming
* Fix lint
* Migrate tfiac
* migrate tado
* delinted
* delinted
* use latest client
* clean up mappings
* clean up mappings
* add duration to set_temperature
* add duration to set_temperature
* manual rebase
* tweak
* fix regression
* small fix
* fix rebase mixup
* address comments
* finish refactor
* fix regression
* tweak type hints
* delint
* manual rebase
* WIP: Fixes for honeywell migration to climate-1.0 (#24938)
* add type hints
* code tidy-up
* Fixes for incomfort migration to climate-1.0 (#24936)
* delint type hints
* no async unless await
* revert: no async unless await
* revert: no async unless await 2
* delint
* fix typo
* Fix homekit_controller on climate-1.0 (#24948)
* Fix tests on climate-1.0 branch
* As part of climate-1.0, make state return the heating-cooling.current characteristic
* Fixes from review
* lint
* Fix imports
* Migrate stibel_eltron
* Fix lint
* Migrate coolmaster to climate 1.0 (#24967)
* Migrate coolmaster to climate 1.0
* fix lint errors
* More lint fixes
* Fix demo to work with UI
* Migrate spider
* Demo update
* Updated frontend to 20190705.0
* Fix boost mode (#24980)
* Prepare Netatmo for climate 1.0 (#24973)
* Migration Netatmo
* Address comments
* Update climate.py
* Migrate ephember
* Migrate Sensibo
* Implemented review comments (#24942)
* Migrate ESPHome
* Migrate MQTT
* Migrate Nest
* Migrate melissa
* Initial/partial migration of ST
* Migrate ST
* Remove Away mode (#24995)
* Migrate evohome, cache access tokens (#24491)
* add water_heater, add storage - initial commit
* add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
* Add Broker, Water Heater & Refactor
add missing code
desiderata
* update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
* bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
* support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
* store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
add water_heater, add storage - initial commit
delint
add missing code
desiderata
update honeywell client library & CODEOWNER
add auth_tokens code, refactor & delint
refactor for broker
delint
bugfix - loc_idx may not be 0
more refactor - ensure pure async
more refactoring
appears all r/o attributes are working
tweak precsion, DHW & delint
remove unused code
remove unused code 2
remove unused code, refactor _save_auth_tokens()
support RoundThermostat
bugfix opmode, switch to util.dt, add until=1h
revert breaking change
store at_expires as naive UTC
remove debug code
delint
tidy up exception handling
delint
* update CODEOWNERS
* fix regression
* fix requirements
* migrate to climate-1.0
* tweaking
* de-lint
* TCS working? & delint
* tweaking
* TCS code finalised
* remove available() logic
* refactor _switchpoints()
* tidy up switchpoint code
* tweak
* teaking device_state_attributes
* some refactoring
* move PRESET_CUSTOM back to evohome
* move CONF_ACCESS_TOKEN_EXPIRES CONF_REFRESH_TOKEN back to evohome
* refactor SP code and dt conversion
* delinted
* delinted
* remove water_heater
* fix regression
* Migrate homekit
* Cleanup away mode
* Fix tests
* add helpers
* fix tests melissa
* Fix nehueat
* fix zwave
* add more tests
* fix deconz
* Fix climate test emulate_hue
* fix tests
* fix dyson tests
* fix demo with new layout
* fix honeywell
* Switch homekit_controller to use HVAC_MODE_HEAT_COOL instead of HVAC_MODE_AUTO (#25009)
* Lint
* PyLint
* Pylint
* fix fritzbox tests
* Fix google
* Fix all tests
* Fix lint
* Fix auto for homekit like controler
* Fix lint
* fix lint
2019-07-08 12:00:24 +00:00
|
|
|
ATTR_FAN_MODES: somecomfort.FAN_MODES,
|
|
|
|
ATTR_HVAC_MODES: somecomfort.SYSTEM_MODES,
|
2016-08-19 07:17:28 +00:00
|
|
|
}
|
2018-10-24 10:10:05 +00:00
|
|
|
assert expected == self.honeywell.device_state_attributes
|
2017-03-02 07:49:49 +00:00
|
|
|
|
|
|
|
def test_heat_away_mode(self):
|
|
|
|
"""Test setting the heat away mode."""
|
2019-07-31 19:25:30 +00:00
|
|
|
self.honeywell.set_hvac_mode("heat")
|
2018-10-24 10:10:05 +00:00
|
|
|
assert not self.honeywell.is_away_mode_on
|
2017-03-02 07:49:49 +00:00
|
|
|
self.honeywell.turn_away_mode_on()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert self.honeywell.is_away_mode_on
|
|
|
|
assert self.device.setpoint_heat == self.heat_away_temp
|
|
|
|
assert self.device.hold_heat is True
|
2017-03-02 07:49:49 +00:00
|
|
|
|
|
|
|
self.honeywell.turn_away_mode_off()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert not self.honeywell.is_away_mode_on
|
|
|
|
assert self.device.hold_heat is False
|
2017-03-02 07:49:49 +00:00
|
|
|
|
2019-07-31 19:25:30 +00:00
|
|
|
@mock.patch("somecomfort.SomeComfort")
|
2017-03-05 01:15:20 +00:00
|
|
|
def test_retry(self, test_somecomfort):
|
2017-03-02 07:49:49 +00:00
|
|
|
"""Test retry connection."""
|
|
|
|
old_device = self.honeywell._device
|
|
|
|
self.honeywell._retry()
|
2018-10-24 10:10:05 +00:00
|
|
|
assert self.honeywell._device == old_device
|