* Reapply "Add support for subentries to config entries" (#133470) (#136061)
* Reapply "Add support for subentries to config entries" (#133470)
This reverts commit ecb3bf79f3.
* Update test snapshot
* Add config subentry support to device registry (#128157)
* Add config subentry support to device registry
* Apply suggestions from code review
* Update syrupy serializer
* Update snapshots
* Address review comments
* Allow a device to be connected to no or a single subentry of a config entry
* Update snapshots
* Revert "Allow a device to be connected to no or a single subentry of a config entry"
This reverts commit ec6f613151cb4a806b7961033c004b71b76510c2.
* Update test snapshots
* Bump release version in comments
* Rename config_subentries to config_entries_subentries
* Add config subentry support to entity registry (#128155)
* Add config subentry support to entity registry
* Update syrupy serializer
* Update snapshots
* Update snapshots
* Accept suggested changes
* Clean registries when removing subentry (#136671)
* Clean up registries when removing subentry
* Update tests
* Clean up subentries from deleted devices when removing config entry (#136669)
* Clean up subentries from deleted devices when removing config entry
* Move
* Add config subentry support to entity platform (#128161)
* Add config subentry support to entity platform
* Rename subentry_id to config_subentry_id
* Store subentry type in subentry (#136687)
* Add reconfigure support to config subentries (#133353)
* Add reconfigure support to config subentries
* Update test
* Minor adjustment
* Rename supported_subentry_flows to supported_subentry_types
* Address review comments
* Add subentry support to kitchen sink (#136755)
* Add subentry support to kitchen sink
* Add subentry reconfigure support to kitchen_sink
* Update kitchen_sink tests with subentry type stored in config entry
* Update kitchen_sink
* Update kitchen_sink
* Adjust kitchen sink tests
* Fix hassfest
* Apply suggestions from code review
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Improve docstrings and strings.json
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update snapshots
* Update snapshots
* Update snapshots
* Update snapshots
* Update snapshots
* Update snapshots
* Update snapshots
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add PG LAB Electronics integration
* Add time from last boot sensor diagnostic
* Limit the initial new pglab integration to only one platform
* Update FlowHandler with the new return type ConfigFlowResult
* Fix docstring file with the right integration name to PG LAB.
* There is no need for default value in the callback definition.
* Move all mqtt callbacks to be global and also renamed with a better name.
* Removed unused member variables.
* Renaming functions with a better name.
* Adding miss docstring to __build_device.
* Renamed CreateDiscovery with a better name.
* Removing not so meaning comment.
* Avoid to populate hass.data with pglab discovery information. Use hass.data[DOMAIN] instead.
* Revert "Removed unused member variables."
This reverts commit 4193c491ec.
* Removed unused member variables.
* Refactoring of const. Be sure to have in const.py constant that are used in at least two other modules
* Restoring back the process to unregister the plaform when unload the integration.
* fix spelling mistake
* Revert "Move all mqtt callbacks to be global and also renamed with a better name."
This reverts commit d94d8010d5.
* Main refactoring to avoid to store PG Lab discovery in hass.data
* Change class name BaseEntity in PGLabEntity. And named PyPGLab... what imported from external python module pypglab.
* Avoid to use dict to create DeviceInfo
* Removing unused parameter
* Removing not necessary call to base class
* Update entity name/id to be compatible with the new integration policy.
* Upate test to new entity id
* Add new line after file description
* avoid to store in local variable data for calling function
* Move PGLABConfigEntry in __init__.py
* change function to pure callback
* to avoid hang, dont' trust the split of the discovery topic... introduce a max split count
* rename method with a more meaning name
* use assignment operator
* rename variable with a better name
* removing unecessary test
* Raise exception in case of unexpected error during discovery
* Review comments all other the intergration.
* Rename classes to be consistent in integration
* Using new feature single_config_entry to allow single instance integration
* rename class FlowHandler to PGLabFlowHandler
* using __package__ to initialize integration logger
* missing to catch the exception when for some reason is not possible to create the discovery instance. This can happen when the discovery MQTT message is not in valid json format.
* using ATTR_ENTITY_ID instead of the string
* using SOURCE_MQTT, SOURCE_USER instead of config_entries.SOURCE_MQTT, config_entries.SOURCE_USER
* Using FlowResultType.ABORT instead of the string value
* Code refactoring for tests of configuration from USER and MQTT
* Remove to the user the possibility to add PGLab integration manually, and remove not needed tests.
* Change test_device_update to use snapshot to check test result
* Raise exeception in case of unexpected device and entity_id
* Avoid to log on info channel.
* Renamed _LOGGER in LOGGER
* Propage the call to the base class
* Remove not needed code because from the manifest it's only allows a single instance
* Using specific type for result test instead of string value
* Code refactoring, avoid not necessary function
* update to the new way to import mqtt components
* Avoid runtime check
* add err variable for catching the exception
* add doc string to mqtt_publish
* add doc string to mqtt_subscribe
* Rename DiscoverDeviceInfo.add_entity_id in add_entity
* add doc string
* removing not meaning documentation string
* fix spelling
* fix wrong case in docstring
* fix spelling mistake in PyPGLab callback name
* rename mqtt message received callback
* Avoid to store hard coded discovery_prefix
* Removing unused strings from strings.json
* Give to the user more information during config_flow, and add the possibility to add manually the integration
* Fix to avoid fails of auto test
* update discovery test
* Be sure to always subscribe to MQTT topic when entity is added to HA
* Update codeowner of PGLAB integration and test
* Add control to check if mqtt is available during integration setup
* New test for check no state change for disable entity switch
* Remore not more used file
* update pypglab to version 0.0.3 and improve the symmetry to subscribe/unsubscribe to mqtt entity topic and to register/deregister the status update callback
* Update codeowner of pglab integration
* Adding quality_scale
* removing async_setup
* Fix spelling mistake
* Added test to cover config_flow.async_step_user
---------
Co-authored-by: Pierluigi <p.garaventa@gmail.com>
* Update anthropic to use the new chatlog API
* Remove conversation id logging
* Add back whitespace
* Reduce unnecessary diffs
* Revert diffs to conversation component
* Replace types with union type
* Update ollama to use the ChatLog/ChatSession APIs
* Add documentation about history trimming.
* Revert changes to chat_log.py
* Explicitly check for SystemContent when converting system messages
* Remove half of a comment
* Refresh the nest authentication token on integration start before invoking the pub/sub subscriber
* Apply suggestions from code review
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Make Home Connect config entry unique
* Use unique ID for Home connect config entry
* Remove unnecessary code
* Revert "Use unique ID for Home connect config entry"
This reverts commit 4241317469.
* Added tests
* Support loading different config store fixtures
* Add config store test for binary sensor
* Update README.md
* remove unused fixture
* AddAdd config store test for switch
* Replace `FirmwareGuess` with `FirmwareInfo` with owner tracking
* Fix up config flow
* Account for OTBR addon existing independent of integration
* Fix remaining unit tests
* Add some tests for ownership
* Unit test `get_zha_firmware_info`
* ZHA `homeassistant_hardware` platform
* OTBR `homeassistant_hardware` platform
* Rework imports
* Fix unit tests
* Add OTBR unit tests
* Add hassfest exemption for `homeassistant_hardware` and `otbr`
* Invert registration to decouple the hardware integration
* Revert "Add hassfest exemption for `homeassistant_hardware` and `otbr`"
This reverts commit c8c6e7044f.
* Fix circular imports
* Fix unit tests
* Address review comments
* Simplify API a little
* Fix `| None` mypy issues
* Remove the `unregister_firmware_info_provider` API
* 100% coverage
* Add `HardwareInfoDispatcher.register_firmware_info_callback`
* Unit test `register_firmware_info_callback` (zha)
* Unit test `register_firmware_info_callback` (otbr)
* Update existing hardware helper tests to use the new function
* Add `async_` prefix to helper function names
* Move OTBR implementation to a separate PR
* Update ZHA diagnostics snapshot
* Switch from `dict.setdefault` to `defaultdict`
* Add some error handling to `iter_firmware_info` and increase test coverage
* Oops
* Add get_radio helper function
This is defined here primarily for use in simplifying otherwise repetitive
logic in the lambdas for entity descriptions.
* Get firmware manifests for second radio
* Create optional update entity for radio 2
* Add info fixture for SLZB-MR1
* Test for firmware updates of second radio
* Remove use of entity description creating entities
* Add idx to lambda functions
* Add latest_version lambda to ED
* Use Single zb_update description
* test radio2 update
* device type heading for release notes
* fix failing no internet test
* update release note tests
* assert radios
* fix return type installed_version
* refactor latest_version code
* update listener
* Dont create update entities for legacy firmware that can't upgrade
* Address review comments for update listener
* Bump paho-mqtt client to version 2.1.0
* Remove commented code
* Bump pyeconet==0.1.26
* Ensure types-paho-mqtt==1.6.0.20240321 is uninstalled if test requirements are updated
* Update roombapy dependency
* Remove pyeconet from exceptions list
* Revert changes to install test requirements task
Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com>
Co-authored-by: kurens <migrzyb@users.noreply.github.com>
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
Co-authored-by: Christopher Fenner <Christopher.Fenner@me.com>
* Add exception translations to ring integration
* Do not include exception details in exception translations
* Don't check last_update_success for auth errors and update tests
* Do not log errors twice
* Update post review
* When an event is received from a script component on a shelly device, this event is send to the hass event bus
* Event emitted from a script will be send to the corresponding event entity
* Added tests for the shelly script event
* The event entity for script are now hidden by default
* Forgot to enable script event entities by default for the test
* Made serveral improvement for the shelly script event entity
- Added device name to event entity
- The event entity is now only created when a script has any event types
- The test for this entity now uses snapshots
* Shelly script event entities will not be create for the BLE scanning script and will now be automatically removed when the script no longer exsists
* Changed variable name to avoid confusion with _id
* Removed old const from first implementation and removed _script_event_listeners and used _event_listeners instead to listen for script events
* Clear extra system prompt on start_conversation error
* Update homeassistant/components/assist_satellite/entity.py
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Add support for OpenAI reasoning models
* Apply suggestions from code review
* Remove o1-mini* and o1-preview* model support
* List unsupported models
* Reenable audio models (they also support text)
* Add and delete devices on CONNECT/PAIRED and DEPAIRED events
* Simplify device depairing
* small fixes
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add always the devices
* kind of revert changes
to simplify the entity fetch and removing on connected/paired and depaired
* cache `ha_id`
* Fix typo
* Remove unnecessary device info at HomeConnectEntity
* Move common code of each platform to `common.py`
* Added docstring to clarify usage
* Apply suggestions
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fetch current active and selected programs
* Intialize HomeConnectEntity first at SelectProgramEntity
* Use the right exception
* Use active/selected program from `get_all_programs`
This will allow us to reduce the number of requests that we need to perform to get all the data ready (only one requests vs. three requests)
* Remove no longer required mocks
* Fix
* Create a stateless assist API for MCP server
* Update stateless API
* Fix areas in exposed entity fields
* Add tests that verify areas are returned
* Revert the getstate intent
* Revert whitespace change
* Revert whitespace change
* Revert method name changes to avoid breaking openai and google tests
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for airthings
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for yalexs_ble
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for thermopro
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for inkbird
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for mopeka
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for oralb
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for qingping
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.
Allow ignored devices to be selected in the user step and replace the ignored entry.
Same as #137056 and #137052 but for sensorpush
* Base the entity availability on the connected state of the appliance
* cache `ha_id`
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Inlcude coordinator `available` property at entity
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Filter programs by execution type at select program entities
* Suggestions and improvements
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Use function and translation key at select program entity description
* Fix select entity description docstring
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Allow ignored govee-ble devices to be setup up from the user flow
Every few days we get an issue report about a device
a user ignored and forgot about, and than can no longer
get set up. Allow ignored devices to be selected in
the user step and replace the ignored entry.
* Add the ability to skip ignored config entries when calling _abort_if_unique_id_configured
see https://github.com/home-assistant/core/pull/137052
* coverage
* revert
* Allow startup when privacy mode is enabled
* Add tests
* remove duplicate privacy_mode
* fix tests
* Apply suggestions from code review
Co-authored-by: Robert Resch <robert@resch.dev>
* Store in subfolder and cleanup when removed
* Add tests and fixes
* fix styling
* rename CONF_PRIVACY to CONF_SUPPORTS_PRIVACY_MODE
* use helper store
---------
Co-authored-by: Robert Resch <robert@resch.dev>
* Persist roborock maps to disk only on shutdown
* Rename on_unload to on_stop
* Spawn 1 executor thread and block writes to disk
* Update tests/components/roborock/test_image.py
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Use config entry setup instead of component setup
---------
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
* Show name of the backup agents in issue
* Show name of the backup agents in issue
* Update homeassistant/components/backup/manager.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Fix handling of renamed backup files in the core writer
* Adjust mocking
* Raise BackupAgentError instead of KeyError in get_backup_path
* Add specific error indicating backup not found
* Fix tests
* Ensure backups are loaded
* Fix tests
* Add start_conversation service to Assist Satellite
* Fix tests
* Implement start_conversation in voip
* Update homeassistant/components/assist_satellite/entity.py
---------
Co-authored-by: Michael Hansen <mike@rhasspy.org>
* Migrate from homeconnect dependency to aiohomeconnect
* Reload the integration if there is an API error on event stream
* fix typos at coordinator tests
* Setup config entry at coordinator tests
* fix ruff
* Bump aiohomeconnect to version 0.11.4
* Fix set program options
* Use context based updates at coordinator
* Improved how `context_callbacks` cache is invalidated
* fix
* fixes and improvements at coordinator
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove stale Entity inheritance
* Small improvement for light subscriptions
* Remove non-needed function
It had its purpose before some refactoring before the firs commit, no is no needed as is only used at HomeConnectEntity constructor
* Static methods and variables at conftest
* Refresh the data after an event stream interruption
* Cleaned debug logs
* Fetch programs at coordinator
* Improvements
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Simplify obtaining power settings from coordinator data
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Remove unnecessary statement
* use `is UNDEFINED` instead of `isinstance`
* Request power setting only when it is strictly necessary
* Bump aiohomeconnect to 0.12.1
* use raw keys for diagnostics
* Use keyword arguments where needed
* Remove unnecessary statements
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Allen Porter <allen@thebends.org>
Co-authored-by: Robert Resch <robert@resch.dev>
* Add support for per-backup agent encryption flag
* Adjust
* Don't attempt decrypting an unprotected backup
* Address review comments
* Add some tests
* Add fixture
* Rename fixture
* Correct condition for when we should encrypt or decrypt
* Update tests in integrations
* Improve test coverage
* Fix onedrive tests
* Add test
* Improve cipher worker shutdown
* Improve test coverage
* Fix google_drive tests
* Move inner class _CipherBackupStreamer._WorkerStatus to module scope
* Add backup endpoints to the onboarding integration
* Add backup as after dependency of onboarding
* Add test snapshots
* Fix stale docstrings
* Add utility function for getting the backup manager instance
* Return backup_id when uploading backup
* Change /api/onboarding/backup/restore to accept a JSON body
* Fix with_backup_manager
* Add Google Drive integration for backup
* Add test_config_flow
* Stop using aiogoogle
* address a few comments
* Check folder exists in setup
* fix test
* address comments
* fix
* fix
* Use ChunkAsyncStreamIterator in helpers
* repair-issues: todo
* Remove check if folder exists in the reatuh flow. This is done in setup.
* single_config_entry": true
* Add test_init.py
* Store into backups.json to avoid 124 bytes per property limit
* Address comments
* autouse=True on setup_credentials
* Store metadata in description and remove backups.json
* improvements
* timeout downloads
* library
* fixes
* strings
* review
* ruff
* fix test
* Set unique_id
* Use slugify in homeassistant.util
* Fix
* Remove RefreshError
* review
* push more fields to the test constant
---------
Co-authored-by: Joostlek <joostlek@outlook.com>