Commit Graph
91 Commits
Author SHA1 Message Date
J. Nick Koston 811ec57c31 Convert mqtt entity discovery to use callbacks (#118200) 2024-05-26 16:12:40 -10:00
Jan Bouwhuis b7f1f805fa Simplify subscription mqtt entity platforms (#118177) 2024-05-26 09:25:54 -10:00
J. Nick Koston 5d37217d96 Avoid expensive inspection of callbacks to setup mqtt subscriptions (#118161) 2024-05-26 01:22:44 -10:00
J. Nick KostonandJan Bouwhuis 9be829ba1f Make mqtt internal subscription a normal function (#118092)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-05-25 11:34:24 -10:00
Jan Bouwhuis 6f81852eb4 Rename MQTT mixin classes (#118039) 2024-05-24 15:41:59 +02:00
Jan BouwhuisandJ. Nick Koston 9333965b23 Create bound callback_message_received method for handling mqtt callbacks (#117951)
* Create bound callback_message_received method for handling mqtt callbacks

* refactor a bit

* fix ruff

* reduce overhead

* cleanup

* cleanup

* Revert changes alarm_control_panel

* Add sensor and binary sensor

* use same pattern for MqttAttributes/MqttAvailability

* remove useless function since we did not need to add to it

* code cleanup

* collapse

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-24 11:18:25 +02:00
Jan Bouwhuis 050fc73056 Refactor shared mqtt schema's to new module (#117944)
* Refactor mqtt schema's to new module

* Remove unrelated change
2024-05-23 01:12:25 +02:00
SidandJ. Nick Koston ac54cdcdb4 Enable Ruff RUF010 (#115371)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-08 23:54:49 +02:00
Marc Mueller 59a6035d3f Add empty line after module docstring [j-m] (#112700) 2024-03-08 09:01:29 -05:00
Jan Bouwhuis c7b6c9da31 Remove work-a-round for mqtt sensors with an entity_category set to config (#107199)
* 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 Bouwhuis db97e7588b Fix entity category for binary_sensor fails setup (#103511) 2023-11-08 14:10:24 +01:00
Jan Bouwhuis cbccdbc6fa Fix entity category for sensor fails mqtt sensor platform setup (#103449) 2023-11-08 00:03:47 +01:00
Jan Bouwhuis 4a4d2ad743 Fix mqtt config validation error handling (#103210)
* Fix MQTT config check

* Fix handling invalid enity_category for sensors

* Improve docstr

* Update comment

* Use correct util for yaml dump
2023-11-02 10:57:00 +01:00
Jan Bouwhuis 25ab622b51 Rename mqtt entry setup helpers to reflect their purpose (#102378)
Rename mqtt entry setup helpers
2023-10-20 13:36:24 +02:00
Jan Bouwhuis 651b725cc0 Do not fail MQTT setup if binary sensors configured via yaml can't be validated (#102300)
Add binary_sensor
2023-10-19 18:15:21 +02:00
Jan Bouwhuis db0c5bbbea Fix mqtt sensor or binary_sensor state not saved after expiry (#101670)
Fix mqtt sensor state not saved after expire
2023-10-08 20:57:14 +02:00
Jan BouwhuisandJ. Nick Koston 59a26010ba Cleanup redundant mqtt entity constructors (#100939)
* Remove redundant mqtt entity constructors

* Remove unrelated change

* Follow up comment

* Revert changes to mqtt update platform

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-09-26 23:03:11 +02:00
Jan Bouwhuis aed3ba3acd Avoid redundant calls to async_ha_write_state in MQTT (binary) sensor (#100438)
* Only call `async_ha_write_state` on changes.

* Make helper class

* Use UndefinedType

* Remove del

* Integrate monitor into MqttEntity

* Track extra state attributes and availability

* Add `__slots__`

* Add monitor to MqttAttributes and MqttAvailability

* Write out loop

* Add test

* Make common test and parameterize

* Add test for last_reset attribute

* MqttMonitorEntity base class

* Rename attr and update docstr `track` method.

* correction doct

* Implement as a decorator

* Move tracking functions into decorator

* Rename decorator

* Follow up comment
2023-09-21 13:33:26 +02:00
Jan Bouwhuis 677431ed71 Fix key error MQTT binary_sensor when no name is set (#99943)
Log entitty ID when instead of name
2023-09-08 19:10:17 +02:00
J. Nick Koston 6e743a5bb2 Switch mqtt to use async_call_later where possible (#99486) 2023-09-02 11:55:11 -05:00
Jan Bouwhuis 447fbf58c9 Change naming of MQTT entities to correspond with HA guidelines (#95159)
* Set has_entity_name if device_name is set

* revert unneeded formatting change

* Add image platform

* Follow up comment

* Don't set `has_entity_name` without device name

* Only set has_entity_name if a valid name is set

* Follow device_class name and add tests

* Follow up comments add extra tests

* Move to helper - Log a warning

* fix test

* Allow to assign None as name explictly

* Refactor

* Log info messages when device name is not set

* Revert scene schema change - no device link

* Always set has_entity_name with device mapping

* Always set `_attr_has_entity_name`

* Cleanup
2023-07-21 12:52:10 +02:00
Jan Bouwhuis 661aedde90 Remove MQTT platform schema warnings (#93785) 2023-05-31 09:02:48 +02:00
Franck Nijhof 5e81d28116 Update black to 23.1.0 (#87188) 2023-02-02 18:35:24 +01:00
Franck Nijhof 800b8abe39 Code styling tweaks to the MQTT integration (#85463) 2023-01-08 22:07:10 +01:00
Jan Bouwhuis ee21bc5d7f Allow MQTT device_class or state_class to be set as None (#85106)
* Allow MQTT device_class to be set as `None`

* Add test

* Also allow sensor state_class to be `None`
2023-01-04 15:21:07 +01:00
Franck Nijhof baef267f33 String formatting and max line length - Part 3 (#84394) 2022-12-22 13:35:47 +01:00
Jan Bouwhuis e15388a2a0 Improve MQTT type hints for dict get assignments (#83634)
* Improve type hints for dict get assignments

* Move _expire_after as class attr

* Remove extra check
2022-12-09 16:22:36 +01:00
Jan Bouwhuis 4335b0db25 Clean up or correct from removed deprecation for MQTT platform (#82684)
Clean up or correct from removed deprecation
2022-11-25 16:11:22 +01:00
Jan Bouwhuis 7c2e7863d2 Remove legacy YAML support from MQTT (#82102) 2022-11-17 22:55:31 +01:00
Jan Bouwhuis b4ad03784f Improve MQTT type hints part 1 (#80523)
* Improve typing alarm_control_panel

* Improve typing binary_sensor

* Improve typing button

* Add misssed annotation

* Move CONF_EXPIRE_AFTER to _setup_from_config

* Use CALL_BACK type

* Remove assert, improve code style
2022-11-02 20:33:18 +01:00
epenet a255546e9d Use attr in mqtt binary sensor and switch (#81403) 2022-11-02 13:41:14 +01:00
Jan Bouwhuis 8aa30cce26 Fix state saving when sharing topics for MQTT entities (#79421)
* Do not write old state sharing availability topic

* Add a test

* Support for all availability topics

* delay async_write_ha_state till last callback

* Process write req after processing callback jobs

* Do not count subscription callbacks

* Simplify

* Stale docsting

* No topic needed for delays state write

* No need to clear when reloading

* Move test to test_mixins.py

* Only set up sensor platform for test
2022-10-11 10:49:54 +02:00
Jan BouwhuisandErik 354411feed Link manually added MQTT entities the the MQTT config entry (#78547)
Co-authored-by: Erik <erik@montnemery.com>
2022-09-18 12:55:31 -04:00
epenet f62fbbe524 Use _attr_force_update in mqtt (#77902) 2022-09-07 23:42:16 +02:00
Jan BouwhuisandErik Montnemery 5930f056a8 Mqtt support config_entry unload (#70149)
* squashed commits for rebase

* Flake

* Fix reloading issue manual legacy items

* Improve ACS sync for unsubscribe at disconnect

* Processed review comments

* Update homeassistant/components/mqtt/client.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>

* No need to await entry setup

* Remove complication is_connected

* Update homeassistant/components/mqtt/__init__.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-07-12 11:07:18 +02:00
epenet 8ef87205f9 Improve type hints in mqtt (#74247) 2022-06-30 21:11:45 +02:00
Erik Montnemery f05b4a0ca0 Fire event_mqtt_reloaded only after reload is completed (#74226) 2022-06-30 10:15:25 -07:00
Jan Bouwhuis 57daeaa174 Fix MQTT config schema to ensure correct validation (#73619)
* Ensure config schema validation

* Use correct schema for device_tracker

* Remove schema validation from the platform setup

* Remove loop to build schema
2022-06-20 08:51:12 +02:00
Erik Montnemery b97d346df7 Fix reload of MQTT yaml config (#72901) 2022-06-02 11:32:31 -07:00
Erik Montnemery 635d7085cf Move MQTT config schemas and client to separate modules (#71995)
* Move MQTT config schemas and client to separate modules

* Update integrations depending on MQTT
2022-05-31 09:32:44 +02:00
Jan BouwhuisandErik Montnemery 17588c39a4 Move manual configuration of MQTT binary_sensor to the integration key (#72183)
Add binary_sensor

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-05-21 16:14:24 +02:00
Erik Montnemeryandjbouwh 7e8d52e5a3 Fix race when handling rapid succession of MQTT discovery messages (#68785)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2022-03-29 20:26:11 -07:00
Erik Montnemery be0ef5ad6c Correct MQTT binary_sensor and sensor state restoring (#66690) 2022-02-16 14:07:21 -08:00
Maciej Bieniek 41c43fe639 Fix type of value in MQTT binary sensor (#66675) 2022-02-16 12:11:50 -08:00
Erik Montnemery fe38e6ba87 Drop MQTT import flow (#66160)
* Drop MQTT import flow

* Reload manually configured MQTT entities when config entry is setup

* Address review comments

* Actually remove the import flow
2022-02-10 21:09:57 +01:00
Jan Bouwhuis 678e56b8b7 Mqtt move to .const (#65631) 2022-02-10 09:18:35 +01:00
Erik Montnemery 33623c3fe8 Fix race in MQTT sensor and binary_sensor expire_after (#66040) 2022-02-07 15:47:23 -08:00
Erik Montnemery f3a89de71f Fix race when handling updated MQTT discovery data (#65415) 2022-02-02 17:12:22 -08:00
Jan BouwhuisandErik Montnemery 2c07330794 Fix MQTT expire_after effects after reloading (#65359)
* Cleanup sensor expire triggers after reload

* fix test binary_sensor

* Also trigger cleanup parent classes

* Restore an expiring state after a reload

* correct discovery_update

* restore expiring state with remaining time

* Update homeassistant/components/mqtt/binary_sensor.py

description

Co-authored-by: Erik Montnemery <erik@montnemery.com>

* Log remaining time

* Move check

* check and tests reload

* remove self.async_write_ha_state()

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2022-02-02 16:14:52 +01:00
Jan Bouwhuis bfaada34e2 Allow unknown state to be set (#65183) 2022-01-31 10:25:08 +01:00