Most of the the template platforms would check for
extract_entities failing to extract entities and avoid
setting up a state change listner for MATCH_ALL after
extract_entities had warned that it could not extract
the entities and updates would need to be done manually.
This protection has been extended to all template platforms.
Alter the behavior of extract_entities to return the
successfully extracted entities if one or more templates
fail extraction instead of returning MATCH_ALL
* Switch async_track_state_change to the faster async_track_state_change_event part 4
Calling async_track_state_change_event directly is faster than async_track_state_change (see #37251) since async_track_state_change is a wrapper around async_track_state_change_event now
* pylint
Calling async_track_state_change_event directly is faster than async_track_state_change (see #37251) since async_track_state_change is a wrapper around async_track_state_change_event now
* Switch to config flow setup
* Add minimal test for config flow
* Add myself as codeowner and address some review concerns
* Address some further review comments
* Switch to integration level config
* Switch to per device config rather than per entity type
* All roller shutters should be added as covers
(there are non lighting types)
* Fixup tests that used invalid packets for platforms
* Avoid variable re-use
* Allow control events on sensors too
That way we get signal level sensors for these too
* Lint correction
* Don't filter sensors from config
Disable sensors from GUI if the entities are not wanted
* Correct usage of ATTR_ instead of CONF_
* Make sure the logging when a new entity is added includes the event
* Introduce Bond Hub concept
* Read Hub version information when setting up entry
* Link entities to Hub using via_device
* Add test to verify created Hub device properties
* Refactor Bond integration to remove duplication in Entity code and unit tests
* Refactor Bond integration to remove duplication in Entity code and unit tests (PR feedback)
* Support Fan domain in Bond integration
* Support Fan domain in Bond integration
* Support Fan domain in Bond integration (apply PR feedback)
* Support Fan domain in Bond integration (apply PR feedback)
* Declare Bond covers as having assumed state, setup local polling for state updates
* Declare Bond covers as having assumed state, setup local polling for state updates (apply feedback from PR review)
* Declare Bond covers as having assumed state, setup local polling for state updates (apply feedback from PR review)
* Declare Bond covers as having assumed state, setup local polling for state updates (apply feedback from PR review)
* Detect lingering threads after tests
* Make sure cast is setup before checking state
* Make sure we ask executors of old hass to shutdown
We are not waiting here, just hoping for the best
* Make sure all instances of hass and executors is stopped.
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Also apply hass stopping to scripts
* Adjust to changes how we set up executor
* Add new CoreState.stopped
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Add public weather sensors back in
* Remove stale code
* Cleanup after before adding entities
* Fix pylint complaint
* Add test for options flow
* Change mode to listbox
* Update .coveragerc
* Address comments
* Don't process empty list
* Address comment
* Fix mistake
* Make signal unique
* Make string more unique
* Fix merge conflict
* First step of an EnOcean integration refactoring, including code reorganisation and support of a setup config flow
* Moved title to root of strings file
* Fixed pre-commit checks failures
* Fixed linter errors
* Updated formatted string format in logs
* Removed leftover comment
* Multiple changes after PR change requests.
Using an import flow for yaml config, removed unnecessary logs, added proper unload in __init__ and EnOceanDongle
Replaced config state machine by several flows.
Serial port validity check done in the EnOceanDongle class asynchronously, removed unique ID from config flow
Multiple cosmetic changes
* Multiple changes after PR change requests
* Added variable to store default value, as setdefault was caught returning None when the empty dict literal was passed as an argument
* Literal used directly
* Added tests for EnOcean config flows, changed static methods to bundle methods for bundle
* Updated variable name
* Added missing mock to test, replaced repeated magic strings by constants
* Changed imports to avoid an unused import warning from pylint on DOMAIN
* Adding pylint exception for unused import
* Added proper propagation of setup and unload to platforms, removed dead code, some syntax changes
* Removed setup_entry forwarding as the entities can only be configured using yaml
* Removed forwarding of unload
* Enabled code coverage for config flow only
* Clean up coveragerc
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* make ip check hostname aware
* add executor job for sync function doing IO and remove errant comma
* revert change to update new_data explicitly for options keys since it is already done later
* empty commit to retrigger CI
* Add support for set_config_parameter service
* Adjusted elif to if
* More if/else cleanup
* More if/else cleanup
* Less nesting
* End loop properly
* Added byte type
* Convert break to return
* fix presets and mode conversion
* fix mapping issues in ozw climate
* build mapping table in advance
* Copying a dict to a list copies the keys by default
* Make devices and activities visibile as harmony attributes
* Allow restoring previous activity, add tests
* fix test
* Kill activity_notify with fire
* remove trailing ,
* Switch homekit to use async_track_state_change_event
Calling async_track_state_change_event directly
is faster than async_track_state_change and has
slightly lower latency triggering state updates
in homekit
* check for deleted entities
* Update additional tests for linked sensor removals
* Ensure removing entities does not result in an exception
* Cleanup async_track_state_change and augment docstrings.
Skip from_state and to_state matching in
async_track_state_change when they are None
Optimize the state change listener for the most
common use case: no to_state and from_state
matching.
* Update benchmark to be more realistic (previously we assumed only one entity was present in the whole instance)
* Add more tests to ensure behavior is preserved
* Ensure new behavior matches test
* remove MATCH_ALL from zone automation since its the default anyways
* Might as well use async_track_state_change_event instead since MATCH_ALL is removed
* Switch to dispatcher
* Adjust tests for dispatcher
* Store device in sensor
* Move state application into binary sensor entity class
* Move more specifics into per platform classes
* Should not apply event in init of sensor
* Switch to call_later
* Make apply_event public
* No point in slugifying debug logs
* Adjust error in off delay and event
* Make sure we match with masked id
* Switch tests to use hass objects instead of direct
* Make sure sensor update state
* Add some initial binary sensor tests
* Add initial binary sensor tests
* Add tests for pt2262
* Add test for off delay
* Convert Android TV integration to async
* pylint
* Remove unused test code
* Require async versions of androidtv and adb-shell
* Cleanup
* Remove commented out code
* Use constants SHELL_RESPONSE_OFF and SHELL_RESPONSE_STANDBY
* Prebake common history queries
The python overhead of to construct
the queries exceeded the database overhead. We now
prebake the queries that get frequently polled.
This reduces the time it takes to update history_stats
sensors and can make quite a difference if there
are a lot of them.
When using the mini-graph-card card, all the entities
on the card being graphed are queried every few seconds
for new states. Previously this would tie up the database if there
are lot of these graphs in the UI.
* Update homeassistant/components/history/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Update homeassistant/components/history/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* cache entity_filter in the lambda
* switch to yield
* Revert "switch to yield"
This reverts commit f8386f4940.
* get_states always returns a list
* query wasnt actually reusable so revert part of the breakout
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Support multiple MQTT availability topics
* Make availability list and availability_topic exclusive
* Make availability list and availability_topic exclusive
* Add missing abbreviation
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Tom Scholten <tom@sue.nl>
Co-authored-by: Tom <CoMPaTech@users.noreply.github.com>
* add more unit tests for plum_lightpad
* add more unit tests for plum_lightpad
* add more unit tests for plum_lightpad
* add more unit tests for plum_lightpad
* Update tests/components/plum_lightpad/test_init.py
apply suggested way to invoke async_setup_entry
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
apply suggested way to invoke async_setup_entry
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
apply suggested way to invoke async_setup_entry
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
remove now unused import
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
import Mock from tests.async_mock as suggested
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
remove now unused import
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Update tests/components/plum_lightpad/test_init.py
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* fix unit tests that were failing after suggested changes
Co-authored-by: Chris Talkington <chris@talkingtontech.com>
* Rework and re-enable rfxtrx tests
* Add missed change to _signal_event
* Fixup the dummy serial that causes max cpu
* Make sure we cleanup thread here too
* Make sure we always wait for tasks before we check state
* Some more places we need to wait before checking
* Add humidifier support to homekit
* spell
* dependencies
* lint
* add linked humidity sensor for humidifiers
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* apply suggestions from code review
* pylint
* Fix tests
* Update homeassistant/components/homekit/type_humidifiers.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Update tests/components/homekit/test_homekit.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* apply suggestions from code review
* lint
* pylint
* push
* test for unavailable linker sensor
* black
* valid values key case
* black
* Update homeassistant/components/homekit/type_humidifiers.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* black
* coverage
* Set current humidity to 0 if linked sensor removed or unavailable
* use last known humidity instead
Co-authored-by: J. Nick Koston <nick@koston.org>
* Initial commit for Dexcom integration
* Dexcom config flow testing
* Clarify errors during setup
* Resolve minor test issues
* Update sensor availability, resolve linting issues
* Add sensor tests
* Remove title due to 0.109, add abort
* >94.97% codecov/patch
* Move .translations/ to translations/
* Add constants for servers and unit of measurements
* Bump pydexcom version
* Updated domain schema, Dexcom creation
* Support for different units of measurement
* Update tests
* Remove empty items from manifest
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Raise UpdateFailed if fetching new session fails
* Switch everything over to required
* Simplify state information
* Simplify async_on_remove
* Pydexcom package now handles fetching new session
* Only allow config flow
* Remove ternary operator
* Bump version, pydexcom handling session refresh
* Using common strings
* Import from test.async_mock
* Shorten variable names
* Resolve tests after removing yaml support
* Return false if credentials are invalid
* Available seems to handle if data is empty
* Now using option flow, remove handling import
* Add fixture for JSON returned from API
* Overhaul testing
* Revise update options
* Bump pydexcom version
* Combat listener repetition
* Undo update listener using callback
* Change sensor availability to use last_update_success
* Update sensor availability and tests
* Rename test
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Since we now base all of exposure checks on data that
will not change, we can cache the result instead
of calculating it every loop.
This change complements the work done in #32718
* refactoring to share logic and sensor startup error test
* Added handling for V1 InfluxDBServerError to start-up and runtime and test for it
* Added InfluxDBServerError test to sensor setup tests
* Raising PlatformNotReady exception from sensor for setup failure
* Proper testing of PlatformNotReady error
* add first unit test to config flow for Plum Lightpad
* add first unit test to config flow for Plum Lightpad (add changed requirements_test_all.txt)
* add first unit test to config flow for Plum Lightpad
* add first unit test to config flow for Plum Lightpad (bring coverage to 100%)
* add first unit test to config flow for Plum Lightpad
* add first unit test to config flow for Plum Lightpad (updated patch path as suggested)
* add first unit test to config flow for Plum Lightpad (add unit test for abort)
* Move logbook continuous domain filtering to sql
sensors tend to generate a significant amount of states
that are filtered out by logbook. In testing 75% of
states can be filtered away in sql to avoid the
sqlalchemy ORM overhead of creating objects that will
be discarded.
* remove un-needed nesting