2019-02-13 20:21:14 +00:00
|
|
|
"""Support for (EMEA/EU-based) Honeywell evohome systems."""
|
2018-09-27 11:29:44 +00:00
|
|
|
# Glossary:
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
# TCS - temperature control system (a.k.a. Controller, Parent), which can
|
|
|
|
# have up to 13 Children:
|
|
|
|
# 0-12 Heating zones (a.k.a. Zone), and
|
|
|
|
# 0-1 DHW controller, (a.k.a. Boiler)
|
|
|
|
# The TCS & Zones are implemented as Climate devices, Boiler as a WaterHeater
|
|
|
|
from datetime import timedelta
|
2018-09-27 11:29:44 +00:00
|
|
|
import logging
|
|
|
|
|
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
|
2018-09-27 11:29:44 +00:00
|
|
|
import voluptuous as vol
|
|
|
|
|
|
|
|
from homeassistant.const import (
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
CONF_SCAN_INTERVAL, CONF_USERNAME, CONF_PASSWORD,
|
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
|
|
|
EVENT_HOMEASSISTANT_START)
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
from homeassistant.core import callback
|
2018-09-27 11:29:44 +00:00
|
|
|
import homeassistant.helpers.config_validation as cv
|
|
|
|
from homeassistant.helpers.discovery import load_platform
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
from homeassistant.helpers.dispatcher import async_dispatcher_send
|
2018-09-27 11:29:44 +00:00
|
|
|
|
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
|
|
|
REQUIREMENTS = ['evohomeclient==0.3.2']
|
2018-09-27 11:29:44 +00:00
|
|
|
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
DOMAIN = 'evohome'
|
|
|
|
DATA_EVOHOME = 'data_' + DOMAIN
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
DISPATCHER_EVOHOME = 'dispatcher_' + DOMAIN
|
2018-09-27 11:29:44 +00:00
|
|
|
|
|
|
|
CONF_LOCATION_IDX = 'location_idx'
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
SCAN_INTERVAL_DEFAULT = timedelta(seconds=300)
|
|
|
|
SCAN_INTERVAL_MINIMUM = timedelta(seconds=180)
|
2018-09-27 11:29:44 +00:00
|
|
|
|
|
|
|
CONFIG_SCHEMA = vol.Schema({
|
|
|
|
DOMAIN: vol.Schema({
|
|
|
|
vol.Required(CONF_USERNAME): cv.string,
|
|
|
|
vol.Required(CONF_PASSWORD): cv.string,
|
2019-02-13 20:21:14 +00:00
|
|
|
vol.Optional(CONF_LOCATION_IDX, default=0): cv.positive_int,
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
vol.Optional(CONF_SCAN_INTERVAL, default=SCAN_INTERVAL_DEFAULT):
|
|
|
|
vol.All(cv.time_period, vol.Range(min=SCAN_INTERVAL_MINIMUM)),
|
2018-09-27 11:29:44 +00:00
|
|
|
}),
|
|
|
|
}, extra=vol.ALLOW_EXTRA)
|
|
|
|
|
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
|
|
|
CONF_SECRETS = [
|
|
|
|
CONF_USERNAME, CONF_PASSWORD,
|
|
|
|
]
|
|
|
|
|
2018-09-27 11:29:44 +00:00
|
|
|
# These are used to help prevent E501 (line too long) violations.
|
|
|
|
GWS = 'gateways'
|
|
|
|
TCS = 'temperatureControlSystems'
|
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
# bit masks for dispatcher packets
|
|
|
|
EVO_PARENT = 0x01
|
|
|
|
EVO_CHILD = 0x02
|
|
|
|
|
2018-09-27 11:29:44 +00:00
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
def setup(hass, hass_config):
|
|
|
|
"""Create a (EMEA/EU-based) Honeywell evohome system.
|
2018-09-27 11:29:44 +00:00
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
Currently, only the Controller and the Zones are implemented here.
|
2018-09-27 11:29:44 +00:00
|
|
|
"""
|
|
|
|
evo_data = hass.data[DATA_EVOHOME] = {}
|
|
|
|
evo_data['timers'] = {}
|
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
# use a copy, since scan_interval is rounded up to nearest 60s
|
|
|
|
evo_data['params'] = dict(hass_config[DOMAIN])
|
|
|
|
scan_interval = evo_data['params'][CONF_SCAN_INTERVAL]
|
|
|
|
scan_interval = timedelta(
|
|
|
|
minutes=(scan_interval.total_seconds() + 59) // 60)
|
2018-09-27 11:29:44 +00:00
|
|
|
|
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 evohomeclient2
|
2018-09-27 11:29:44 +00:00
|
|
|
|
|
|
|
try:
|
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
|
|
|
client = evo_data['client'] = evohomeclient2.EvohomeClient(
|
2018-09-27 11:29:44 +00:00
|
|
|
evo_data['params'][CONF_USERNAME],
|
|
|
|
evo_data['params'][CONF_PASSWORD],
|
|
|
|
debug=False
|
|
|
|
)
|
|
|
|
|
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
|
|
|
except evohomeclient2.AuthenticationError as err:
|
|
|
|
_LOGGER.error(
|
|
|
|
"setup(): Failed to authenticate with the vendor's server. "
|
|
|
|
"Check your username and password are correct. "
|
|
|
|
"Resolve any errors and restart HA. Message is: %s",
|
|
|
|
err
|
|
|
|
)
|
|
|
|
return False
|
2018-09-27 11:29:44 +00:00
|
|
|
|
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
|
|
|
except requests.exceptions.ConnectionError:
|
|
|
|
_LOGGER.error(
|
|
|
|
"setup(): Unable to connect with the vendor's server. "
|
|
|
|
"Check your network and the vendor's status page. "
|
|
|
|
"Resolve any errors and restart HA."
|
|
|
|
)
|
2019-02-13 20:21:14 +00:00
|
|
|
return False
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
|
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
|
|
|
finally: # Redact any config data that's no longer needed
|
|
|
|
for parameter in CONF_SECRETS:
|
|
|
|
evo_data['params'][parameter] = 'REDACTED' \
|
|
|
|
if evo_data['params'][parameter] else None
|
2018-09-27 11:29:44 +00:00
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
evo_data['status'] = {}
|
2018-09-27 11:29:44 +00:00
|
|
|
|
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
|
|
|
# Redact any installation data that's no longer needed
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
for loc in client.installation_info:
|
|
|
|
loc['locationInfo']['locationId'] = 'REDACTED'
|
|
|
|
loc['locationInfo']['locationOwner'] = 'REDACTED'
|
|
|
|
loc['locationInfo']['streetAddress'] = 'REDACTED'
|
|
|
|
loc['locationInfo']['city'] = 'REDACTED'
|
|
|
|
loc[GWS][0]['gatewayInfo'] = 'REDACTED'
|
2018-09-27 11:29:44 +00:00
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
# Pull down the installation configuration
|
2018-09-27 11:29:44 +00:00
|
|
|
loc_idx = evo_data['params'][CONF_LOCATION_IDX]
|
|
|
|
try:
|
|
|
|
evo_data['config'] = client.installation_info[loc_idx]
|
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
|
|
|
|
2018-09-27 11:29:44 +00:00
|
|
|
except IndexError:
|
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
|
|
|
_LOGGER.error(
|
|
|
|
"setup(): config error, '%s' = %s, but its valid range is 0-%s. "
|
|
|
|
"Unable to continue. Fix any configuration errors and restart HA.",
|
|
|
|
CONF_LOCATION_IDX, loc_idx, len(client.installation_info) - 1
|
|
|
|
)
|
2019-02-13 20:21:14 +00:00
|
|
|
return False
|
2018-09-27 11:29:44 +00:00
|
|
|
|
|
|
|
if _LOGGER.isEnabledFor(logging.DEBUG):
|
|
|
|
tmp_loc = dict(evo_data['config'])
|
|
|
|
tmp_loc['locationInfo']['postcode'] = 'REDACTED'
|
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
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
if 'dhw' in tmp_loc[GWS][0][TCS][0]: # if this location has DHW...
|
|
|
|
tmp_loc[GWS][0][TCS][0]['dhw'] = '...'
|
|
|
|
|
|
|
|
_LOGGER.debug("setup(): evo_data['config']=%s", tmp_loc)
|
|
|
|
|
|
|
|
load_platform(hass, 'climate', DOMAIN, {}, hass_config)
|
2018-09-27 11:29:44 +00:00
|
|
|
|
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
|
|
|
if 'dhw' in evo_data['config'][GWS][0][TCS][0]:
|
|
|
|
_LOGGER.warning(
|
|
|
|
"setup(): DHW found, but this component doesn't support DHW."
|
|
|
|
)
|
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
@callback
|
|
|
|
def _first_update(event):
|
2019-02-13 20:21:14 +00:00
|
|
|
"""When HA has started, the hub knows to retrieve it's first update."""
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
pkt = {'sender': 'setup()', 'signal': 'refresh', 'to': EVO_PARENT}
|
|
|
|
async_dispatcher_send(hass, DISPATCHER_EVOHOME, pkt)
|
2018-09-27 11:29:44 +00:00
|
|
|
|
Add zones to evohome component (#18428)
* Added Zones, and removed available() logic
flesh out Zones
tidy up init
some more tidying up
Nearly there - full functionality
passed txo - ready to send PR
Ready to PR, except to remove logging
Add Zones and associated functionality to evohome component
Add Zones to evohome (some more tidying up)
Add Zones to evohome (Nearly there - full functionality)
Add Zones to evohome (passed tox)
Add Zones to evohome (except to remove logging)
Add Zones and associated functionality to evohome component
Revert _LOGGER.warn to .debug, as it should be
Cleanup stupid REBASE
* removed a duplicate/unwanted code block
* tidy up comment
* use async_added_to_hass instead of bus.listen
* Pass evo_data instead of hass when instntiating
* switch to async version of setup_platform/add_entities
* Remove workaround for bug in client library
- using github version for now, as awaiting new PyPi package
* Avoid invalid-name lint - use 'zone_idx' instead of 'z'
* Fix line too long error
* remove commented-out line of code
* fix a logic error, improve REDACTION of potentially-sensitive infomation
* restore use of EVENT_HOMEASSISTANT_START to improve HA startup time
* added a docstring to _flatten_json
* Switch instantiation from component to platform
* Use v0.2.8 of client api (resolves logging bug)
* import rather than duplicate, and de-lint
* We use evohomeclient v0.2.8 now
* remove all the api logging
* Changed scan_interal to Throttle
* added a configurable scan_interval
* small code tidy-up, removed sub-function
* tidy up update() code
* minimize use of self.hass.data[]
* remove lint
* remove unwanted logging
* remove debug code
* correct a small coding error
* small tidyup of code
* remove flatten_json
* add @callback to _first_update()
* switch back to load_platform
* adhere to standards fro logging
* use new format string formatting
* minor change to comments
* convert scan_interval to timedelta from int
* restore rounding up of scan_interval
* code tidy up
* sync when in sync context
* fix typo
* remove raises not needed
* tidy up typos, etc.
* remove invalid-name lint
* tidy up exception handling
* de-lint/pretty-fy
* move 'status' to a JSON node, so theirs room for 'config', 'schedule' in the future
2018-11-27 11:17:22 +00:00
|
|
|
hass.bus.listen(EVENT_HOMEASSISTANT_START, _first_update)
|
2018-09-27 11:29:44 +00:00
|
|
|
|
|
|
|
return True
|