Avoid constructing mqtt json attrs template if its not defined (#118146)

This commit is contained in:
J. Nick Koston 2024-05-25 16:13:54 -10:00 committed by GitHub
parent 0ae5275f01
commit 04101b044b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -387,9 +387,10 @@ class MqttAttributesMixin(Entity):
def _attributes_prepare_subscribe_topics(self) -> None:
"""(Re)Subscribe to topics."""
self._attr_tpl = MqttValueTemplate(
self._attributes_config.get(CONF_JSON_ATTRS_TEMPLATE), entity=self
).async_render_with_possible_json_value
if template := self._attributes_config.get(CONF_JSON_ATTRS_TEMPLATE):
self._attr_tpl = MqttValueTemplate(
template, entity=self
).async_render_with_possible_json_value
self._attributes_sub_state = async_prepare_subscribe_topics(
self.hass,
self._attributes_sub_state,
@ -422,9 +423,9 @@ class MqttAttributesMixin(Entity):
@callback
def _attributes_message_received(self, msg: ReceiveMessage) -> None:
"""Update extra state attributes."""
if TYPE_CHECKING:
assert self._attr_tpl is not None
payload = self._attr_tpl(msg.payload)
payload = (
self._attr_tpl(msg.payload) if self._attr_tpl is not None else msg.payload
)
try:
json_dict = json_loads(payload) if isinstance(payload, str) else None
except ValueError: