Commit graph

247 commits

Author SHA1 Message Date
Jan Bouwhuis
39f5f30ca9
Revert "Allow MQTT device based auto discovery" ()
Revert "Allow MQTT device based auto discovery ()"

This reverts commit 585892f067.
2024-06-03 22:30:37 +02:00
Jan Bouwhuis
585892f067
Allow MQTT device based auto discovery ()
* Add MQTT device based auto discovery

* Respect override of component options over shared ones

* Add state_topic, command_topic, qos and encoding as shared options

* Add shared option test

* Rename device.py to schemas.py

* Remove unused legacy `platform` attribute to avoid confusion

* Split validation device and origin info

* Require `origin` info on device based discovery

* Log origin info for only once for device discovery

* Fix tests and linters

* ruff

* speed up _replace_all_abbreviations

* Fix imports and merging errors - add slots attr

* Fix unrelated const changes

* More unrelated changes

* join string

* fix merge

* Undo move

* Adjust logger statement

* fix task storm to load platforms

* Revert "fix task storm to load platforms"

This reverts commit 8f12a5f251.

* bail if logging is disabled

* Correct mixup object_id and node_id

* Auto migrate entities to device discovery

* Add device discovery test for device_trigger

* Add migration support for non entity platforms

* Use helper to remove discovery payload

* Fix tests after update branch

* Add discovery migration test

* Refactor

* Repair after rebase

* Fix discovery is broken after migration

* Improve comments

* More comment improvements

* Split long lines

* Add comment to indicate payload dict can be empty

* typo

* Add walrus and update comment

* Add tag to migration test

* Join try blocks

* Refactor

* Cleanup not used attribute

* Refactor

* Move _replace_all_abbreviations out of try block

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-29 11:12:05 +02:00
epenet
0f8588a857
Rename calls fixture in mqtt tests ()
Rename calls fixture in mqtt
2024-05-29 09:25:34 +02:00
J. Nick Koston
69353d2719
Speed up mqtt debug info on message callback () 2024-05-28 11:10:07 -10:00
Jan Bouwhuis
bfc3194661
Fix mqtt not publishing null payload payload to remove discovery () 2024-05-27 12:53:22 -10:00
J. Nick Koston
6b8223e339
Try to read multiple packets in MQTT () 2024-05-27 11:07:24 +02:00
J. Nick Koston
9be829ba1f
Make mqtt internal subscription a normal function ()
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-05-25 11:34:24 -10:00
Jan Bouwhuis
521ed0a220
Fix mqtt callback exception logging ()
* Fix mqtt callback exception logging

* Improve code

* Add test
2024-05-25 22:46:33 +02:00
Jan Bouwhuis
c9a79f6293
Fix lingering mqtt test () 2024-05-24 14:34:18 -10:00
Jan Bouwhuis
fa1ef8b0cf
Split mqtt subscribe and unsubscribe calls to smaller chunks () 2024-05-24 13:33:28 -10:00
Jan Bouwhuis
f12aee28a8
Improve error logging on invalid MQTT entity state ()
* Improve error logging on invalid MQTT entity state

* Explain not hanlding TpeError and ValueError

* Move length check closer to source

* use _LOGGER.exception
2024-05-24 13:11:52 +02:00
Marc Mueller
dc47792ff2
Update codespell to 2.3.0 () 2024-05-24 08:22:29 +02:00
Jan Bouwhuis
050fc73056
Refactor shared mqtt schema's to new module ()
* Refactor mqtt schema's to new module

* Remove unrelated change
2024-05-23 01:12:25 +02:00
J. Nick Koston
f429bfa903
Fix mqtt timer churn ()
Borrows the same design from homeassistant.helpers.storage to avoid
rescheduling the timer every time async_schedule is called if a timer
is already running.

Instead of the timer fires too early it gets rescheduled for the time
we wanted it. This avoids 1000s of timer add/cancel during startup
2024-05-21 21:05:33 -04:00
J. Nick Koston
ac3321cef1
Fix setting MQTT socket buffer size with WebsocketWrapper () 2024-05-19 14:09:21 -10:00
Jan Bouwhuis
92254772ca
Increase MQTT broker socket buffer size ()
* Increase MQTT broker socket buffer size

* Revert unrelated change

* Try to increase buffer size

* Set INITIAL_SUBSCRIBE_COOLDOWN back to 0.5 sec

* Sinplify and add test

* comments

* comments

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-12 13:13:41 +02:00
J. Nick Koston
481de8cdc9
Ensure config entry operations are always holding the lock ()
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-12 08:20:08 +09:00
Jan Bouwhuis
589104f63d
Export MQTT subscription helpers at integration level () 2024-05-08 23:46:50 +02:00
J. Nick Koston
649dd55da9
Simplify MQTT subscribe debouncer execution () 2024-05-07 14:41:31 -05:00
Jan Bouwhuis
a3248ccff9
Log an exception mqtt client call back throws ()
* Log an exception mqtt client call back throws

* Supress exceptions and add test
2024-05-07 21:19:46 +02:00
Jan Bouwhuis
7148c849d6
Only log loop client subscription log if log level is DEBUG ()
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-07 18:38:59 +02:00
Jan Bouwhuis
bedd5c1cef
Cleanup removed MQTT broker settings () 2024-05-02 20:37:21 +02:00
J. Nick Koston
041456759f
Remove duplicate mid handling in MQTT () 2024-05-01 15:18:44 -05:00
J. Nick Koston
6cf1c5c1f2
Hold a lock to prevent concurrent setup of config entries () 2024-04-30 18:47:12 -05:00
Jan Bouwhuis
3c7cbf5794
Add test MQTT subscription is completed when birth message is sent () 2024-04-30 18:15:46 -05:00
epenet
ad84ff18eb
Use remove_device helper in tests (1/2) ()
* Use remove_device helper in tests

* Update test_tag.py

* Update test_tag.py
2024-04-30 12:52:33 +02:00
Jan Bouwhuis
43dc5415de
Fix no will published when mqtt is down () 2024-04-27 18:42:38 -05:00
Jan Bouwhuis
31d11b2362
Add re-auth flow for MQTT broker username and password ()
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-23 22:26:01 +02:00
Sid
895f73d8e4
Enable Ruff A001 () 2024-04-21 23:25:27 +02:00
J. Nick Koston
423544401e
Convert MQTT to use asyncio () 2024-04-21 22:33:58 +02:00
Marc Mueller
443bfee16d
Replace partial annotations () 2024-03-28 18:33:39 +01:00
Jan-Philipp Benecke
22b14d83e8
Use setup_test_component_platform helper for sensor entity component tests instead of hass.components ()
* Use `setup_test_component_platform` helper for sensor entity component tests instead of `hass.components`

* Missing file

* Fix import

* Remove invalid device class
2024-03-28 12:07:55 +01:00
Jan Bouwhuis
3dc8df2403
Get ServiceValidationError message from translation cache only ()
* Get ServiceValidationError message from translation cache only

* Remove message for NotValidPresetModeError
2024-03-18 14:42:21 +01:00
Sid
d5fd005db8
Add ruff rule PIE808 () 2024-03-17 09:56:26 +01:00
Jan Bouwhuis
c608d1cb85
Fix mqtt platform setup race () 2024-03-10 08:36:17 -10:00
Jan Bouwhuis
caaa03536b
Cleanup mqtt PLATFORMS constant and CI-test platform filters () 2024-03-09 23:48:54 +01:00
Jan Bouwhuis
3b0ea52167
Allow Just-in-Time platform setup for mqtt ()
* Allow Just-in-Time platform setup for mqtt

* Only forward the setup of new platforms

* Fix new  platforms being setup at reload + test

* Revert not related changes

* Remove unused partial

* Address comments, only import plaforms if needed

* Apply suggestions from code review

* Add multipl platform discovery test

* Improve test

* Use a lock per platform
2024-03-09 21:55:00 +01:00
Marc Mueller
959826c4b4
Update byte string formatting () 2024-03-08 20:32:40 +01:00
Marc Mueller
32f3f46542
Add empty line after module docstring (2) [tests.components] () 2024-03-08 19:16:21 +01:00
Jan Bouwhuis
c13231fc00
Improve mqtt value template error logging ()
* Refactor mqtt value template error logging

* Remove import
2024-03-04 08:49:12 +01:00
Jan Bouwhuis
1b2e669302
Improve handling mqtt command template exceptions ()
* Improve handling mqtt command template exceptions

* Fix test

* Cleanup stale exception handler

* Throw on topic template exception
2024-02-26 11:04:55 +01:00
J. Nick Koston
5b8591ec7e
Avoid reschedule churn in Storage.async_delay_save ()
* Avoid circular import in Storage.async_delay_save

We call Storage.async_delay_save for every entity being added or removed
from the registry. The late import took more time than everything else
in the function.

* Avoid reschedule churn in Storage.async_delay_save

When we are adding or removing entities we will call async_delay_save
quite often which has to add and remove a TimerHandle on the event loop
which can add up when there are a lot of registry items changing.

If the timer handle still has 80% of the time remaining on it
we will avoid resceduling and let it fire at the time the
original async_delay_save call was made. This ensures we
do not force the event loop to rebuild its heapq because
too many timer handlers were cancelled at once

* div0

* add coverage for 0 since we had none

* fix bad conflict

* tweaks

* tweaks

* tweaks

* tweaks

* tweaks

* tweaks

* more test fixes

* mqtt tests rely on event loop overhead
2024-02-24 08:46:00 +01:00
Jan Bouwhuis
c048b840fc
Do not directly call async_setup_entry in MQTT tests () 2024-02-21 07:47:30 +01:00
Jan Bouwhuis
09f1ec78a5
Handle template errors on MQTT payload handling ()
* Handle template errors on MQTT payload handling (alt)

* Handle mqtt event en image template errors correctly
2024-02-13 10:59:55 +01:00
J. Nick Koston
04dccc7ec6
Migrate mqtt to use async_update_entry to alter config entries () 2024-02-12 21:38:13 +01:00
Marc Mueller
a9147cf3dd
Use builtin TimeoutError [k-n] () 2024-02-05 12:08:18 +01:00
J. Nick Koston
c399cab427
Small speed up to checking core state () 2024-01-18 08:41:32 -10:00
Jan Bouwhuis
26058bf922
Add serial_number attribute to MQTT device properties () 2024-01-16 14:02:34 +01:00
Jan Bouwhuis
c7b6c9da31
Remove work-a-round for mqtt sensors with an entity_category set to config ()
* Remove work-a-round for mqtt sensors with an entity_category set to `config`

* Cleanup strings
2024-01-05 09:24:52 +01:00
Jan-Philipp Benecke
ff85d0c290
Migrate mqtt tests to use freezegun () 2023-12-10 09:25:16 +01:00