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