Commit Graph

319 Commits

Author SHA1 Message Date
Abílio Costa 7eecdc87fd Add lookup caching to get_x_for_target (#157888) 2025-12-16 12:17:58 +00:00
Abílio Costa d325f677df Deprecate TargetSelectorData in favor of TargetSelection (#158734)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-15 14:45:35 +00:00
Abílio Costa c058810461 Cache flattened service descriptions in websocket api (#157510)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-12-04 16:05:49 +00:00
Abílio Costa f758cfa82f Add get_conditions_for_target websocket command (#157344)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-11-26 14:08:56 +00:00
Abílio Costa c2b7a63dd9 Add get_services_for_target websocket command (#157334) 2025-11-26 12:30:51 +00:00
Abílio Costa a6aab088fb Add get_triggers_for_target websocket command (#156778) 2025-11-26 11:05:03 +01:00
Abílio Costa 57c3a5c349 Move imports to top level in websocket_api commands (#156004) 2025-11-07 14:10:19 +00:00
Artur Pragacz b157afac13 Remove templates from schemas for service fields validation (#150063) 2025-10-30 18:46:43 +01:00
Abílio Costa 2abc197dcd Add extract_from_target websocket command (#150124)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Artur Pragacz <49985303+arturpragacz@users.noreply.github.com>
2025-10-14 16:16:00 +02:00
Erik Montnemery d66da0c10d Respect filtering of WS subscribe_entities when there are unserializalizable states (#153262) 2025-10-02 22:20:45 +02:00
Erik Montnemery ec503618c3 Handle errors in WS manifest/list (#153256) 2025-09-30 15:12:41 +02:00
J. Nick Koston 671c4e1eab Reduce log spam from unauthenticated websocket connections (#151388) 2025-09-01 10:35:22 +02:00
Erik Montnemery 510fd09163 Allow core integrations to describe their conditions (#147529)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-07-04 16:03:42 +02:00
Erik Montnemery 1fb587bf03 Allow core integrations to describe their triggers (#147075)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-06-25 17:35:15 +01:00
Marc Mueller 2c13c70e12 Update ruff to 0.12.0 (#147106) 2025-06-19 20:39:09 +02:00
Martin Hjelmare f295d72cd9 Fix error stack trace for HomeAssistantError in websocket service call (#145699)
* Add test

* Fix error stack trace for HomeAssistantError in websocket service call
2025-05-27 12:54:57 +02:00
Erik Montnemery 0105332476 Add WS command integration/wait (#142040)
* Add WS command integration/wait

* Add test

* Update homeassistant/components/websocket_api/commands.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Use helper setup.async_wait_component

* Add onboarding view

* Revert "Add onboarding view"

This reverts commit df3a1a0580.

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-11 16:09:15 +02:00
J. Nick Koston 0abe57edaa Avoid checking if debug logging is enabled on every WebSocket message (#142258)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-04-04 22:28:55 +02:00
J. Nick Koston d6b48003b6 Improve performance of websocket_api _state_diff_event (#141696)
We can use last_updated_timestamp for the compare since its always
calculated when the state is created and comparing floats is
much faster than datetime objects
2025-03-28 19:58:12 -04:00
J. Nick Koston fd9f002e9f Increase websocket_api allowed peak time to 10s (#141680)
* 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
2025-03-28 20:32:00 +01:00
Abílio Costa 3fb70316da Fix error messaging for cascading service calls (#136966) 2025-01-31 11:10:57 +01:00
J. Nick Koston 7cf20c95c2 Log the error when the WebSocket receives a error message (#136492)
* Log the error when the WebSocket receives a non-text message

related issue #126754

Right now we only log that it was a non-Text message
and silently swallow the exception

* coverage
2025-01-27 15:38:18 -05:00
Joost Lekkerkerker ef8b8fbbaa Enable RUF023 (#135830) 2025-01-17 12:28:27 +01:00
Joost Lekkerkerker 8a35261fd8 Remove unused noqas (#135583) 2025-01-15 10:02:18 +01:00
epenet 24c70caf33 Improve formatting in component files (#135261)
* Improve formatting in component files

* Apply suggestions from code review
2025-01-10 11:46:15 +01:00
J. Nick Koston 53c486ccd1 Bump aiohttp to 3.11.0b3 (#129363) 2024-11-06 15:59:31 -06:00
J. Nick Koston 7691991a93 Small cleanups to the websocket command phase (#129712)
* Small cleanups to the websocket command phase

- Remove unused argument
- Avoid multiple NamedTuple property lookups

* Update homeassistant/components/websocket_api/http.py

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>

* Apply suggestions from code review

* touch ups

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-11-04 15:33:15 +01:00
J. Nick Koston 4749af6e90 Convert WebSocket messages to bytes before passing them to send_message (#129300) 2024-10-28 12:21:12 +01:00
J. Nick Koston c3f0f30910 Prepare websocket writer for aiohttp 3.11 (#127043) 2024-10-03 22:29:29 +02:00
Franck Nijhof 9dfabc3fb7 Adjust automation to plural triggers/conditions/actions keys (#123823)
* Adjust automation to plural triggers/conditions/actions keys

* Fix some tests

* Adjust websocket tests

* Fix search tests

* Convert blueprint and blueprint inputs to modern schema

* Pass schema when creating Blueprint object

* Update tests

* Adjust websocket api

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
Co-authored-by: Erik <erik@montnemery.com>
2024-09-24 20:03:23 +02:00
J. Nick Koston d8161c431f Add support for using an entityfilter to subscribe_entities (#124641)
* Add support for using an entityfilter to subscribe_entities

* filter init

* fix

* coverage
2024-08-27 11:17:05 +02:00
J. Nick Koston 76ebb0df08 Improve performance of generate diffs of state change events (#124601)
dict comps are inlined in cpython 3.12+
2024-08-26 08:49:31 +02:00
J. Nick Koston 108a54a4a8 Handle WebSocket client disconnect during prepare (#124173) 2024-08-19 15:28:05 -05:00
J. Nick Koston 14c2ca85ec Refactor websocket handler to reduce complexity (#124174) 2024-08-18 14:17:17 -05:00
epenet 0bb8c4832d Enable raise-within-try (TRY301) rule in ruff (#123351) 2024-08-12 09:16:33 +02:00
Erik Montnemery 9b2118e556 Remove recorder from websocket_api after dependencies (#122422)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-07-22 16:50:05 -05:00
Franck Nijhof a9bf12f102 Rename Services to Actions in translation strings (#121777) 2024-07-15 21:19:25 +02:00
Marc Mueller 0e52d149e4 Update voluptuous to 0.15.2 (#120631)
* Update voluptuous to 0.15.1

* Fix typing issues

* Add type ignores for json result type

* Update voluptuous to 0.15.2

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-07-02 12:57:09 -07:00
Marc Mueller b816fce976 Improve websocket_api schema typing (#120411) 2024-06-25 14:08:30 +02:00
epenet 960d1289ef Avoid references to websocket_api.const in core and other components (#119285) 2024-06-10 13:49:44 +02:00
Erik Montnemery 8099ea8817 Improve WS command validate_config (#118864)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-06-05 18:53:44 +02:00
J. Nick Koston 79bc179ce8 Improve websocket message coalescing to handle thundering herds better (#118268)
* Increase websocket peak messages to match max expected entities

During startup the websocket would frequently disconnect if more than
4096 entities were added back to back. Some MQTT setups will have more
than 10000 entities. Match the websocket peak value to the max expected
entities

* coalesce more

* delay more if the backlog gets large

* wait to send if the queue is building rapidly

* tweak

* tweak for chrome since it works great in firefox but chrome cannot handle it

* Revert "tweak for chrome since it works great in firefox but chrome cannot handle it"

This reverts commit 439e2d76b1.

* adjust for chrome

* lower number

* remove code

* fixes

* fast path for bytes

* compact

* adjust test since we see the close right away now on overload

* simplify check

* reduce loop

* tweak

* handle ready right away
2024-05-28 23:14:06 -04:00
J. Nick Koston caa65708fb Collapse websocket_api _state_diff into _state_diff_event (#118170) 2024-05-26 16:04:34 +02:00
Marc Mueller 3b4b36a9fd Fix partial typing (#118022) 2024-05-24 10:24:18 +02:00
J. Nick Koston c5cc9801a6 Cache serialize of manifest for loaded integrations (#117965)
* Cache serialize of manifest for loaded integrations

The manifest/list and manifest/get websocket apis
are called frequently when moving around in the UI.
Since the manifest does not change we can make
the the serialized version a cached property

* reduce

* reduce
2024-05-23 10:52:05 -04:00
Sid c2b3bf3fb9 Enable Ruff RET502 (#115139) 2024-05-21 22:19:33 +02:00
Marc Mueller 87bb7ced79 Use PEP 695 for simple type aliases (#117633) 2024-05-17 14:42:21 +02:00
Sid 2cc916db6d Replace pylint broad-except with Ruff BLE001 (#116250) 2024-05-07 14:00:27 +02:00
Sid b456d97e65 Replace pylint protected-access with Ruff SLF001 (#115735) 2024-05-06 20:33:26 +02:00
J. Nick Koston 9995207817 Avoid re-encoding the message id as bytes for every event/state change (#116460) 2024-04-30 12:02:28 -05:00