* Publish raw rendered mqtt payload as raw for mqtt publish action
* Move check out of try block
* Only try to eval `bytes` is payload starts with supported string
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Improve docst
* Add `evaluate_bytes` option to publish action
* Rename to `evaluate_payload`
* Update homeassistant/components/mqtt/strings.json
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Extend test to assert literal_eval is called or not
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Cleanup unneeded assignment of hass property on MQTT Template objects
* Commented out code and unneeded checks
* Consistent assign hass to Template in mqtt tests
* Remove unused hass attribute
* Missed line
* 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>
* Improve error logging on invalid MQTT entity state
* Explain not hanlding TpeError and ValueError
* Move length check closer to source
* use _LOGGER.exception
* 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
* Log entity_id payload and template on error
* Also handle cases with default values.
* Do not log payload twice
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Tweak test to assert without payload
* black
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* 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
* Cleanup config merging and adding defaults
* Optimize and update tests
* Do not mix entry and yaml config
* Make sure hass.data is initilized
* remove check on get_mqtt_data
* Tweaks to MQTT client
* Remove None assigment mqtt client and fix mock
* Catch exceptions when writing states
* Do not use wrapper for logging and adjust tests
* Catch logging directly on async_write_ha_state()
* Update homeassistant/components/mqtt/models.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fix test
---------
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* 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
* Add MQTT debug_info to dataclass
* Remove total attr, assign factory
* Rename typed dict to MqttDebugInfo and use helper
* Split entity and trigger debug info
* Refactor
* More rework
* Add `this` object to MQTT templates
* Only set once, remove hass guard
* Set once if there is a state
* Add tests TemplateStateFromEntityId calls once