* add diagnostic sensors
* test binary_sensor.py file
* add tests for binary sensor
* fix zone type checks and error on unknown
* improve entity tests
* hide entities by default
* Revert "hide entities by default"
This reverts commit 9808d732471385e45ccc5f7c3aea93bfecbdfa6f.
* Update homeassistant/components/totalconnect/binary_sensor.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* update binary_sensor per comments
* update test
* move to _attr_extra_state_attributes
* no spaces in unique_id
* update per balloob suggestions
* fix typing
* fix black and mypy
* Apply suggestions from code review
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* add more to binary_sensor tests
* remove unused import
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Re-run expose entities migration if first time failed
* Count number of exposed entities
* Add tests
---------
Co-authored-by: Erik <erik@montnemery.com>
* Handle AttributeError from wrong port in ONVIF config flow
fixes
```
2023-04-29 19:17:22.289 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
File "/Users/bdraco/home-assistant/venv/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
resp = await request_handler(request)
File "/Users/bdraco/home-assistant/venv/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/Users/bdraco/home-assistant/venv/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
return await handler(request)
File "/Users/bdraco/home-assistant/homeassistant/components/http/security_filter.py", line 85, in security_filter_middleware
return await handler(request)
File "/Users/bdraco/home-assistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
return await handler(request)
File "/Users/bdraco/home-assistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
return await handler(request)
File "/Users/bdraco/home-assistant/homeassistant/components/http/ban.py", line 80, in ban_middleware
return await handler(request)
File "/Users/bdraco/home-assistant/homeassistant/components/http/auth.py", line 235, in auth_middleware
return await handler(request)
File "/Users/bdraco/home-assistant/homeassistant/components/http/view.py", line 146, in handle
result = await result
File "/Users/bdraco/home-assistant/homeassistant/components/config/config_entries.py", line 180, in post
return await super().post(request, flow_id)
File "/Users/bdraco/home-assistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
result = await method(view, request, data, *args, **kwargs)
File "/Users/bdraco/home-assistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
result = await self._flow_mgr.async_configure(flow_id, data)
File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 271, in async_configure
result = await self._async_handle_step(
File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 367, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
File "/Users/bdraco/home-assistant/homeassistant/components/onvif/config_flow.py", line 233, in async_step_configure
errors, description_placeholders = await self.async_setup_profiles()
File "/Users/bdraco/home-assistant/homeassistant/components/onvif/config_flow.py", line 277, in async_setup_profiles
await device.update_xaddrs()
File "/Users/bdraco/home-assistant/venv/lib/python3.10/site-packages/onvif/client.py", line 433, in update_xaddrs
capabilities = await devicemgmt.GetCapabilities({"Category": "All"})
File "/Users/bdraco/home-assistant/venv/lib/python3.10/site-packages/zeep/proxy.py", line 64, in __call__
return await self._proxy._binding.send_async(
File "/Users/bdraco/home-assistant/venv/lib/python3.10/site-packages/zeep/wsdl/bindings/soap.py", line 164, in send_async
return self.process_reply(client, operation_obj, response)
File "/Users/bdraco/home-assistant/venv/lib/python3.10/site-packages/zeep/wsdl/bindings/soap.py", line 204, in process_reply
doc = parse_xml(content, self.transport, settings=client.settings)
File "/Users/bdraco/home-assistant/venv/lib/python3.10/site-packages/zeep/loader.py", line 51, in parse_xml
docinfo = elementtree.getroottree().docinfo
AttributeError: NoneType object has no attribute getroottree
```
* port
* Revert "port"
This reverts commit 4693f3f33a.
* misfire
* Auto repair incorrect collation on MySQL schema
As we do more union queries in 2023.5.x if there is a mismatch
between collations on tables, they will fail with an error
that is hard for the user to figure out how to fix
`Error executing query: (MySQLdb.OperationalError) (1271, "Illegal mix of collations for operation UNION")`
This was reported in the #beta channel and by PM from others
so the problem is not isolated to a single user
https://discord.com/channels/330944238910963714/427516175237382144/1100908739910963272
* test with ascii since older maraidb versions may not work otherwise
* Revert "test with ascii since older maraidb versions may not work otherwise"
This reverts commit 787fda1aefcd8418a28a8a8f430e7e7232218ef8.t
* older version need to check collation_server because the collation is not reflected if its the default
* Ensure devices with bad cluster subclasses do not prevent startup
* Explicitly unit test an affected SML001 device
* Do not use invalid `hue_occupancy` attribute name
* Actually remove `hue_occupancy`
* Bump ZHA dependencies
* Expose channel changing over the websocket API
* Expose channel changing as a service
* Type annotate some existing unit test fixtures
* Add unit tests
* Rename `api.change_channel` to `api.async_change_channel`
* Expand on channel migration in the service description
* Remove channel changing service, we only really need the websocket API
* Update homeassistant/components/zha/websocket_api.py
* Black
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Add LED control support to Home Assistant Yellow
* Fix the handlers
* Remove switch platform
* Allow configuring LED settings from the options flow
* Add missing translations
* Add tests
* Add tests
* Small cleanups to bluetooth internals
Improve the performance of _async_on_advertisement
Fixes
```
tests/components/bluetooth/test_models.py::test_ble_device_with_proxy_client_out_of_connections_uses_best_available
tests/components/bluetooth/test_models.py::test_ble_device_with_proxy_client_out_of_connections_uses_best_available_macos
/Users/bdraco/home-assistant/homeassistant/components/bluetooth/wrappers.py:226: FutureWarning: This method will be removed future version, pass the callback to the BleakClient constructor instead.
self._backend.set_disconnected_callback(
tests/components/bluetooth/test_models.py::test_ble_device_with_proxy_client_out_of_connections_uses_best_available_macos
/Users/bdraco/home-assistant/tests/components/bluetooth/test_models.py:506: FutureWarning: BLEDevice.metadata is deprecated and will be removed in a future version of Bleak, use AdvertisementData instead
switchbot_proxy_device_no_connection_slot.metadata["delegate"] = 0
tests/components/bluetooth/test_models.py::test_ble_device_with_proxy_client_out_of_connections_uses_best_available_macos
/Users/bdraco/home-assistant/tests/components/bluetooth/test_models.py:521: FutureWarning: BLEDevice.metadata is deprecated and will be removed in a future version of Bleak, use AdvertisementData instead
switchbot_proxy_device_has_connection_slot.metadata["delegate"] = 0
tests/components/bluetooth/test_models.py::test_ble_device_with_proxy_client_out_of_connections_uses_best_available_macos
/Users/bdraco/home-assistant/tests/components/bluetooth/test_models.py:535: FutureWarning: BLEDevice.metadata is deprecated and will be removed in a future version of Bleak, use AdvertisementData instead
switchbot_device.metadata["delegate"] = 0
```
* put back kwargs
* Automaticially create an assist pipeline using cloud stt + tts
* Return the id of the cloud enabled pipeline
* Wait for platforms to load
* Fix typing
* Fix startup race
* Update tests
* Create a cloud pipeline only when logging in
* Fix tests
* Tweak _async_resolve_default_pipeline_settings
* Improve assist_pipeline test coverage
* Improve cloud test coverage
* Always use `Light` for lights, including subclasses
* Clean up other platforms
* Add a unit test to ensure all future entity classes have names
* Remove stale `_name`
* Address review feedback and rename `Open` to `Opening`
* Address suggestions in PR #64090
* Remove redundant force-refresh at discovery time
* Improve re-auth UX
* Resolve linting warning
* Cover reauth case when no entry is in place
* Add missing reauth_successful message
* Use ad-hoc schema for reauth flow
* Align test cases with latest modifications
* Improve re-authentication flow, align tests
* Remove None check (as it can never happen)
* Remove panel_id from reauth dialog
* Remove panel_id from reauth dialog
* Simplify try-catch block
* Address suggestions in PR #64090
* Remove redundant force-refresh at discovery time
* Improve re-auth UX
* Resolve linting warning
* Cover reauth case when no entry is in place
* Add missing reauth_successful message
* Use ad-hoc schema for reauth flow
* Align test cases with latest modifications
* Improve re-authentication flow, align tests
* Remove None check (as it can never happen)
* Remove panel_id from reauth dialog
* Remove panel_id from reauth dialog
* Simplify try-catch block
* Improve type handling
* Remove translations
* Add unique-id attribute within context object
* Optimize local variable usage
* Ensure logbook still responds if describe event throws
If describe fails, the logbook stream should not collapse
* Ensure logbook still responds if describe event throws
If describe fails, the logbook stream should not collapse
* Add cipher list option to IMAP config flow
* Use client_context to get the ssl_context
* Formatting
* Add ssl error no make error handling more specific
* Make ssl_ciper_list an advanced option
* Assist pipeline to use configured values
* Include voice in TTS-START event
* Use correct tts language var
* More vars
* Apply suggestions from code review
* Update
---------
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
* fix check for airquality sensor (was always TRUE)
* import additional const required
* add support for formaldehyd sensor
* add support for co2 sensor
* add support for pm25 sensor
* sort const a-z
* adapt to typo fixed function
* adapt to new key names (formaldehyde)
* adapt co2 sensor to new key names
* Update homeassistant/components/deconz/sensor.py
remove unnecessary code
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* add device_class for air_quality_ppb
* add test_air_quality_sensor_6_in_1
* fix Air quality PPB test to match device_class
* remove device_class of air_quality_ppb
* remove device_class test of airqualityppb
* explicit units
* remove device_class test of airquality_1_ppb
* dependency bump pydeconz to 111
* Update homeassistant/components/deconz/sensor.py
remove unnecessary device_class
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* import formatting
* formatting
* Update homeassistant/components/deconz/sensor.py
change key for pm2_5
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* add airquality co2 ch2o pm25 sensor testdata
* remove test_air_quality_sensor_6_in_1
* formatting
* bump pydeconz for requirements
---------
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
* init setup of Anova Sous Vide
* bump anova-wifi to 0.2.4
* Removed yaml support
* Bump to anova-wifi 0.2.5
* Added support for adding sous vide while offline
* Added basic test for sensor
* added better tests for sensors and init
* expanded code coverage
* Decreased timedelta to lowest functioning value.
* Updating my username
* migrate to async_forward_entry_setups
* applying pr recommended changes
* bump anova-wifi to 0.2.7
* Improvements to hopefully get this review ready
* formatting changes
* clean ups for pr review
* remove unneeded unique id check.
* bump ao anova_wifi 0.3.0
* rename device_id to device_unique_id
* renamed to 'anova'
* added unique_id to MockConfigEntry
* removed leftover anova sous vides
* added device id to strings
* added error for incorrect device id
* add has_entity_name
* added attr name for tests
* added authentication functionality
* bump to 0.4.3
* split entity into its own class/object
* pulling firmware version out of async_setup
Co-authored-by: J. Nick Koston <nick@koston.org>
* addressed pr changes
* fixed pytest
* added anova data model
* removed unneeded time change
* add logging in package
* rework step_user
* Update homeassistant/components/anova/sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Removed lower from attr unique id
Co-authored-by: J. Nick Koston <nick@koston.org>
* Removed unneeded member variables in sensor
Co-authored-by: J. Nick Koston <nick@koston.org>
* removed repeated subclass attr
Co-authored-by: J. Nick Koston <nick@koston.org>
* simplify update_failed test
* created descriptionentity
* bump to 0.6.1 limit ws connect
* add translation for sensor entities
* version bump - support pro model
* add anova to strict typing
* fixed sensor not getting datas type
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
* Check for new devices in init
* style changes
* return false instead of config entry not ready
* move serialize_device_list to utils
* move repeating device check into api
* moved unneeded code out of try except
* fixed tests to get 100% cov
* Update homeassistant/components/anova/strings.json
Co-authored-by: J. Nick Koston <nick@koston.org>
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Skip adding WeMo device on failure
* Only create a single log entry for each failed device
* Fix typo s/serial_number/serialnumber/
* Discard failed devices on success
* Add more PrusaLink sensors
* Disable prusalink target temperatures by default, add prusa to brands
* Disable prusalink z-height by default
* Remove uneccessary Prusa from brands
* Move target temperatures to the telemetry section of the sensor
* Fix entity naming for prusalink
* Add tests for new prusalink sensors
* Test fixes, fix rebase errors
* Clean up deprecated unit usage
* Add translations for entity names
* Fix tests for translations
---------
Co-authored-by: Franck Nijhof <git@frenck.dev>
* Speed up logbook and history queries where ORM rows are not needed
This avoids having sqlalchemy wrap Result in ChunkedIteratorResult
which has additional overhead we do not need for these cases
* more places
* anything that uses _sorted_statistics_to_dict does not need orm rows either
* Do not wait
* Correct tests
* Manage after dependencies stage 1
* test bootstrap dependencies
* Assert log the dependenciy is waited for
* Improve docstrings
* Assert outside callback
* Patch async_get_integrations
* Revert changes made to snips integration
* Undo changes to mqtt_statestream
* Play tone when starting a VoIP call
* Play audio message when call is rejected
* Add option to disable tone for tests
* Send RTP audio in executor to reduce jitter
* Don't start pipeline until speech
* Bump voip utils
* init roborock commit
* init commit of roborock
* removed some non-vacuum related code
* removed some non-needed constants
* removed translations
* removed options flow
* removed manual control
* remove password login
* removed go-to
* removed unneeded function and improved device_stat
* removed utils as it is unused
* typing changes in vacuum.py
* fixed test patch paths
* removed unneeded records
* removing unneeded code in tests
* remove password from strings
* removed maps in code
* changed const, reworked functions
* remove menu
* fixed tests
* 100% code coverage config_flow
* small changes
* removed unneeded patch
* bump to 0.1.7
* removed services
* removed extra functions and mop
* add () to configEntryNotReady
* moved coordinator into seperate file
* update roborock testing
* removed stale options code
* normalize username for unique id
* removed unneeded variables
* fixed linter problems
* removed stale comment
* additional pr changes
* simplify config_flow
* fix config flow test
* Apply suggestions from code review
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* First pass at resolving PR comments
* reworked config flow
* moving vacuum attr
* attempt to clean up conflig flow more
* update package and use offline functionality
* Fixed errors and fan bug
* rework model and some other small changes
* bump version
* used default factory
* moved some client creation into coord
* fixed patch
* Update homeassistant/components/roborock/coordinator.py
Co-authored-by: Allen Porter <allen.porter@gmail.com>
* moved async functions into gather
* reworked gathers
* removed random line
* error catch if networking doesn't exist or timeout
* bump to 0.6.5
* fixed mocked data reference url
* change checking if we have no network information
Co-authored-by: Allen Porter <allen.porter@gmail.com>
---------
Co-authored-by: Allen Porter <allen.porter@gmail.com>
Co-authored-by: Allen Porter <allen@thebends.org>
* Make sure MQTT is available starting mqtt_json
* Wait for mqtt client
* Sync client connect
* Simplify
* Addiitional tests async_wait_for_mqtt_client
* Improve comment waiting for mqtt
* Improve docstr
* Do not wait unless the MQTT client is in setup
* Handle entry errors during setup
* More comments - do not clear event
* Add snips and mqtt_room
* Add manual_mqtt
* Update homeassistant/components/mqtt/__init__.py
Co-authored-by: J. Nick Koston <nick@koston.org>
* Use a fixture, improve tests
* Simplify
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Fallback to generating a new ULID on migraiton if context is missing or invalid
It was discovered that postgresql will do a full scan if
there is a low cardinality on the index because of missing
context ids. We will now generate a ULID for the timestamp
of the row if the context data is missing or invalid
fixes#91514
* tests
* tweak
* tweak
* preen
* Remove legacy context lookup implemention from logbook
This object can now be replaced with a simple dict
* Remove legacy context lookup implemention from logbook
This object can now be replaced with a simple dict
* scope
* fix order issue
* rename channel -> cluster handler
* remove refs to channels and create endpoint class
* remove remaining references to channels
* fix filter
* take in latest changes from #91403
* missed one
* missed a reference
* ESPHome binary sensor representing assist pipeline running
* Apply suggestions from code review
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Rename to call active
Simplify with attrs a little
* Load binary sensor if voice assistant on device
* Add some tests
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Move legacy tts
* Add error log on unknown platform
* Add legacy tests and delint all tests
* Consolidate log format
* Add more legacy tests
* Test default legacy provider attributes
* Remove test generated files
* Clean up after merge conflict
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
Co-authored-by: mib1185 <mail@mib85.de>
Co-authored-by: J. Nick Koston <nick@koston.org>
* Add dhcp ip update support to onvif
If we know the mac address of the camera we can
update the config entry when the ip changes
* fix lookup
* coverage
* remove unreachable
* remove unreachable
* remove unreachable
* Support marking an assist pipeline as preferred
* Adjust
* Revert unneeded change
* Send preferred pipeline id in pipeline list
* Don't use property functions for the preferred pipeline
* Ensure recorder run shutdown if the run loop raises
If anything goes wrong with the recorder we should
still try to shutdown cleanly
* tweak
* tests
* tests
* handle migraiton failure
* tweak comment
* naming
* order
* order
* order
* reword
* adjust test
* fixes
* threading
* failure case
* fix test
* have to wait for stop because the task blocks on thread join
* Add stt entity
* Update demo platform
* Rename ProviderEntity to SpeechToTextEntity
* Fix get method
* Run all init tests for config entry setup
* Fix and test metadata from header
* Test config entry unload
* Rename get provider entity
* Test post for non existing provider
* Test entity name before addition
* Test restore state
* Use register shutdown
* Update deprecation comment
* Add language util
* Add no match tests
* Update tests/util/test_language.py
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Use local timezone for recorder connection
The fix in #90335 had an unexpected side effect of
using UTC for the timezone since all recorder operations
use UTC. Since only sqlite much use the database executor
we can use a seperate connection pool which uses local time
This also ensures that the engines are disposed of
when Home Assistant is shutdown as previously we
did not cleanly disconnect
* coverage
* fix unclean shutdown in config flow
* tweaks
* lower case aiosomecomfort
* add tests
* Test updates for 0.0.6
* lower case aiosomecomfort
* Missing changes after merge
* Add missing type hints
* Fix tests for PR#89393
* Test hold on when setting temperature
* Remove unnecessary init function
* Remove unnecessary assert
* Address missing tests
Cleanup related to comments for EM
* Move to snapshot for static test
* Updated snapshot
* Remove unnecessary assert
* Test coverage for init and common
* Update snapshot
* break setup state snapshot test across platforms
* Fix state snapshot test methods
* Remove the test_init snapshot
* Remove test_common and test_init changes
* refactor the request_mock fixture
* delete more code
* tweak
* tweak
* wrappers
* restore lost performance
* restore lost performance
* restore lost performance
* compact
* reduce
* fix refactor
* DRY
* tweak
* delete the start time state injector
* move away the legacy code
* tweak
* adjust
* adjust
* tweak
* ignore impossible
* fix a bug where the first start was changed to the start time when there was no previous history recorded before
* avoid the empty scan most cases
* postgresql
* fixes
* workaround for mariadb < 10.4
* remove unused
* remove unused
* adjust
* bail early
* tweak
* tweak
* fix more tests
* fix recorderrun being init in the future in the test
* run history tests on schema 30 as well
* Revert "run history tests on schema 30 as well"
This reverts commit d798b100ac.
* reduce
* cleanup
* tweak
* reduce
* prune
* adjust
* adjust
* adjust
* reverse later is faster because the index is in forward order and the data size we are reversing is much smaller even if we are in python code
* Revert "reverse later is faster because the index is in forward order and the data size we are reversing is much smaller even if we are in python code"
This reverts commit bf974e103e.
* fix test
* Revert "Revert "reverse later is faster because the index is in forward order and the data size we are reversing is much smaller even if we are in python code""
This reverts commit 119354499e.
* more coverage
* adjust
* fix for table order
* impossible for it to be missing
* remove some more legacy from the all states
* Media playback working
* Working on OPUS audio
* Before rollback
* Fix is_end
* First working pipeline
* Clean up
* Remove asserts
* Send HA version in SDP
* Use async_pipeline_from_audio_stream
* Use config flow with allowed IP
* Satisfy ruff
* Remove use of regex for SIP IP
* Use voip-utils
* Fix imports
* Add Pipeline to __all__
* Fix voice assistant tests
* Basic VoIP test
* Run hassfest
* Generate requirements
* Bump voip utils (missing requirement)
* Allow tts_options to be passed in to pipeline run
* Add config flow tests
* Update test snapshots
* More tests
* Remove get_extra_info
* Appeasing the codebot
* Update config_flow.py
Used constant string for consistency
* Update config_flow.py
Removed code for location ID and name the integration using the username
* Update manifest.json
Updated codeowners
* Update config_flow.py
* Update config_flow.py
Formatted with black
* Update manifest.json
Updated codeowners
* Update test_config_flow.py
Updated test
* Reduce overhead of legacy database columns on new installs
* Reduce overhead of legacy database columns on new installs
* Reduce overhead of legacy database columns on new installs
* Reduce overhead of legacy database columns on new installs
* not working as expected
* override the type compiler
* override the type compiler
* override the type compiler
* override the type compiler
* Apply suggestions from code review
* pgsql char1
* make entity filter test setup with old schema
* fix some more tests that were mutating state
* fix some more tests that were mutating state
* fix some more tests that were mutating state
* fix more dbstate mutations
* add shim for older tests
* split migration tests
* add coverage for purging legacy data
* tweak
* more fixes
* drop some legacy
* fix another test
* fix a few more
* add casts for postgresql in case someone deletes the schema changes table
* dry
* dry
* dry
* Reduce bond fallback polling interval when BPUP is alive
If push updates are alive we should not check every
10 seconds.
* tweak
* tweak
* coverage
* coverage
* coverage
* Switch back to using call_later for the slow entity update warning
I had originally changed this to create a task and wait
in #41184 but that does not make sense anymore with newer
cpython as the profile now shows the original method is cheaper
(or I did it wrong the first time)
* fix missing block till done since there is no longer a task being created which would run the event loop once
* Raise an issue for SQL queries that will cause full table scans
* Raise an issue for SQL queries that will cause full table scans
* Raise an issue for SQL queries that will cause full table scans
* Raise an issue for SQL queries that will cause full table scans
* Update homeassistant/components/sql/sensor.py
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* coverage
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Restart entity id post migration after a restart
If the entity migration finished and Home Assistant was
restarted during the post migration it would never be resumed
which means the old index and space would never be recovered
* add migration resume test
* Allow value_template to be used if json_attributes set
* Set state to None if no value_template and json_attributes used
* Refactor check for no value_template when json_attributes used
* Updated and additional unit test
* Updated to set _attr_native_value and return if value_template is None
* Update unit test docstring
* Updated test docstring based on feedback
* Refactor handling of exposed entities for cloud Alexa
* Tweak WS API
* Validate assistant parameter
* Address some review comments
* Refactor handling of exposed entities for cloud Google
* Raise when attempting to expose an unknown entity
* Add tests
* Adjust cloud tests
* Allow getting expose new entities flag
* Test Alexa migration
* Test Google migration
* Add WS command cloud/google_assistant/entities/get
* Fix return value
* Update typing
* Address review comments
* Rename async_get_exposed_entities to async_get_assistant_settings
* Add a pipeline store to voice_assistant
* Improve error handling
* Improve test coverage
* Improve test coverage
* Use StorageCollectionWebsocket
* Correct rebase
* Android TV Remote integration
* Add diagnostics
* Remove test pem files from when api was not mocked
* Address review comments
* Remove hass.data call in test
* Store the certificate and key in /config/.storage
* update comments
* Update homeassistant/components/androidtv_remote/__init__.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* import callback
* use async_generate_cert_if_missing
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* fix bluetooth_le_tracker reporting devices Home when they leave
* refactor
* implement tests for BLE service_info.time check
* update bluetooth_le_tracker tests
* tweaks
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
* Cleanup config merging and adding defaults
* Optimize and update tests
* Do not mix entry and yaml config
* Make sure hass.data is initilized
* remove check on get_mqtt_data
* Tweaks to MQTT client
* Remove None assigment mqtt client and fix mock
* Restore state for ZHA OnOff binary sensors
* Let `Motion` extend `Opening`
`Motion` is just a specified version of `Opening` that only changes the device class for some motion sensors.
Since we have more "special code" in the OnOff/Opening sensor now, we also want to make sure that gets applied to `Motion` binary sensors.
* Improve comment and type
* Add test to verify that binary sensors restore last HA state
* Add DHCP discovery to Obihai
* Unique ID is MAC
* Move try blocks, cleanup
* Migrate existing unique_ids
* Use PyObihai to update Unique ID
* Auth then use get_device_mac
* Config flow changes
* Reworking flow according to feedback
* Cleanup
* Raise repair issue if OTBR and ZHA are on different channels
* Update issues after creating or setting dataset
* Explain impact
* Add link to documentation, adjust language
* Update homeassistant/components/otbr/strings.json
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Add entity name translations to Switchbot
Signed-off-by: Patrick ZAJDA <patrick@zajda.fr>
* Apply suggestions from code review
Signed-off-by: Patrick ZAJDA <patrick@zajda.fr>
* Fix tests
Signed-off-by: Patrick ZAJDA <patrick@zajda.fr>
* Update homeassistant/components/switchbot/strings.json
Co-authored-by: Patrick ZAJDA <patrick@zajda.fr>
---------
Signed-off-by: Patrick ZAJDA <patrick@zajda.fr>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Fix memory churn in state templates
The LRU for state templates was limited to 512 states. As soon
as it was exaused, system performance would tank as each template
that iterated all states would have to create and GC any state
> 512
* does it scale?
* avoid copy on all
* comment
* preen
* cover
* cover
* comments
* comments
* comments
* preen
* preen
* Speed up entity filter when there are many glob matchers
Since we do no care about which glob matches we can
combine all the translated globs into a single regex
which reduces the overhead
* delete unused code
* preen
* Use `get_ha_sensor_data` method to update sensor state
* update tests
* Use `get_ha_sensor_data` to validate connection
* Update test_sensor.py
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Add select for EV charging to bmw_connected_drive
* Use snapshot for select tests, split select_option tests
* Apply suggestions from code review
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* Further adjustments from code review
---------
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
* Migrate old ZHA IasZone sensor state to zigpy cache
* Use correct type for ZoneStatus
* Test that migration happens
* Test that migration only happens once
* Fix parametrize
* Use metric units internally
* Remove unnecessary code
* Simplify sensor classes
* Remove AccuWeatherForecastSensor class
* Update wind speed value in test
* Return suggested_unit_of_measurement for wind entities
* Clean test
* Use _attr_suggested_unit_of_measurement
* Remove _get_suggested_unit()
* Remove unnecessarey code
* Use mwh values from ultraheat api when available
Remove manifest cleanup from PR
Remove added device class from this PR
Restore entity registry fixture
Replace filter by attr_entity_registry_enabled_default
* Catchup with #90182 and #90183
* Add comment explaining disabling some entities
* Add parameterisation of test cases
* Initial commit
* Revert "Initial commit"
This reverts commit 452027f1a3c1be186cedd4115cea6928917c9467.
* Change ezviz to token auth
* Bump API version.
* Add fix for token expired. Fix options update and unload.
* Fix tests (PLATFORM to PLATFORM_BY_TYPE)
* Uses and stores token only, added reauth step when token expires.
* Add tests MFA code exceptions.
* Fix tests.
* Remove redundant try/except blocks.
* Rebase fixes.
* Fix errors in reauth config flow
* Implement recommendations
* Fix typing error in config_flow
* Fix tests after rebase, readd camera check on init
* Change to platform setup
* Cleanup init.
* Test for MFA required under user form
* Remove useless if block.
* Fix formating after rebase
* Fix formating.
* No longer stored in the repository
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Make abort_entries_match available in options flow
* Add tests
* Exclude ignore entries and add test
* Move to OptionsFlow
* Adjust tests
* Use mock_config_flow
* Use AbortFlow
* Remove duplicate code
* Construct binary sensor state from zigpy cache (WIP)
* Workaround zha-quirks issue where "MotionWithReset" quirks don't update attribute cache (WIP)
zha-quirks currently has an issue where the ZONE_STATE attribute is updated (when the zone_STATUS changes).
https://github.com/zigpy/zha-device-handlers/pull/2231 is a proper fix for this.
For now, we just update the attribute cache when we get the "zone status update notification" command.
This wasn't noticed before, as the "attribute report signal" was sent from the `cluster_command()` method and the used the provided attribute (in the signal) to update the `_state` value in the binary sensor class.
As we just tell HA to write state again when we get an attribute report now, the ZONE_STATUS attribute is read now (and needs to be correct).
* Use parse() method of main class for IasZone entity (with stripped bits)
* Change wording in comment, remove explicitly sending attr signal
(This comment should be removed/changed later anyway)
* Remove note
* Get zone_status attribute id with zigpy
* Remove `security.` prefix for `IasZone` import
`AceCluster` was already directly imported and `IasZone` is too now for getting the attribute id
* Store full zone status attribute in cache
* Check that non-alarm bits are ignored in IasZone sensor test
* Re-enable occupancy binary sensor test
This test seems to work fine and I don't see any reason why it was commented out for a while
* Fix cached read mix-up for `zone_status`/`zone_state`
This allows cached reads for `zone_state` (enrolled or not), but forces a new read for `zone_status` (alarm or not).
* Use last valid state if meter is not periodically resetting
* Fix unload of entry, used during options flow submit
* Adjustments based on code review
* Move DecimalException handling to validation method
* Add test for invalid new state in calculate_adjustment method
* Add basic tests
* Updated requriements_test_all.txt
* Update temperusb version
* Add type hints
Co-authored-by: Christian Knittl-Frank <lcnittl@gmail.com>
* Add type hints
Co-authored-by: Christian Knittl-Frank <lcnittl@gmail.com>
* Correct typo in type hint
* Fix isort
* Fix requirements_test_all.txt
---------
Co-authored-by: Dave T <davet2001@users.noreply.github.com>
Co-authored-by: Christian Knittl-Frank <lcnittl@gmail.com>
* Add tests to Lidarr
* fix js files
* take out the trash
* fix 3.9
* uno mas
* fix fixture
* ruff
* Update const.py
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Add a missing test for aborting with "already_configured"
Test that config_flow aborts with "already_configured" when the
integration has already been configured
* Don't copy test data
Since #90232 is merged, it is no longer needed
* Split the initialisation into two steps, as it should be
* Create new config parameter for default character encoding if no character encoding is declared
* Changes suggested by gjohansson-ST
* Added config flow for scape
* Removed "character"
* Change to create_async_httpx_client
* Remove CONF_ENCODING from Scrape SENSOR_SCHEMA
* Debug scrape test