* Bump aiohomekit to get better reconnection handling and cleaner shutdowns.
* Read the ACTIVE characteristic and set ok/problem state
Also gets test coverage to 100%.
* Refactor zha core device _check_available().
Make it async, so we don't run it in a sync worker.
* Use random keep alive interval for zha device pings.
* Update tests.
* Update Yandex transport after API change (home-assistant#32431)
* Update mocked response for test (home-assistant#32431)
* Codestyle fixes (home-assistant#32431)
* multi attribute reads for lights
* catch specific exceptions
* get attributes
* fix mains powered update
* add guards and use get_attributes
* use debug for read failures
* cleanup
* update return value for read_attributes
* fix on with timed off
* add app support
* code cleanup, add additional test, add CONF_APPS storage logic for import
* simplify schema defaults logic
* remove unnecessary lower() and fix docstring
* remove default return for popping CONF_APPS during import update because we know entry data has CONF_APPS due to if statement
* further simplification
* even more simplification
* fix type hints
* move app configuration to separate step, fix tests, and only make app updates if device_type == tv
* remove errors variable from tv_apps and move tv_apps schema out of ConfigFlow for consistency
* slight refactor
* remove unused error from strings.json
* set unique id as early as possible
* correct which dictionary to use to set unique id in pair_tv step
* Returns an unencrypted location of all persons with device trackers
* Handle encrypted messages and exclude the poster's location
* Friends is by default False. Reformats with Black
* Updates the context init to account for the Friends option
* Fix Linter error
* Remove as a config option
* No longer imports encyrption-related functions in encrypt_message
* Fix initialization in test
* Test the friends functionality
* Bugfix for persons not having a location
* Better way to return the timestamp
* Update homeassistant/components/owntracks/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Linting and tid generation
* Fix test
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* added presets for switch devices
* added channel type to __init and const
* ran pylint on library so needed a few changes in names
* removed callback
* bool -> cv.boolean
* [soundtouch] workaround for API bug when removing multiple slaves from a zone at once
* [soundtouch] added additional attributes exposing multiroom zone info
* Fix update with slave entities
* Add zone attributes test
* Fix and clean up tests
* Fix typo
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Allow string values on zwave.set_node_value
This allows for:
* Accessing longer value_ids. In some cases, value ids in z-wave nodes are very large (17 digits in my case). Passing them as int does not seem to work well (python probably truncates the number), but passing them as string works fine
* Changing color values, which are represented as hex string
reformat test
* update services.yaml with string set_node_value
* Update image_processing.py
Adds save timestamp file and adds last_detection attribute
* Update test_image_processing.py
Adds test
* Adds assert pil_img.save.call_args
* Test timestamp filename
* Add test bad data
* Update test_image_processing.py
* Fix bad image data test
* Update homeassistant/components/sighthound/image_processing.py
Co-Authored-By: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* code quality improvements
* code quality improvements and fixed tests
* explicitly set unique ids
* improve unique id creation
* remove entities from entity registry
* added test for removing entities from entity registry
* revert entity registry handling from sensor and test code
* check for entity registry removal in geolocation test case
* make import absolute; isort
* change quality scale
* add is_muted property and update tests
* black
* manually set is_muted on async_mute_volume calls to set state early
* combine two lines into one
* set is_muted to None when device is not on
* Move keypad battery implementation details into py-august
* Upgrade to py-august 0.22.0 which also adds gen2 doorbell battery data
* remove cruft from previous refactor
* refactoring for multi platform
* adopted test_bridge to refactoring
* refactoring tests for multi-platform
additional coverage in config and init
* comment for clarity
* more specific imports from lib
* library version bump
* removed async_update
* changed parameter order to start with hass
* removed pylint disable
* unsubscribe from signal dispatcher
inherit from Entity
* use device.unique_id
* changed hass_obj to hass
* added test for remove entity
bug fix from the test
* removed the polling try_connect. hate polling... it is now part of the async_setup()
significantly makes the code clearer and simplifies the tests
* removed leftover debug logs in the library
* changed tests to get the entry_id from hass
* changed place to assign hass.data only after success
* fixes for test_init
* removed assert
* removed device_info
* removed bridge internal from common
* modified test_bridge to work without the bridge directly
* removed bridge from test_existing_update
* changed update to not use bridge internals
* dyn_bridge fixture no longer used - removed
* Various code review items from previous PRs
* Add a test for fetching the doorbell camera image
* Switch to using UNIT_PERCENTAGE for battery charge unit
* Add tests for changed_by
* Allow managing Lovelace storage dashboards
* Make sure we do not allow duplicate url paths
* Allow setting sidebar to None
* Fix tests
* Delete storage file on delete
* List all dashboards
* Use f-strings in integrations starting with "H"
* Use f-strings in integrations starting with "I"
* Use f-strings in integrations starting with "J"
* Use f-strings in integrations starting with "K"
* Use f-strings in integrations starting with "L"
* Fix lint error
* Use join instead of f-string in homekit_controller
* Use local variables with f-strings
* Fix lint error
* Escape the characters in f-string
* Sort imports with isort in homeworks light
* Fix pylint error
* Fix broken tests
* Fix broken tests v2
* added entry listener that reloads the component
* fixed update with existing entry
* fixed import in test
* fixes
* library version
* removed unique_id
* fix
* fixed for no entries in hass.data
* fixed return value on abort
* moved to use async_entries
* removed unused import
* support pairing through config flow
* simplify import failure log messages
* remove unnecessary list comprehension
* bump pyvizio to add passing ClientSession in where it was missed
* show different message if user completes pairing through import
* remove dupe failure message since reasons for failure are the same in both instances
* remove extra constant
* add host reachability check during pairing workflow
* revert redundant connection check since check is implicitly done during pairing process
* fix rebase errors
* fix string
* updates based on review
* update docstring
* missed commit
* update import confirmation message to be less wordy
* use ConfigFlow _abort_if_unique_id_configured
* fix test
* Removing polling from august
* Now using subscribers to the detail and activity
* Fix hash to list keys
* continue to the next house if one fails
* Add async_signal_device_id_update
* Fix double initial update
* Handle self.hass not being available until after async_added_to_hass
* Remove not needed await
* Fix regression with device name
* async_step_user to async_configure
* fix for lint
* fix for pylint
* fix isort and black
* fix miss-fixed black
* fixing for the python37 coverage
* fix transmission definition
* fix for Black formatting
* fix type to abort
* clean up
* clean up for the test
* fix for the test
* refactor
* split test_flow_works to three tests
* revert the assert
* remove whitespaces for flake8
* apply patch function
* fix for the patch
* fix for the black
* remove mock_coro
* fix for the black
* hue to heos
* try to fix import
* fix for the black
* revert try to fix import
* Add a pytest fixture
* fix for the black
* Reduce August doorbell detail updates
* Doorbell images now get updates from the activity feed
* Tests for activity updates
* py-august now provides bridge_is_online for available state
* py-august now provides is_standby for available state
* py-august now provides get_doorbell_image (eliminate requests)
* remove debug
* black after merge conflict
* Centralize august activity updates
* Updates appear significantly more responsive
* Should address the community complaints about "lag"
* Reduce detail updates (device end points) to one hour interval
* Signal entities to update via dispatcher when new activity arrives
* Resolves out of sync state (skipped test is now unskipped)
* pylint
* fix merge conflict
* review comments
* Remove stray
* Address review items that can be done without refactor
* Reduce August doorbell detail updates
* Doorbell images now get updates from the activity feed
* Tests for activity updates
* py-august now provides bridge_is_online for available state
* py-august now provides is_standby for available state
* py-august now provides get_doorbell_image (eliminate requests)
* remove debug
* black after merge conflict
* Config Flow for sense
* Fix unique ids so they are actually unique (and migrate the old ones)
* Fix missing solar production
* Do not mark sensors available until they have data
* Address review items
* Address review round #2
* Add battery sensors for August devices
* Additional tests and cleanup in prep for config flow
and device registry
* pylint
* update name for new style guidelines - https://developers.home-assistant.io/docs/development_guidelines/#use-new-style-string-formatting
* Config Flow for august push
* Update homeassistant/components/august/__init__.py
Co-Authored-By: Paulus Schoutsen <paulus@home-assistant.io>
* Address review items
* Update tests
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* dedup config flows
* use default (imported) options until user goes thru options flow
* address pr feedback
* correct key used to distinguish pro model
* Add observed entities to bayesian sensor
* Update binary_sensor.py to comply with style guidelines and test_binary_sensor.py to verify the entity_id
* Update binary_sensor.py and test_binary_sensor.py to include an additional attribute for observed entities
* Use of ATTR_ENTITY_ID and numeric key of observed entity
* Update binary_sensor.py
* Update test_binary_sensor.py to verify behavior
* Update to return a list without duplicates in the state attribute
* Update binary_sensor.py: rename of ATTR_ENTITY_ID into ATTR_OBSERVED_ENTITIES
* Rename new attribute into ATTR_OCCURRED_OBSERVATION_ENTITIES and fix test
* Use f-strings in integrations starting with F
* Use f-strings in tests for integrations starting with F
* Use f-strings in integrations starting with G
* Use f-strings in tests for integrations starting with G
* Fix pylint error
* Fix broken test
* Add and use speed constants
* Add and use meter based volume and area constants
* Add and use more mass unit constants
* Add and use concentration unit constants
* Add and use watts per square meter constant
* Use more time constants
* Use more data constants
* Add tests for legacy Script helper behavior
* Add Script helper if_running and run_mode options
- if_running controls what happens if Script run while previous run
has not completed. Can be:
- error: Raise an exception
- ignore: Return without doing anything (previous run continues as-is)
- parallel: Start run in new task
- restart: Stop previous run before starting new run
- run_mode controls when call to async_run will return. Can be:
- background: Returns immediately
- legacy: Implements previous behavior, which is to return when done,
or when suspended by delay or wait_template
- blocking: Returns when run has completed
- If neither is specified, default is run_mode=legacy (and if_running
is not used.) Otherwise, defaults are if_running=parallel and
run_mode=background. If run_mode is set to legacy then if_running must
be None.
- Caller may supply a logger which will be used throughout instead of
default module logger.
- Move Script running state into new helper classes, comprised of an
abstract base class and two concrete clases, one for legacy behavior
and one for new behavior.
- Remove some non-async methods, as well as call_from_config which has
only been used in tests.
- Adjust tests accordingly.
* Change per review
- Change run_mode default from background to blocking.
- Make sure change listener is called, even when there's an unexpected
exception.
- Make _ScriptRun.async_stop more graceful by using an asyncio.Event for
signaling instead of simply cancelling Task.
- Subclass _ScriptRun for background & blocking behavior.
Also:
- Fix timeouts in _ScriptRun by converting timedeltas to float seconds.
- General cleanup.
* Change per review 2
- Don't propagate exceptions if call from user has already returned
(i.e., for background runs or legacy runs that have suspended.)
- Allow user to specify if exceptions should be logged. They will still
be logged regardless if exception is not propagated.
- Rename _start_script_delay and _start_wait_template_delay for
clarity.
- Remove return value from Script.async_run.
- Fix missing await.
- Change call to self.is_running in Script.async_run to direct test of
self._runs.
* Change per review 3 and add tests
- Remove Script.set_logger().
- Enhance existing tests to check all run modes.
- Add tests for new features.
- Fix a few minor bugs found by tests.
* Use f-strings in integrations starting with B
* Use f-strings in integrations starting with C
* Use f-strings in integrations starting with D
* Use f-strings in integrations starting with E
* Fix pylint errors
* Fix pylint errors v2
* Fix tests
* Fix tests v2
* Deduplicate code in the august integration
* Add additional tests for august (more coming)
* Door state is now updated when a lock or unlock call returns
as the state is contained in the response which avoids
the confusing out of sync state
* revert
* document known issue with doorsense and lock getting out of sync (pre-existing)
* Address review comments
* Additional review comments
* Use f-strings in integrations starting with A
* Use f-strings in tests for integrations starting with A
* Fix pylint by renaming variable
* Fix nested for loop in f-string for aprs device_tracker
* Break long lines into multiple short lines
* Break long lines into multiple short lines v2