* Improve Voip pipeline stability
It appears the pipeline is being unexpectedly cancelled in some
instances. In order to mitigate this issue hang ups will be detected
using a separate task rather than relying on timeouts in the STT read
method. Also reading STT events will be retried once if it is cancelled.
The pipeline will also catch and log any CancelledErrors to help with
further debugging.
* Update Voip tests
* Remove unnecessary changes
Remove unnecessary logging and cancelled error handling in wyoming STT.
* Remove comment about clearing system prompt
The test no longer checks for clearing the system prompt. Since that
logic exists completely in the assist_satellite component I think it is
reasonable to only test that logic in the unit tests for that component.
* Re-raise cancellation
Re-raise CancelledError if the current task is cancelling in the check hangup task
Co-authored-by: J. Nick Koston <nick@koston.org>
* Re-raise CancelledError in pipeline as well
* Fix formatting issue
* Remove unnecessary logging
* Add MockResultStream import to tests
This was presumably missed while merging
* Cancel check hangup task on disconnect
* Add myself as codeowner for VoIP
* Update CODEOWNERS
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Give entry unique id with MAC, strings.json tweaks
* Update codeowners
* Add config_flow tests
* Update requirements
* Update homeassistant/components/zimi/__init__.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Store controller reference in entry.runtime_data instead of hass.data
* Add typing
* Removed hass data pop on unload. (No longer needed when hass data moved for runtime_data)
* Refactor config_flow based on feedback from @zweckj with inline validation, simpler defaults, better description data
* Add Michael to codeowners
* Remove manual debug override in entity
* Populate via_device
* remove empty keys from manifest.json
* Refactor with DataUpdateCoordinator
Device Entities use existing push update method
* set via_device to match zcc identifier
* Changed logger to use debug level
* Define the zimi constants
* Move extraaneous code out from try
* Move __del__ to async_wil_remove_from_hass
* Use zcc device for name
* Print debug if mac mismatch
Add final exception if api is not ready after connect
* Re-work configuration flow:
1. Remove unused CONF_TIMEOUT, CONF_VERBOSITY and CONF_WATCHDOG
2. Move connect() logic out of ZimiCoordinator
3. Add fast connect check during ConfigFlow to check mac matches
4. Use zcc version 3.2.3 with default watchdog time value (and remove this from HA)
* Add error detail to mac mismatch
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/const.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/coordinator.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/coordinator.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/light.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Remove coordinator and move setup to __init__
* Set name in _attr_name
* Use _light directly for status etc; Remove _state and _brightness; SImplify update()
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* No need to delete device, fix return
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Remove non-failing items from try
Abort duplicate configurations
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Move attr change to notify
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/__init__.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Remove superflous defalt
* Update homeassistant/components/zimi/light.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/light.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Move aysnc_connect_to_controller to helpers.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Invert if api
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Added ZimiConfigEntry to type runtime_data correctly.
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Use _abort_if_unique_id_configured
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Invert error logic for cleaner flow
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
* Add ZimiDimmer class
* Set colour_mode only in ZimiDimmer
* Use device name instead of entity name
Update deviceinfo for zcc
Update deviceinfo for lights
More ZimiDimmer and ZimiLight cleanup
* Update homeassistant/components/zimi/__init__.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/__init__.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Add missing import for CONNECTION_NETWORK_MAC
* @mhannon11 Fixed some minor style changes BUT these tests need re-working now that the config_flow has a second call to the zcc helper to check the API. The tests as written now fail with connect_fail
* Remove some code from try
* Moved static items from initialiser
* Remove superflous assert when unloading entry
* refactor - move title out of data
* One call to async_add_entities
Update ZimiDimmer to initialise color_modes after calling super()
* Create ZimiEntity base class
(as ToggleEntity)
* Updated test of config_flow
* Move api_mock parameters to test cases
* Much improved tests
* Test for input value mismatch and then recovery of flow
* Import FlowResultType
* Implement Entities event setup correctly
* Initial quality_scale.yml
* Update homeassistant/components/zimi/quality_scale.yml
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/manifest.json
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Add link to zcc repo
* Update homeassistant/components/zimi/entity.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/entity.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Removed unecessary f-strings
* Filled in all of the quality scale
* Updated in line with latest documentation improvements
* FIx missing import for Entity
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Simplify logger and throw
* Update homeassistant/components/zimi/helpers.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Re-factor config_flow with multi-stage steps
* Add comments to notify
* Don't set hw_version
* Update homeassistant/components/zimi/light.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/light.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/quality_scale.yml
Co-authored-by: Josef Zweck <josef@zweck.dev>
* mark docs-troubleshooting done
* Update with zcc-helper version supporting PEP 625 sdist rules on PyPi
* Comment re characteristic ID
* Pulls in latest zcc that closes UDP listening port correctly after discovery timeout
* Re-factored config_flow
1. Try discovery and auto-populate
2. Try manual configuration (with optional values for port and mac)
In most cases, auto-discovery does it all.
Discovery will only fail if UDP broadcast is not possible to/from zcc.
* Do not show error message if discovery fails
* Refactor with self.data and async_show_step_finish()
* Update homeassistant/components/zimi/light.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/quality_scale.yml
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/quality_scale.yml
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/entity.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/light.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* refactor import to use ConfigFlow
* Change status for discovery
* Add dynamic title to config flow
* string
* Revert title from form but add IP:port to static title
* Automatically finish configuration if possible, if not show form
* Use StrEnum instead of Exception class
* Remove MAC from user forms
* Disconnect api before form completion
* Assign to self.mac instead of returning as detail
* Updated test suite
* Update test status
* mark action exemptions todo
* Remove mac related error cases from flow completely
* Remove unused MAC error strings
* Moved error details to logs
Removed _error_tuple
Removed error details
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* rename check_errors
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Update zcc-helper and support HA devices via zcc manufacter_info fields
* Partial implementation - Use updated zcc-helper to discover multiple controllers
* Config_flow with support for auto-discovery of one or more zcc or fallback to manual configuration.
* Don't re-connect to api if validate_connection already did
* Make fast=False is used for creation
* Pull in improved zcc_helper version to address data completeness after machine_info implementation
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Import and use ConfigFlowResult
* Latest zcc to fix discovers() return value bug
* Update config_flow.py
* Update homeassistant/components/zimi/manifest.json
Co-authored-by: Josef Zweck <josef@zweck.dev>
* Use latest release version of 3.3 (no changes to rc4)
* Improved sentence casing
* Update strings.json
* Update homeassistant/components/zimi/entity.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Remove superflous logging
Use Zimi network_name as ZCC name
Cleanup device info inputs
* Remove __del__
* Rename arguments
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Move PLATFORMS to init
* Update homeassistant/components/zimi/light.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove debug at init
* Update homeassistant/components/zimi/helpers.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove _attr_has_entity = False
* More naming changes
* Revised config_flow to use zcc-helper for validation using new zcc-helper version
* Update homeassistant/components/zimi/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/__init__.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Removed commented enum
* s/_entity/_device/g
* Update homeassistant/components/zimi/entity.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/helpers.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Don't log error when raising exception
* Updated tests for new config_flow
* Refactor with new zcc that uses Exception classes to pass errors
* Updated tests for config_flow to use Exceptions
* Device name is based on model
* Device name is None
Maps better to ZCC concept where devices do not have a name but the individual entities have names.
* Fix quality filename
* Bump zcc-helper to 3.4 release version
* Remove name override
* Bump zcc-helper to 3.4.1 with new device_name attribute used to populate devinfo
* Update homeassistant/components/zimi/light.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add missing transalation picked up by CI
* Update homeassistant/components/zimi/light.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Bump zcc-helper to only classify light and dimmer controlPointType as lights
* Bump to non dev version of zcc-helper
* Ruff fixes
* Add missing data description for pytest
* Remove confusing comment
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/const.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/const.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/const.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/strings.json
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zimi/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update homeassistant/components/zimi/light.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* f-strings
* Update tests/components/zimi/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zimi/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Assert result type, step and errors between each step
* test for duplicate entry
* Update tests/components/zimi/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zimi/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zimi/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zimi/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update tests/components/zimi/test_config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove duplicate test for discovery failure
* Calculate brightness
* Don't re-raise Exception in helper
* Fix ruff and mypi errors
* Add tests for missing connection exceptions
* Added standard invalid_host and timeout strings
* Explain limitations in discovery.
* Update quality_scale.yaml
* Update quality_scale.yaml
* Removed duplicate strings with reference
---------
Co-authored-by: markhannon <mark.hannon@gmail.com>
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* feat: raise execption on hvac mode while device is locked
* fix: test for setting hvac mode while device is locked.
* feat: update translation
* feat: add separate translations for HVAC and temperature
* fix: test cases
* fix: test cases for test_set_preset_mode_boost
* rev: code review
* rev: exception string
* feat: updated error message and added helper function
* Update homeassistant/components/fritzbox/strings.json
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
* fix: translation key
* remove check_active_or_lock_mode from async_set_preset_mode
---------
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
* Add support for WMS roller shutters and blinds
* Add test variants for WMS device types and their diagnostics
* Add test variants for cover movement of WMS device types
* Move device entry tests to test_init and avoid snapshot list
Suggested-by: joostlek
* Fixes to user-facing strings of `tplink`
- add missing hyphen to "auto-off" and "auto-update"
- sentence-case one overlooked word
* Update test_sensor.ambr
* Update test_switch.ambr
* Implemented coordinator (for Cloud integration)
* Optimized coordinator updates
* Finalizing
* Running ruff and ruff format
* Raise error if trying to instantiate coordinator for a AdaxLocal config
* Re-added data-handler for AdaxLocal integrations
* Added a coordinator for Local integrations
* mypy warnings
* Update homeassistant/components/adax/manifest.json
Co-authored-by: Daniel Hjelseth Høyer <mail@dahoiv.net>
* Resolve mypy issues
* PR comments
- Explicit passing of config_entry to Coordinator base type
- Avoid duplicate storing of Coordinator data. Instead use self.data
- Remove try-catch and wrapping to UpdateFailed in _async_update_data
- Custom ConfigEntry type for passing coordinator via entry.runtime_data
* When changing HVAC_MODE update data via Coordinator to optimize
* Apply already loaded data for Climate entity directly in __init__
* Moved SCAN_INTERVAL into const.py
* Removed logging statements
* Remove unnecessary get_rooms() / get_status() functions
* Resolvning mypy issues
* Adding tests for coordinators
* Resolving review comments by joostlek
* Setup of Cloud devices with device_id
* Implement Climate tests for Adax
* Implementing assertions of UNAVAILABLE state
* Removed no longer needed method
* Apply suggestions from code review
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Mock Adax class instead of individual methods
* Mock config entry via fixture
* Load config entry data from .json fixture
* Hard code config_entry_data instead of .json file
* Removed obsolete .json-files
* Fix
* Fix
---------
Co-authored-by: Daniel Hjelseth Høyer <mail@dahoiv.net>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Use new (internal) cluster handler IDs in unit tests
* Always add a profile_id to created endpoints
* Use new library decimal formatting
* Implement the ENUM device class for sensors
* Use the suggested display precision hint
* Revert "Implement the ENUM device class for sensors"
This reverts commit d11ab268121b7ffe67c81e45fdc46004fb57a22a.
* Bump ZHA to 0.0.57
* Add strings for v2 quirk entities
* Use ZHA library diagnostics
* Update snapshot
* Revert ZHA change that reports a cover state of `open` if either lift or tilt axes are `open`
This is an interim change to address issues with some cover 'relay' type devices which falsely report support for both lift and tilt. In reality these only support one axes or the other, with users using yaml overrides to restrict functionality in HA.
Devices that genuinely support both movement axes will behave the same as they did prior to https://github.com/zigpy/zha/pull/376https://github.com/home-assistant/core/pull/141447
A subsequent PR will be made to allow users to override the covering type in a way that allows the entity handler to be aware of the configuration, calculating the state accordingly.
* Spelling mistake
---------
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
Co-authored-by: Jack <46714706+jeverley@users.noreply.github.com>
* Expose LitterHopper status for LR4
* Proper naming and icons
* Add simple tests
* fix test: lowercase enabled
* over-torque, not OT
* Don't use icon_fn for simple state map
* short not Short
* Better state names
* migrate climate attributes to own entities
* add a comment to make it searchable
* Apply suggestions from code review
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Apply suggestions from code review
* update snapshots
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Allow multiple config entries in Home Connect
* Config entry migration
* Create new entry if reauth flow is completed with other account
* Abort if different account on reauth
* Add light as entity platform on MQTT subentries
* Improve translation strings
* Rename to separate brightness
* Remove option to use mireds for color temperature
* Fix tests
* Add translation reference
* Correct reference
* Add flash and transition feature switches
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Remove dependency on modbus for stiebel_eltron
The modbus integration changed its setup, so it is
not possible anymore to have an empty hub.
* Add config flow
* Update pystiebeleltron to v0.1.0
* Fix
* Fix
* Add test for non existing modbus hub
* Fix tests
* Add more tests
* Add missing translation string
* Add test for import failure
* Fix issues from review comments
* Fix issues from review comments
* Mock stiebel eltron client instead of setup_entry
* Update homeassistant/components/stiebel_eltron/__init__.py
* Update homeassistant/components/stiebel_eltron/__init__.py
---------
Co-authored-by: Joostlek <joostlek@outlook.com>
* Add external usb drives
* Add partition percentage used
* Move icons to icons.json
* Add external usb to diagnostics
* Add assert for external usb entity
* Fix reset external_usb
* Update homeassistant/components/synology_dsm/diagnostics.py
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
* Update homeassistant/components/synology_dsm/diagnostics.py
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
* Fix diagnostics
* Make each partition a device
* Add usb sensor tests
* Add diagnostics tests
* It is possible that api.external_usb is None
* Merge upstream into syno_external_usb
* add manufacturer and model to partition
* fix tests
---------
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
Co-authored-by: mib1185 <mail@mib85.de>
* Add some more sensors
* Add some debug logging and correct spelling
* Address review comments
* Split out duration sensors to separate PR
* Update strings
* Filter program phases by device type
* Update tests
* Fix auto link
* Address som of the comments
* Lint
* Lint
* Remove duplicates from enum sensor options
* Update snapshot
* Sort options in enum sensors