* Add silabs_multiprotocol platform
* Add new files
* Add ZHA tests
* Prevent ZHA from creating database during tests
* Add delay parameter to async_change_channel
* Add the updated dataset to the dataset store
* Allow MultipanProtocol.async_change_channel to return a task
* Notify user about the duration of migration
* Update tests
* Add video id to state attributes
* Make extra state attributes not optional
* Revert "Make extra state attributes not optional"
This reverts commit d2f9e936c8.
* Add zwave_js speed config for additional GE/Jasco fan controllers
Add speed info for Honeywell(GE/Jasco) 39358 In-Wall Fan Speed Control and Enbrighten(GE/Jasco) 55258 In-Wall Fan Speed Control.
* Add test for Honeywell 39358 In-Wall Fan Speed Control
* Add Dremel 3D Printer integration
* remove validators requirement
* ruff
* uno mas
* uno mas
* uno mas
* uno mas
---------
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Tom Harris <tomharris@harrisnj.net>
* Add error handling for all service calls
* Switch siren to use internal function
* Remove failing checks
* Revert change to poll service, add comments, and add additional error handling
* Add error handling for ping and refresh + review comment + add tests
* Add test for statistics entity refresh
* Add time component to Melnor Bluetooth integration
* Apply suggestions from code review
---------
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Swallow error 40000 for songpal power on/off
* Move ERROR_REQUEST_RETRY to consts
* Add tests for the swallow exception behavior
* Update tests/components/songpal/test_media_player.py
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* Language codes for Hebrew
There is 2 optional code for Hebrew:
he-IL is the new code
iw-IL is the old code , the google cloud STT for example is using the old code (iw)
* Update language.py
* Update test_language.py
* Update test_language.py
* Update test_language.py
* Simplify duplicate language check
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
* Initialize _attr_native_value when running
* Fix return type on update_sensor_state()
move init at startup if _attr_native_value is None
* allow update _attr_native_value when running and none
* Migrate restore_state helper to use registry loading pattern
As more entities have started using restore_state over time, it
has become a startup bottleneck as each entity being added is
creating a task to load restore state data that is already loaded
since it is a singleton
We now use the same pattern as the registry helpers
* fix refactoring error -- guess I am tired
* fixes
* fix tests
* fix more
* fix more
* fix zha tests
* fix zha tests
* comments
* fix error
* add missing coverage
* s/DATA_RESTORE_STATE_TASK/DATA_RESTORE_STATE/g
* Add speech detection to esphome voice assistant
* Timeout after silence
Ensure events are sent before finish is called
* use va_version 3 instead of ESPHome version
* Convert repeated fixtures to factory
* Add some v3 tests
* Add conversation_id
* Bump aioesphomeapi to 13.8.0
* Fix missed buffering of detected chunk
* Alter log message
* Updates
* Spelling
* Fix return type
* Refactor zwave_js.cover and improve test coverage
* Remove extra fixtures
* cleanup old stuff
* Get coverage to 100
* Add support for Window Covering CC
* fix bug
* typo
* remove redundant stuff
* slight change to improve readability
* Add device class
* Update to match specs
* rfxtrx: add missed case for device tuple fallback
Previously the code was prepared for a backward compatible
migration of tuples, where both styles of identifiers might exist
in device registry at the same time.
This place was sadly missed
* No need to raise special, we can assert instead
* Add some basic tests
* Do not trigger reload when unloading MQTT entry
* More cleanup
* cleanup async_reload_manual_mqtt_items
* Add test
* Improve test
* Remove unuse mocks from test
* Add discovery item in test
* Fix refactoring error with updating in sequence
see #93649
* coverage
* make sure entities are being updated in parallel
* make sure entities are being updated in sequence
* Defer creating tasks we know are going to wait on the entity platform semaphore
When looking at whats going on with aiomonitor-ng, I noticed
we end up creating a lot of tasks that block waiting for the
executor because of the entity platform parallel_updates semaphore.
When we know the tasks are going to block we now await them
in sequence to avoid feeding the loop a herd of tasks that
will block on the semaphore
* change during iteration fix
* change during iteration fix
* cleanup
* cleanup
* fix vizio test
* Switch some frequently called call_laters to call_at
call_at is a bit faster than call_later since call_later
is a wrapper around call_at.
We call at lot of these at startup so it helps a bit when
we are resource constrained
* update test
* update test
* Complete migration of persistent notifications
Persistent notifications are no longer stored in
the state machine and no longer fire events
* Complete migration of persistent notifications
Persistent notifications are no longer stored in
the state machine and no longer fire events
* fixes
* fixes
* fixes
* ws test
* update tests
* update tests
* fix more tests
* fix more tests
* more fixes
* fix
* fix person
* fix person
* keep whitelist
* use singleton
* Add additional coverage to history websocket api
related issue #93258
* Add additional coverage to history websocket api
related issue #93258
* Fix results when union query ends up at the end instead of front
* Apply suggestions from code review
* resort
* zero instead
* fix exception
* fix tests
* Fix not retrying on connection reset during nexia config entry setup
fixes
```
2023-05-26 00:15:39.129 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Alexander for nexia
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/aiohttp/client.py", line 558, in _request
resp = await req.send(conn)
^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aiohttp/client_reqrep.py", line 670, in send
await writer.write_headers(status_line, self.headers)
File "/usr/local/lib/python3.11/site-packages/aiohttp/http_writer.py", line 130, in write_headers
self._write(buf)
File "/usr/local/lib/python3.11/site-packages/aiohttp/http_writer.py", line 75, in _write
raise ConnectionResetError("Cannot write to closing transport")
ConnectionResetError: Cannot write to closing transport
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 387, in async_setup
result = await component.async_setup_entry(hass, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/components/nexia/__init__.py", line 47, in async_setup_entry
await nexia_home.login()
File "/usr/local/lib/python3.11/site-packages/nexia/home.py", line 385, in login
request = await self.post_url(self.API_MOBILE_ACCOUNTS_SIGN_IN_URL, payload)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/nexia/home.py", line 157, in post_url
response: aiohttp.ClientResponse = await self.session.post(
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/aiohttp/client.py", line 572, in _request
raise ClientOSError(*exc.args) from exc
aiohttp.client_exceptions.ClientOSError: Cannot write to closing transport
```
* coverage
* Move constant values to separate file
* Move constant values to separate file
* Add config flow to lastfm
* Add tests
* Add config flow to lastfm
* Add tests
* Add tests
* Add tests
* Add extra form for main user and autofill with friends
* Add extra form for main user and autofill with friends
* Add extra form for main user and autofill with friends
* Add extra form for main user and autofill with friends
* Add OptionsFlow
* Add tests
* Fix feedback
* Fix feedback
* Fix feedback
* Fix feedback
* Fix test
* Apply suggestions from code review
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Update config_flow.py
* Update config_flow.py
* Update config_flow.py
* Update homeassistant/components/lastfm/config_flow.py
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
* Add tests
* Cleanup
* Update config_flow.py
* Update config_flow.py
* Update config_flow.py
* Fix test
* Fix feedback
* Codeowner lastfm
* Fix feedback
* Fix feedback
* Parametrize errors
* Parametrize errors
* Parametrize errors
* Finish tests
---------
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
pycsspeechtts uses the requests library, but Microsoft TTS previously
caught HTTPException from the standard library. This is changed to
catch requests.HTTPError and return `(None, None)` consistent with
other TTS integrations. This will properly raise HomeAssistantError
for display in the frontend.
Follow up to PR #92215 which adds tests for Microsoft TTS.
* Update Microsoft TTS supported languages
`script.microsoft_tts` scrapes Microsoft Azure documentation for
the list of supported languages and saves them to
`homeassistant.generated.microsoft_tts` for use in the component.
This adds support for more TTS languages, like fa-ir (Persian).
* Improve xpath query for Microsoft TTS languages
* Remove asserts for Microsoft TTS languages
* Add more tests for Microsoft TTS languages
* airzone: climate: fix max/min temps
The library now provides AZD_ABS_TEMP_MAX/AZD_ABS_TEMP_MIN which are useful for
devices with different max/min temperatures depending on the current working
mode (HEAT vs COOL).
These new values will have the highest/lowest max/min of both modes.
Until now, the max/min of the current working mode (HEAT/COOL) would be set
when starting Home Assistant, limiting the temperature range if the device
mode was changed after that.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* airzone: climate: update max/min temps
Some devices have different max/min climate temps depending on the active
mode (HEAT vs COOL), so we should update these values.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* Revert "airzone: climate: update max/min temps"
This reverts commit 988194d486.
* Revert "Revert "airzone: climate: update max/min temps""
This reverts commit e4ead24f71.
* tests: airzone: add max/min climate changes test
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* tests: airzone: fix dict copy
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---------
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* add sensors to roborock
* add value_fn typing
* fixed strings
* Update homeassistant/components/roborock/sensor.py
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* change to work time instead of time left
* added time left back
* fixed tests
* made diagnostic
---------
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
* Add proper support for zwave_js Indicator CC
* remove stale test
* Make all indicators diagnostic
* only set entity category if it is specified
* Only set properties from discovery if specified
* Conditionally set assumed state as well
* fix const name
* Don't create task
* Disable property keys 3-5 by default
* add additional dispatcher_connects so we catch all signals
* be consistent about order
* rename new discovery parameter
* comment
* exclude property keys 3-5
* fix remove logic
* add comment so I don't forget
* Switch entity category to config where necessary
* cut line
* less lines
* Update homeassistant/components/zwave_js/switch.py
Co-authored-by: kpine <keith.pine@gmail.com>
* Move async_remove to respond to interview started event
* Set up listener immediately so we don't wait for platform creation
* remove dupe import
* black
* append
---------
Co-authored-by: kpine <keith.pine@gmail.com>
* Do optimistic state update for Z-Wave multilevel switch entities
* simplify
* define constant for setting value to previous value
* Rework to only consider value of 255 and only places where we know that the previous state is known by the integration due to the service being called
* missed commit
* better code
* Add tests and use constant from lib
* fix logic
* fix bug
* Add comments with more details
* Update event when coordinator updates data.
* Move function to make diff easier to view
* Actually make it easier to view
* Move all tasks calculation to extra_state_attributes.
* Truncate long URLs
URL's longer than 256 characters will result in a
`homeassistant.exceptions.InvalidStateError`. This fixes that problem
and adds 2 extra_state_attributes: `full_url`, and `truncated`.
Fixes#89249
* Refactor to use function ref in entity description
* Add new preset to Tado to enable geofencing mode
Add new 'auto' preset mode to enable Tado to be set to auto geofencing
mode. The existing ‘home’ and ‘away’ presets switched Tado into manual
geofencing mode and there was no way to restore it to auto mode.
Note 1: Since preset modes (home, away and auto) apply to the Tado home
holistically, irrespective of the Tado climate entity used to select
the preset, three new sensors have been added to display the state of
the Tado home
Note 2: Auto mode is only supported if the Auto Assist skill is enabled
in the owner's Tado home. Various checks have been added to ensure the
Tado supports auto geofencing and if it is not supported, the preset is
not listed in the preset modes available
* Update codeowners in manifest.json
* Update main codeowners file for Tado component
* Get hostname id from get_settings
* Add try except in get_hostname_id function
* Update tests after adding get_hostname_id function
* Revert "Update tests after adding get_hostname_id function"
This reverts commit 5fa4e533cb.
* Add test for G2 models in config flow.
* Add test for helper module.
* Fix test for numbers.
* Revert "Add try except in get_hostname_id function"
This reverts commit 059f5bd9b4.
* Update variable name with known hostname ids to be private
---------
Co-authored-by: Stefan Gmeiner <stefangm42@gmail.com>
* airzone: climate: add Temperature range support
This is useful for HEAT_COOL climate mode (Airzone AUTO).
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* trigger CI
---------
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* Refactor zwave_js.sensor and add test coverage
* use walrus
* inherit config parameter class from list class
* use walrus in more places
* improve config parameter test
* Add change service
* test subtract
* Test no change if timer not running
* Modify example
* Raise
* Finalize
* test event
* Fix tests
* Fix tracking time
* Added new integration to support Electra Smart (HVAC)
* fixes + option to set scan interval
* renamed the module to electrasmart and added unittests
* added non tested files to .coveragerc
* changed the usage from UpdateCoordinator to each entity updates it self
* small fixes
* increased pypi package version, increased polling timeout to 60 seconds, improved error handling
* PARALLEL_UPDATE=1 to prevent multi access to the API
* code improvements
* aligned with the new HA APIs
* fixes
* fixes
* more
* fixes
* more
* more
* handled re-atuh flow
* fixed test
* removed hvac action
* added shabat mode
* tests: 100% coverage
* ran hassfest
* Update homeassistant/components/electrasmart/manifest.json
Co-authored-by: Shay Levy <levyshay1@gmail.com>
* Update homeassistant/components/electrasmart/manifest.json
Co-authored-by: Shay Levy <levyshay1@gmail.com>
* Update homeassistant/components/electrasmart/manifest.json
Co-authored-by: Shay Levy <levyshay1@gmail.com>
* Update homeassistant/components/electrasmart/climate.py
Co-authored-by: Shay Levy <levyshay1@gmail.com>
* address Shay's comments
* address Shay's comments
* address more comments
---------
Co-authored-by: Shay Levy <levyshay1@gmail.com>
* init commit
* use official version release
* remove options
* moved first refresh to gather
* add extra tests
* remove model_sepcification
* remove old mqtt test
* bump to 13.4
* fix dndtimer
* bump to 14.1
* add status back
* bump to 17.0
* remove error as it is not used
* addressing mr comments
* making enum access use get()
* add check for empty hass data
* Add always connected option to Yale Access Bluetooth
If the lock does not support push updates via advertisements or you want lock operation to be more responsive, you can enable always connected mode. Always connected will cause the lock to stay connected to Home Assistant via Bluetooth, which will use more battery.
* Update homeassistant/components/yalexs_ble/config_flow.py
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Update UpCloud config entry data on successful reconfig
* Add already configured test
* Improve success case request mocking
So that the data fetch that might happen in the background after success
won't trash the test log with misleading errors.
* Simplify already configured test
Thanks-to: Martin Hjelmare <marhje52@gmail.com>
* remove impossible test
IndividualAddress telegrams are not processed by xknx.telegram_queue
* Use Telegrams helper class for group monitor messages
* Store 50 telegrams in deque for group monitor
* Send recent telegrams at once on connection of group monitor
* Update KNX-frontend to support group monitor prepopulation
* Copy openai_conversation to google_generative_ai_conversation
This is to improve diff of the next commit with the actual implementation.
Commands used:
cp -r homeassistant/components/openai_conversation/ homeassistant/components/google_generative_ai_conversation/
cp -r tests/components/openai_conversation/ tests/components/google_generative_ai_conversation/
find homeassistant/components/google_generative_ai_conversation/ tests/components/google_generative_ai_conversation/ -type f | xargs sed -i \
-e 's@openai_conversation@google_generative_ai_conversation@g' \
-e 's@OpenAI Conversation@Google Generative AI Conversation@g' \
-e 's@balloob@tronikos@g'
* Add google_generative_ai_conversation to Google brand
* Google Generative AI Conversation
* Sync recent openai changes
* handle empty responses
* Remove as_compressed_state cache
All calls to as_compressed_state are now covered by a higher level
JSON cache so there is no need to store these in memory anymore
* Remove as_compressed_state cache
All calls to as_compressed_state are now covered by a higher level
JSON cache so there is no need to store these in memory anymore
* telegram device trigger initial
* add Telegrams helper class
to parse and convert Telegram only once instead of once per device trigger
* translation
* label for extra_field
* test device trigger
* test trigger callback removal
* rename extra_field key to same name as used in trigger
* typo
* Support calculating changes between consecutive sum statistics
* Add support for unit conversion when calculating change
* Don't include sum in WS response unless requested
* Improve tests
* Break out calculating change to its own function
* Improve test coverage
* Add KNX panel
* provide project data for the panel group monitor
* upload and delete project from panel
* test project store
* more tests
* finish tests
* use integers for DPTBinary payload monitor display
* add project to diagnostics
* require new frontend version
* update knx_frontend
* review suggestions
* update xknxproject to 3.1.0
---------
Co-authored-by: Marvin Wichmann <me@marvin-wichmann.de>
* Use the 'id' field and nearest resolutions
Expose nearest Resolution (ID and Value) as Variables
* Add more specific type hints
* Change type definition of request
* Add deprecation warning and remove variables
* Remove deprecation warning & update tests
* Fix wrong value assignment
* revert future changes
* migrated geo_json_events integration to config flow
* improve test coverage
* code reformatting
* fix tests
* fix entity manager
* changes after review
* improve test coverage and fixed form
* remove unused code
* remove commented out code
* changes after review
* make title prettier
* fixed tests
* simplified code
* changes after review
* fix test
* push deprecation out
* changes after review
* changes after review
* changes after review
* changes after review
* changes after review
* removed scan interval from user flow and import flow
* Debounce MQTT unsubscribes and merge to one call
* Make _async_unsubscribe a callback
* Make sure unsubscribes are processed
* Move debug log out of lock
* Reduce calls and raise outside lock
* Cancel any unsubscribe when queing
* Copy pending unsubscribes
* Only convert topics to list once
* No copy needed
* Typo in comment