Commit Graph
73 Commits
Author SHA1 Message Date
J. Nick Koston dd5ba5a90c Conditionally compile API user services to save 4.3KB flash (follow-up to #9262) (#9451) 2025-07-11 19:08:03 -10:00
J. Nick Koston 143bf694c7 Optimize API flash usage by storing message size at compile time (#9447) 2025-07-11 19:38:23 -05:00
J. Nick KostonandCopilot ee8ee4e646 Optimize logger callback API by including message length parameter (#9368)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-07 22:00:03 +00:00
J. Nick Koston b122112d58 Refactor API entity update dispatch to reduce code duplication (#9372) 2025-07-08 08:51:17 +12:00
e49b89a051 Introduce base Camera class to support alternative camera implementations (#9285)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-07-07 15:45:00 +12:00
J. Nick Koston 0bc18a8281 Eliminate API component guard variable to save 8 bytes RAM (#9341) 2025-07-05 23:34:55 -05:00
J. Nick Koston 5b55e205ef Save flash and RAM by conditionally compiling unused API password code (#9297) 2025-07-03 09:42:08 +12:00
J. Nick Koston 6a354d7c94 Reduce API component memory usage with conditional compilation (#9262) 2025-06-30 15:33:35 +12:00
J. Nick Koston 24bbfcdce7 Reduce API memory footprint through bitfield consolidation and type sizing (#9252) 2025-06-30 11:42:57 +12:00
J. Nick Koston 86c0fb48a3 Replace ping retry timer with batch queue fallback (#9207) 2025-06-29 09:08:30 +12:00
J. Nick Koston 15ef93ccc9 Optimize API connection loop performance (#9184) 2025-06-26 13:47:41 +12:00
J. Nick Koston 43c677ef37 Optimize API server performance by using cached loop time (#9104) 2025-06-19 12:12:14 +12:00
Clyde StubbsandJ. Nick Koston 261b561bb2 [binary_sensor] Add action to invalidate state and pass to HA (#8961)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-06-12 09:16:20 +10:00
J. Nick Koston e8aa7cff36 Improve shutdown reliability when tx buffer is full (#9043) 2025-06-11 22:08:23 +12:00
J. Nick Koston 2ed5611a08 Replace API deferred queue with efficient message batching system (#9012) 2025-06-11 11:49:15 +12:00
J. Nick Koston c0b05ada1a Reduce ESP_LOGCONFIG calls (#9026) 2025-06-09 00:02:30 +00:00
J. Nick Koston 9cc2a04d54 Implement proper API connection teardown before deep sleep/reboot (#9008) 2025-06-09 10:29:26 +12:00
J. Nick KostonandKeith Burzinski fd72a64053 Redundant Log Messages Cleanup (#8944)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-05-29 09:36:23 +00:00
J. Nick Koston 43e88af28a Optimize socket operations by checking readiness in the main loop (#8918) 2025-05-28 18:16:37 -05:00
Keith Burzinski b6fa4f641d Streamline setup() logging (a, b) (#8924) 2025-05-28 22:53:51 +12:00
J. Nick Koston f4eb75e4e0 Avoid iterating clients twice in the api_server loop (#8733) 2025-05-12 17:29:50 -05:00
Keith BurzinskiandJesse Hills 2fd5f9ac58 [api] Allow noise encryption key to be set at runtime (#7296)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2025-04-17 13:15:25 +12:00
Nick KinnanandKeith Burzinski 6aba1dbd73 [api] ensure fair network sharing + prevent lost state changes via deferred publish at high event load (#7547)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-02-25 10:20:21 +11:00
tomaszduda23 cbc03aae80 [code-quality] fix clang-tidy api (#7279) 2024-10-07 11:55:11 +13:00
Jesse Hills 2b25daa199 [api] Add new flag to request state/attribute once from HA only (#7258) 2024-08-13 17:12:06 +12:00
Jesse Hills 3cd2fb0843 [core] Update Entities (#6885) 2024-06-12 09:57:36 +12:00
Jesse Hills 8ef7b41c91 Add datetime entities (#6513) 2024-04-26 09:19:54 +12:00
David FriedlandandJesse Hills c531a528f0 Event entity support (#6451)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-24 14:35:26 +12:00
Keith BurzinskiandJesse Hills eb89d99999 Add valve component (#6447)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-23 16:47:03 +12:00
Jesse Hills 76c5337987 Add support for time entities (#6399)
* Add time entities

* Add tests

* Add myself to datetime codeowners

* Fix publishing times with 0 values

* Log performing TimeCall

* Implement `on_time` trigger

* Rename var

* Fix initial value for time

* Add arg name for clarity

* Remove useless checks
2024-04-08 20:46:35 -05:00
RFDarterandJesse Hills 1e96a19d09 Add datetime date entities (#6191)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-03-11 07:52:22 +13:00
J. Nick Koston d4d49e38fc Fix device not requesting Home Assistant time at the update interval (#6022) 2023-12-28 14:51:00 +11:00
Jesse Hills 193bac94f4 Add on_client_connected and disconnected to voice assistant (#5629) 2023-10-30 17:16:42 -05:00
Jesse Hills 27b593ba85 Add connection triggers to api (#5628) 2023-10-29 21:02:49 -05:00
e80bd8ed3d Add text component (#5336)
Co-authored-by: Maurits <maurits@vloop.nl>
Co-authored-by: mauritskorse <mauritskorse@gmail.com>
Co-authored-by: Daniel Dunn <dannydunn@eternityforest.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-10-25 22:00:32 +13:00
Jesse Hills 511af5845e Remote wake word support for voice assistant (#5229) 2023-10-10 19:52:42 +13:00
Jesse Hills 417d45939f Fix silence detection flag on voice assistant (#5120) 2023-07-19 11:38:47 +12:00
Graham BrownandJesse Hills 54474e5b33 Add Alarm Control Panel (#4770)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-06-15 12:34:39 +12:00
Jesse Hills ce13979690 Bluetooth Proxy: Raw bundled advertisements (#4924) 2023-06-09 07:41:09 +12:00
Jesse Hills 1ea5d90ea3 Continuous voice_assistant and silence detection (#4892) 2023-05-31 16:30:53 +12:00
Jesse Hills 55ec082628 Only request VA port from first client that is subscribed (#4747) 2023-04-27 04:22:12 +00:00
Jesse Hills 4cea74ef3b Call on_error if no api client connected that handles voice (#4709) 2023-04-19 20:56:37 +00:00
Jesse Hills b60c08dd28 Add push to talk voice assistant (#4648)
* Add push to talk voice assistant

* Refactor most code into voice_assistant

* Make voice_assistant the component and remove push_to_talk (can be done in yaml)

* Fix component setup

* Always AF_INET to match serverside

* Fix microphone and media player co-existence

* Format

* Update codeowners

* Update test file

* Fix endifs

* nullptr not NULL

* clang-tidy

* Format

* fixup: Add VA event data

* Generate proto

* Parse and log events

* Add default to switch

* Fix

* Add mic/va to test5
2023-04-11 23:45:10 +00:00
J. Nick Koston 9ee661c1e4 Add ability to clear the gatt cache (#4621)
* Add ability to clear the gatt cache

With BlueZ we can fully clear the cache when something goes wrong with the services, however since this is also a cache on the ESP32 we need to be able to clear the on device cache as well for the proxies since if something goes wrong with the service resolution it can cache the bad resolution on NVS forever.

Our current client implementation is limited to clearing the memory cache in Home Assistant https://github.com/home-assistant/core/blob/89355e087952417a6824507fd3b197f9d0520e19/homeassistant/components/esphome/bluetooth/client.py#L512

related issue https://github.com/esphome/issues/issues/4156

https://github.com/esphome/aioesphomeapi/pull/410

* naming

* lint

* lint

* naming

* naming

* naming

* 88 now that 87 is taken

* make const

* Update esphome/components/api/api_frame_helper.cpp
2023-03-26 21:48:56 +00:00
Jesse Hills d42f35de5d Wrap ipv6 code a bit more (#4574)
* Wrap ipv6 code a bit more for when ipv6 support should not be compiled in

* More checks

* More uses

* Fix
2023-03-21 20:24:14 +00:00
Fredrik GustafssonandJesse Hills 29571a1acd implement pairing for bluetooth proxy (#4475)
* default to just-works encryption

This patch will turn on encryption when making active connections in order to comply with just-works BLE encryption.

* Revert "default to just-works encryption"

This reverts commit 05bc9e9f1cca9c41cbc7434379cbd5eb6dbb1034.

* implement pair method

* adhere to clang formatter

* fix oopsie

* bump bluetooth_proxy_version

* add auth callback

* generate new protos

* fix another oopsie

* add pairing status to connection

* clear paired on connect()

* lint

* add unpair ("forget") ble method

* compile protos

* fix oopsie

* add missing unpairing method

* add unpairing

* fix get_paired return type

* remove unused memcpy

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>

* change to is_paired

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>

* Update bluetooth_proxy.cpp

* actually add missing method

* send auth cb on set_encryption failure

* cleanup from havin the worst test setup

* lint

* match auth events to bd_addr

* add second addr check to auth cb

* add addr check to third auth cb

---------

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2023-03-06 18:04:35 +00:00
Jesse Hills b34d24735a Send GATT error events to HA (#3884) 2022-10-12 22:22:07 +13:00
Jesse Hills ed443c6153 Bluetooth Proxy active connections (#3817) 2022-10-04 10:45:06 +13:00
Jesse Hills b854e17995 Initial bluetooth_proxy support (#3736) 2022-08-25 07:13:44 +12:00
Jesse Hills 6221f6d47d Implement Media Player and I2S Media player (#3487) 2022-06-02 17:00:17 +12:00