Log entity_id payload and template on MQTT value template error (#98353)

* 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>
This commit is contained in:
Jan Bouwhuis 2023-08-18 13:05:53 +02:00 committed by GitHub
parent 80a5e341b5
commit 5ef6c03610
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 7 deletions

View file

@ -231,11 +231,21 @@ class MqttValueTemplate:
values,
self._value_template,
)
rendered_payload = (
self._value_template.async_render_with_possible_json_value(
payload, variables=values
try:
rendered_payload = (
self._value_template.async_render_with_possible_json_value(
payload, variables=values
)
)
)
except Exception as ex: # pylint: disable=broad-except
_LOGGER.error(
"%s: %s rendering template for entity '%s', template: '%s'",
type(ex).__name__,
ex,
self._entity.entity_id if self._entity else "n/a",
self._value_template.template,
)
raise ex
return rendered_payload
_LOGGER.debug(
@ -248,9 +258,24 @@ class MqttValueTemplate:
default,
self._value_template,
)
rendered_payload = self._value_template.async_render_with_possible_json_value(
payload, default, variables=values
)
try:
rendered_payload = (
self._value_template.async_render_with_possible_json_value(
payload, default, variables=values
)
)
except Exception as ex: # pylint: disable=broad-except
_LOGGER.error(
"%s: %s rendering template for entity '%s', template: "
"'%s', default value: %s and payload: %s",
type(ex).__name__,
ex,
self._entity.entity_id if self._entity else "n/a",
self._value_template.template,
default,
payload,
)
raise ex
return rendered_payload