* Move inkbird coordinator logic into coordinator.py
Not a functional change, one to one relocation
* Move inkbird coordinator logic into coordinator.py
Not a functional change, one to one copy
* Move inkbird coordinator logic into coordinator.py
Not a functional change, one to one copy
* add sensor platform to bosch_alarm
* add icon translations for sensors
* translate entity names
* translate entity names
* translate entity names
* update snapshots
* translate ready to arm sensor
* translate ready to arm sensor
* update tests
* update translations
* remove history sensor, we will replace it with an events sensor later
* fix tests
* fix tests
* fix tests
* update tests
* fix sensor links
* only call async_add_entities once
* convert area alarms to sensors based on type
* add sensor for alarms
* add icons
* cleanup area sensor
* add available
* loop over dict
* use entity description
* use entity description
* clean up entity descriptions
* observe_alarms and observe_ready
* refactor alarm_control_panel to use base entity
* remove more old sensors
* add unit of measurement
* update test snapshots
* use correct observer
* Add entity tests
* Add __init__ tests
* Cleanup
* Rename mock_motionmount_config_flow to mock_motionmount
* Remove unneeded PropertyMock
* Set defaults on mock_motionmount
* Test proper device is created
* Check whether proper device is created from test_init.py, also without mac
* Find callback and use that to update name
* Add fan platform to eheimdigital
* Fix pylint
* Convert fan to sensor platform
* Remove unnecessary changes
* Add state update test
* Review
* Review
* Review
* Add DHCP discovery support to Bond
* fixes
* unique ids are always upper
* raise_on_progress=False for user
* Update tests/components/bond/test_config_flow.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* assert unique id
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Ensure a flux_led user flow can replace an ignored entry
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for flux_led
* works as-is was a problem with core.config_entries
* Do not fetch disconnected Home Connect appliances
* Apply suggestions
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update docstring
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Hide bad ZBT-1 config entries on the hardware page
* Set up the bad config entry in the unit test
* Roll into a list comprehension
* Remove constant changes
* Fix condition in unit test
Replacing an ignored config entry with one from the user
flow should not generate a warning. We should only warn
if we are replacing a usable config entry.
Followup to adjust the warning added in #130567
cc @epenet
* Deprecate effect none instead of breaking it for Hue
* add guard for unknown effect value
* revert guard
* Fix
* Add test
* Add test
* Add test
---------
Co-authored-by: Joostlek <joostlek@outlook.com>
* now the price will return even if it is exactly 0
* now the price will return even if it is exactly 0
* now the price will return even if it is exactly 0
* clean code
* clean code
* update testing code coverage
* change zero testing to SE4
* remove row duplicate
* fix date comments
* improve testing
* simplify if-return-0
* remove unnecessary tests
* order testing rows
* restore test_sensor_no_next_price
* remove_average_price_test
* fix test name
* Move Z-Wave JS smoke, CO, CO2, Heat, Water problem entities to diagnostic
* Update link + states
* Specify problem class explicitly instead of catch-all
* Heat alarm test is not a problem
* Also split out smoke alarm
* Document mapping rule
* add tests
* format
* update test
* review comments
* remove idle state from doc as it is ignored
---------
Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
* check for empty or missing values when processing state messages for MQTT light entities using 'template' schema
* normalise warning logs
* add tests (one is still failing and I can't work out why)
* fix test
* improve test coverage after PR review
* improve test coverage after PR review
* Reload the config entry when the ZBT-1 is unplugged
* Register the USB event handler globally to react better to re-plugs
* Fix existing unit tests
* Add an empty `CONFIG_SCHEMA`
* Add a unit test
* Fix unit tests
* Fix unit tests for Linux
* Address most review comments
* Address remaining review comments
* Remove unnecessary imports of http integration
* Check reason for test failures
* Revert "Check reason for test failures"
This reverts commit 5ccf356ab0.
* Update tests
* add cover unit tests
* Add unit test for SwitchBot cover
* fix: use mock_restore_cache to mock the last state
* modify unit tests
* modify scripts as suggest
* improve readability
* adjust patch target per review comments
* adjust patch target per review comments
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add authentication support for Model Context Protocol (mcp) integration
* Update homeassistant/components/mcp/application_credentials.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Handle MCP servers with ports
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Set and check unique id in config
* Update homeassistant/components/nut/config_flow.py
Set unique ID and abort only if value is defined
Co-authored-by: J. Nick Koston <nick+github@koston.org>
* Add duplicate ID test case for multiple devices
* Add unique ID check to config flow step for UPS
* Update homeassistant/components/nut/__init__.py
Fix to only set config_entries unique ID if not None
Co-authored-by: J. Nick Koston <nick+github@koston.org>
* Remove duplicate config flow call
---------
Co-authored-by: J. Nick Koston <nick+github@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
* fix: two minor LLM changes to speed up prefill
- moved the current date/time to the end of the prompt
- started sorting all entities by last_changed
* addressed PR comments
* fixed tests
* reduced scope of try/catch in LLM prompt
* addressed more PR comments
* fixed Anthropic test
* addressed another PR comment
* fixed remainder of tests
* Don't turn on thermostat if temp is equal to target temp.
* Update strings to reflect logic change.
* Fix logic and add zero tolerance tests.
* Include tests for cool mode
* Removed unnecessary async_block_till_done calls
* Fix order of palettes, presets and playlists in WLED integration
* fix tests: update palette items order
---------
Co-authored-by: Franck Nijhof <git@frenck.dev>
* Move roborock unique id to be based on roborock userid instead of email
* Remove unnecessary data update
* Update tests
* Add tests coverage for removal of config entry
* Use config entry migration
* Remove unused fixtues
* Remove unnecessary logging
* Fix ESPHome update entities being loaded before device_info is available
Since we load platforms when restoring config, the update
platform could be loaded before the connection to the
device was finished which meant device_info could still
be empty. Wait until device_info is available to
load the update platform.
fixes#135906
* Apply suggestions from code review
* move comment
* Update entry_data.py
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
---------
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
* Fix old ESPHome entities not being removed when configuration changes
fixes#140756
* make sure all callbacks fire
* make sure all callbacks fire
* make sure all callbacks fire
* make sure all callbacks fire
* revert
* cover
* Dynamically add Home Connect event sensors to HA
* Add and remove listeners on paired and depaired events
* Apply suggestion
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update test
* Adjust English
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Increase websocket_api allowed peak time to 10s
fixes#141624
During integration reload or startup, we can end up sending a message for
each entity being created for integrations that create them from an external
source (ie MQTT) because the messages come in one at a time. This can overload
the loop and/or client for more than 5s. While we have done significant work
to optimize for this path, we are at the limit at what we can expect clients
to be able to process in the time window, so increase the time window.
* adjust test
* Add the Yellow and ZBT-1 to the device registry
* Unload platforms
* Fix unit tests
* Rename the Yellow update entity to `Radio firmware`
* Rename `EmberZNet` to `EmberZNet Zigbee`
* Prefix the `sw_version` with the firmware type and clean up
* Fix unit tests
* Remove unnecessary `always_update=False` from data update coordinator
* Fix misleading friendly names of `rainforest_raven` sensors
The three sensors
- power_demand
- total_energy_delivered
- total_energy_received
currently add "meter" in their friendly names.
This does not provide any useful information and is rather irritating instead – it sounds like these are the power demands or consumption of the meter itself. But they are the measured values.
This commit removes "meter" from the names making them simpler and more precise, too.
In addition the sentence-casing of "MAC addresses" is fixed.
* Update test_sensor.ambr
* Update test_sensor.ambr (2)
* Also remove "meter" from Signal strength
* Update test_sensor.ambr (3)
* Change `meter_price` to `energy_price` in strings.json
* Change `meter_price` to `energy_price` in test_sensor.ambr
* Change `meter_price` to `energy_price` in sensor.py
* Respect the min 2 constraint for the switch MultiPressMax attribute
* Update test_event.py
* Update generic_switch_multi.json
* Fix issue and update tests
* Add media_channel property to cambridge audio
* Return channel instead of artist when playing internet radio to mimick behaviour of CXN100 and StreamMagic app
* Add test for media_artist attribute
* Add test that media_artist is not set in certain cases
* Update homeassistant/components/cambridge_audio/media_player.py
Co-authored-by: Noah Husby <32528627+noahhusby@users.noreply.github.com>
---------
Co-authored-by: Noah Husby <32528627+noahhusby@users.noreply.github.com>
* Add possibility to get area by alias
* Add ability to get floor by alias
* Moved alias lookup to separate function, adjusted templates.
* Changed registry to return all areas/floors with given alias
* Use normalize_name from normalized_name_base_registry
* Move alarm clock entity from time platform to number platform
* Deprecate alarm clock time entity
* Don't update unique id
* Fix tests
* Fixable issues
* improvement
* Make the issues persistent
* Add language scores websocket command
* Don't store language scores in snapshot
* Add language/country args for preferred lang
* Bump intents to 2025.3.24 for dash lang code
* Add service for counting the omer
* Add description and strings. Expect string from user
* Fix constraints on nusach and language + Make independent of config_entry
* Provide config schema
* Fix services.yaml and strings.json to match updated service.py
* Use LanguageSelector and some constants
* Action description -> third-person singular
* Use built-in language selector in yaml
* Fix schema
* Show the hebrew date in the correct language in the response
* Revert "Show the hebrew date in the correct language in the response"
This reverts commit 59442d16c5.
Requires a bugfix in the original library
* Don't return the hebrew date as it doesn't return correctly
* Add sensor as entity platform on MQTT subentries
* Fix typo
* Improve device class data description
* Tweak
* Rework reconfig calculation
* Filter out last_reset_value_template if state class is not total
* Collapse expire after as advanced setting
* Update suggested_display_precision translation strings
* Make options and last_reset_template conditional, use sections for advanced settings
* Ensure options are removed properly
* Improve sensor options label, ensure UOM is set when device class has units
* Use helper to apply suggested values from component config
* Rename to `Add option`
* Fix schema builder not hiding empty sections and removing fields excluded from reconfig
* Do not hide advanced settings if values are available or are defaults
* Improve spelling and Learn more links
* Improve unit of measurement validation
* Fix UOM selector and translation strings
* Address comments from code review
* Remove stale comment
* Rename selector constant, split validator
* Simplify config validator
* Return tuple with config and errors for config validation
* Add circular mean statistics
* fixes
* Add has_circular_mean and fix tests
* Fix mypy
* Rename to MEASUREMENT_ANGLE
* Fix kitchen_sink tests
* Fix sensor tests
* for testing only
* Revert ws command change
* Apply suggestions
* test only
* add custom handling for postgres
* fix recursion limit
* Check if column is already available
* Set default false and not nullable for has_circular_mean
* Proper fix to be backwards compatible
* Fix value is None
* Align with schema
* Remove has_circular_mean from test schemas as it's not required anymore
* fix wrong column type
* Use correct variable to reduce stats
* Add guard that the uom is matching a valid one from the state class
* Add some tests
* Fix tests again
* Use mean_type in StatisticsMetato difference between different mean type algorithms
* Fix leftovers
* Fix kitchen_sink tests
* Fix postgres
* Add circular mean test
* Add mean_type_changed stats issue
* Align the attributes with unit_changed
* Fix mean_type_change stats issue
* Add missing sensor recorder tests
* Add test_statistic_during_period_circular_mean
* Add mean_weight
* Add test_statistic_during_period_hole_circular_mean
* Use seperate migration step to null has_mean
* Typo ARITHMETIC
* Implement requested changes
* Implement requested changes
* Split into #141444
* Add StatisticMeanType.NONE and forbid that mean_type can be None
* Fix mean_type
* Implement requested changes
* Small leftover of latest StatisticMeanType changes
* Add sensors for second radio
* Add test for zigbee2 sensor
* Update homeassistant/components/smlight/sensor.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* drop useless replace
* Fix test failure
* Fix code coverage in config flow
* Update homeassistant/components/smlight/sensor.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* fix conversion of iterator to list
* Remove assert on radios
* simplify handling of radios further
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
* raise BackupAgentUnreachableError when NAS is unavailable
* also raise BackupAgentUnreachableError during upload when nas unavailable
* Revert "also raise BackupAgentUnreachableError during upload when nas unavailable"
This reverts commit 38877d8540.
* Revert "raise BackupAgentUnreachableError when NAS is unavailable"
This reverts commit 4d8cfae396.
* check last_update_success of coordinator_central to get backup agents
* consider last_update_success before notify backup listeners
* add test
* use walrus := :)
* Add climate platform
* Add unit tests for climate platform
* Use setup_integration fixture
* Apply new import order
* Undo import order
* Code review
* Throw an exception on invalid preset mode
* Let device response determine state
* Remove hvac mode OFF
* Remove hvac mode OFF
* Setup debouncer when being added to hass
* Fix typo
* Add Pterodactyl integration
* Remove translation for unavailable platform sensor, use constant for host
* Improve data descriptions
* Replace index based handling of data (list) with dict[str, PterodactylData]
* Replace CONF_HOST with CONF_URL
* Parse URL with YARL
* Set proper availability in binary sensor
* Remove storage of data within api.py
* Fix some review findings
* Use better unique ID for binary_sensor
* Fix more review findings
* Fix remaining review findings
* Add wrapper for server and util API, use underscore in unique ID
* Reuse result in config flow tests
* Patch async_setup_entry in config_flow tests
* Move patching of library APIs to the fixture mock_pterodactyl
* Add EventEntity for Auto Shut Off events in Watergate integration
* Split events into two: volume and duration
* Add icons to json. Extract some common translation keys. Simplify tests
* Apply suggestions from code review
* Fix
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Add cover support to PG LAB Electronics integration
* check shutter none state in is_closing and is_opening
* adding a loop instead of test test single cover individually
* Jellyfin: Properly display album primary art instead of artist backdrop when playing music
* add test for album art urls, fix existing tests that broke because they have extraneous "album*" fields for non-album items.
* fix snapshot test
* Do not return router as source_type
* Add test
* Update stale docstring
---------
Co-authored-by: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>
* Bump PyTado 0.19.0
* Initial setup
* Current state
* Update to PyTado 0.18.8
* First concept for review
* Fix
* Fix
* Fix
* First concept for review
* Bump PyTado to 0.18.9
* Remove redundant part
* Initial test setup
* Authentication exceptions
* Fix
* Fix
* Fix
* Update version to 2
* All migration code
* Small tuning
* Add reauth unique ID check
* Add reauth test
* 100% on config flow
* Making tests working on new device flow
* Fix
* Fix
* Fix
* Update homeassistant/components/tado/strings.json
* Update homeassistant/components/tado/strings.json
---------
Co-authored-by: Joostlek <joostlek@outlook.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
* add sensor platform to backup integration
* adjust namings, remove system integration flag
* add first simple test
* apply review comments
* fix test
* add sensor tests
* adjustements to use backup helper
* remove obsolet async_get_manager from init
* unsubscribe from events on entry unload
* add configuration_url
* fix doc string
* fix sensor tests
* mark async_unsubscribe as callback
* set integration_type service
* extend sensor test
* set integration_type on correct integration :)
* fix after online conflict resolution
* add sensor update tests
* simplify the sensor update tests
* avoid io during tests
* Add comment
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Support for hierarchy of individual energy devices
* update DeviceConsumption dict
* change name parent to 'included_in'
* Break comment
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use correct unit symbol "min" for minutes in `systemmonitor` integration
* Update test_sensor.ambr
* Remove accidentially added, excessive space character
* Add gemini token status to the conversation trace
* Add OpenAI Token Stats
* Revert input_tokens_details since its not in the openai version yet
* Fix ruff lint errors
* Fixes to user-facing strings of `azure_devops` integration
- capitalize abbreviations "ID" and "URL"
- sentence-case "project"
- consistently capitalize "Personal Access Token" as a name
* Update test_sensor.ambr
* Add discovery to Roborock
* Update homeassistant/components/roborock/config_flow.py
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* MR comments
* go back to removing the ":"
* change method of getting devices
---------
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* Add metered PDU dynamic outlet sensors
* Make deep copy and improve efficiency of loops
* Improve performance by creating new dict
Co-authored-by: J. Nick Koston <nick+github@koston.org>
* Remove unused import copy
* Use outlet name (if available) in friendly name and remove as separate sensor
---------
Co-authored-by: J. Nick Koston <nick+github@koston.org>
* Changed where the script events are collected to remove any device communication from async_setup_entry
* Implemented improvements and added a test to test whats happends when script_getcode fails
* Renamed script_events to rpc_script_event to make clear this is only for RPC devices
Co-authored-by: Shay Levy <levyshay1@gmail.com>
---------
Co-authored-by: Shay Levy <levyshay1@gmail.com>
* Initial commit
* Refactor
* Call async_add_entities() once
* Type
* Cleaning
* `supported` is not needed here
* Add error handling
* Add test
* Fix name
* Change class name
* Change method name
* Move BLU_TRV_TIMEOUT
* Fix BLU_TRV_TIMEOUT import
* Coverage
* Use test snapshots
* Support error translations
* Fix tests
* Introduce ShellyBaseButton class
* Rename press_method to _press_method
* Improve exception strings
* Log a warning for modules that log too often
* Improve var naming
* Increase time window; improve log info
* Fix zha type
* Fix typo
* Ignore debug logs
* Use timer to avoid now() calls
* Switch to async_track_time_interval
* Allow using base QueueLister
* Add test for counters reset
* Make var names consistent; reduce message/time ratio
* Use log times instead of timer
* Simplify reset test
* Warn only once per module
* Remove uneeded counter reset
* Add missing Heatpump parameters and units
* Fix merge issue
* Fix snapshot
* Removing bundle_id as extra state attribute till functionality is needed and updating api translation with missing phrase
* Fix translations for listparameters
* Fix translations for listparameters
* Capitalize "PIN to Drive" as feature name in `teslemetry`
Fixes the spelling of "PIN" for consistency and turns "PIN to Drive" into the feature name that Tesla uses (in English).
* Update test_binary_sensor.ambr
* Add password length restriction
* Bump reolink-aio to 0.12.3
* Add repair issue for too long password
* finish password too long repair issue
* add test
* Refactor zwave_js config entry setup
* Fix blocking update test
* Address timeout comment
* Remove platform tasks
* Replace deprecated async_add_job
* Use ConfigEntry.async_on_state_change
* Use modern config entry methods
* Clarify exception message
* Test listen error after config entry setup
* Test listen failure during setup after forward entry
* Test not reloading when hass is stopping
* Test client disconnect is called on entry unload
* Fix and test client not connected during driver setup
* Fix and test driver ready timeout
* Stringify listen task exception when logging
* Use identity compare
* Guard for closed connection
* Consolidate listen task checking and tests
* Fix initial fetch of appliance data to handle API rate limit errors
* Apply comments
* Delete stale function
* Handle api rate limit error at options fetching
* Update appliances after stream non-breaking error
* Always initialize coordinator data
* Improve device update
* Update test description
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* update map on status change
* Update tests/components/roborock/test_image.py
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* update code to handle state logic within async_update_data
* Update homeassistant/components/roborock/coordinator.py
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* move previous_state and allow update on None
---------
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* Move MapData to Coordinator
* seeing if mypy likes this
* delete dead code
* Some MR comments
* remove MapData and always update on startup if we don't have a stored map.
* don't do on demand updates
* remove unneeded logic and pull out map save
* Apply suggestions from code review
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* see if mypy is happy
---------
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* Update MCP server to not register the stateless API, but use it implicitly as an Assist API replacement
* Ensure backwards compatibility with old registration
* Add Crossline smart AI binary sensor
* Add intrusion, lingering, forgotten item, item taken detection
* Use unique_index instead of location for unique_id
* Add test
* Apply suggestions from code review
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
* Name changes
* Update homeassistant/components/reolink/binary_sensor.py
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
* Use smart_type instead of key
* Use occupancy translation instead of gas (point to the same thing).
* Revert "Use occupancy translation instead of gas (point to the same thing)."
This reverts commit 9caf796585.
* fix styling
---------
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
* Update config_entry_oauth2_flow.py
* Specify type on request_data
* Added LocalOAuth2ImplementationWithPkce
* LocalOAuth2ImplementationWithPkce works more like specs
* fix: Adding tests for pkce flow and feedback applied
* fix last test for pkce
* Clean test_abort_if_oauth_with_pkce_rejected
* Improve assertion of code verifier and code challenge
* Break long docstrings
* Shorten docstring
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* style: rename humidifier night const
* fix: separate night light for fan and humidifier
Check for the presence of set_night_light_brightness and
set_night_light to indentify humidifier and fan devices.
set_night_light is defined on VeSyncAirBypass and
set_night_light_brightness is defined on VeSyncHumid200300S.
update test
* Add price cap support
* Change service input to box mode
* Add icon for set_price_cap service
* Improve test coverage
* Change ohme service description wording
* Add remote_calendar with storage
* Use coordinator and remove storage
* cleanup
* cleanup
* remove init from config_flow
* add some tests
* some fixes
* test-before-setup
* fix error handling
* remove unneeded code
* fix updates
* load calendar in the event loop
* allow redirects
* test_update_failed
* tests
* address review
* use error from local_calendar
* adress more comments
* remove unique_id
* add unique entity_id
* add excemption
* abort_entries_match
* unique_id
* add ,
* cleanup
* deduplicate call
* don't raise for status end de-nest
* multiline
* test
* tests
* use raise_for_status again
* use respx
* just use config_entry argument that already is defined
* Also assert on the config entry result title and data
* improve config_flow
* update quality scale
* address review
---------
Co-authored-by: Allen Porter <allen@thebends.org>
* Add sensor values for Power and Energy
* test
* test
* Sensor test
* Fix test
* fix test
* Fixing test coverage
* refactored
* WolfllinkSensorEntityDescriptions and updated tests
* fix test
* Add name_fn and test_sensor adoptions
* fix test coverage
* Revert "fix test coverage"
This reverts commit 2405751f5a.
* resolve requested changes and fix test
* Fix Snapshot
* clean up
* Fixed unknown state in snapshot test
* Aded Generate Content Service for OpenAI to match Google AI
* Fixed code for commit checks
* Addressed code review comments
* Address review comments
* Addressed @balloob review comments.
* Address futher review comments from @balloob
* Seperate entities to a new dock device
* update entity names
* Update homeassistant/components/roborock/coordinator.py
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Initial implementation of hardware update model
* Fixes
* WIP: change the `homeassistant_sky_connect` integration type
* More fixes
* WIP
* Display firmware info in the device page
* Make progress more responsive
* WIP: Yellow
* Abstract the bootloader reset type
* Clean up comments
* Make the Yellow integration non-hardware
* Use the correct radio device for Yellow
* Avoid hardcoding strings
* Use `FIRMWARE_VERSION` within config flows
* Fix up unit tests
* Revert integration type changes
* Rewrite hardware ownership context manager name, for clarity
* Move manifest parsing logic into a new package
Pass the correct type to the firmware API library
* Create and delete entities instead of mutating the entity description
* Move entity replacement into a `async_setup_entry` callback
* Change update entity category from "diagnostic" to "config"
* Have the client library handle firmware fetching
* Switch from dispatcher to `async_on_state_change`
* Remove unnecessary type annotation on base update entity
* Simplify state recomputation
* Remove device registry code, since the devices will not be visible
* Further simplify state computation
* Give the device-less update entity a more descriptive name
* Limit state changes to integer increments when sending firmware update progress
* Re-raise `HomeAssistantError` if there is a problem during flashing
* Remove unnecessary state write during entity creation
* Rename `_maybe_recompute_state` to `_update_attributes`
* Bump the flasher to 0.0.30
* Add some tests
* Ensure the update entity has a sensible name
* Initial ZBT-1 unit tests
* Replace `_update_config_entry_after_install` with a more explicit `_firmware_info_callback` override
* Write the firmware version to the config entry as well
* Test the hardware update platform independently
* Add unit tests to the Yellow and ZBT-1 integrations
* Load firmware info from the config entry when creating the update entity
* Test entity state restoration
* Test the reloading of integrations marked as "owning"
* Test installation failure cases
* Test firmware type change callback failure case
* Address review comments
* Add initial MQTT subentry support for notify entities
* Fix componts assigment is reset on device config. Translation tweaks
* Rephrase
* Go to summary menu when components are set up already - add test
* Fix suggested device info on config flow
* Invert
* Simplify subentry config flow and omit menu
* Use constants instead of literals
* More constants
* Teak some translations
* Only show save when the the entry is dirty
* Do not trigger an entry reload twice
* Remove encoding, entity_category
* Remove icon from mqtt subentry flow
* Separate entity settings and MQTT specific settings
* Remove object_id and refactor
* Migrate translations
* Make subconfig flow test extensible
* Make sub reconfig flow tests extensible
* Rename entity_platform_config step to mqtt_platform_config
* Make component unique ID independent from the name
* Move code for update of component data to helper
* Follow up on code review
* Skip dirty stuff
* Fix rebase issues #1
* Do not allow reconfig for entity platform/name, default QoS and refactor tests
* Add entity platform and entity name label to basic entity config dialog
* Rename to exclude_from_reconfig and make reconfig option not optional
* Use correct unit symbol "min" for minutes in `webmin` integration
Replace the unit symbol "m" which stands for meter with the correct SI uni symbol "min".
* Update test_sensor.ambr
* Update test_sensor.ambr (2)
* Added the hvac action attribute for modbus climate entities.
* Fixed issue in hvac action unit test, was incorrectly referencing the hvac mode attribute.
* Fixed the modbus climate test for hvac action, it now correctly checks that hvac actions in the config match HVACActions.
* Made changes recommended by @crug80 to remove dead code and to add ability to use input or holding register for hvac action.
* Moved action test case in test_climate.py
* Updated comment for `test_service_climate_action_update`
* Fixed ruff formatting error.
* Addressed request to update labels from `state_*` to `action_*`
* Fix bug with all maps being set to the same when empty
* fix parens
* fix other parens
* rework some of the logic
* few small updates
* Remove test that is no longer relevant
* remove updated time bump