* Add siren platform
* add more supported flags and an ability to set siren duration
* tone can be int or string
* fix typing
* fix typehinting
* fix typehints
* implement a proposed approach based on discussion
* Address comments
* fix tests
* Small fix
* Update homeassistant/components/demo/siren.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/demo/siren.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/demo/siren.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/demo/siren.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/demo/siren.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* typing
* use class attributes
* fix naming
* remove device from service description
* Filter out params from turn on service
* fix tests
* fix bugs and tests
* add test
* Combine is_on test with turn on/off/toggle service tests
* Update homeassistant/components/siren/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* fix filtering of turn_on attributes
* none check
* remove services and attributes for volume level, default duration, and default tone
* Update homeassistant/components/siren/__init__.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/siren/__init__.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Update homeassistant/components/siren/__init__.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* import final
* Update homeassistant/components/siren/__init__.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Fix typing and used TypedDict for service parameters
* remove is_on function
* remove class name redundancy
* remove extra service descriptions
* switch to positive_int
* fix schema for tone
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Add definitions for grouping media players
See https://github.com/home-assistant/architecture/issues/364
* Fix Google Assistant tests
* Define sync versions of async_join_players/async_unjoin
* Don't use async API in synchronous test methods
* Fix tests and make pylint happy
The method name `unjoin` is used by another component, so let's use
`unjoin_player` instead.
* Fix emulated_hue tests
The new media player entity in the `demo` component requires a tiny
adjustment in the emulated_hue tests.
* Use "target:" in service description
* Also use "name:" in service descriptions
Co-authored-by: Franck Nijhof <git@frenck.dev>
* Unused pylint suppression cleanups
* Remove outdated pylint bug references
* Add flake8-noqa config and note to run it every now and then
* Add codes to noqa's
* Unused noqa cleanups
* Fix backwards compatiblity with fans update to new model
There were some non-speeds and devices that report a none
speed. These problems were discovered when updating zha
tasmota and vesync to the new model in #45407
* Update coverage
* fix check
* Reduce loss of precision when setting light percent brightness
This part of an effort to fix all the round trip light
brightness percentages that cause errors with homekit
, alexa, and other devices that use percentage.
* fix demo light test
* Clean up demo camera
* Complete test_motion_detection
* Clean up image reading
* Clean up camera integration async methods
* Fix and clean camera integration tests
* Fix image processing patch
* 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.