mirror of
https://github.com/home-assistant/core.git
synced 2025-07-21 12:17:07 +00:00
Fix command_template sensor value_template not being used if json_attributes set (#90603)
* Allow value_template to be used if json_attributes set * Set state to None if no value_template and json_attributes used * Refactor check for no value_template when json_attributes used * Updated and additional unit test * Updated to set _attr_native_value and return if value_template is None * Update unit test docstring * Updated test docstring based on feedback
This commit is contained in:
parent
e8a6a2e105
commit
cfd8695aaa
@ -137,8 +137,11 @@ class CommandSensor(SensorEntity):
|
|||||||
_LOGGER.warning("Unable to parse output as JSON: %s", value)
|
_LOGGER.warning("Unable to parse output as JSON: %s", value)
|
||||||
else:
|
else:
|
||||||
_LOGGER.warning("Empty reply found when expecting JSON data")
|
_LOGGER.warning("Empty reply found when expecting JSON data")
|
||||||
|
if self._value_template is None:
|
||||||
|
self._attr_native_value = None
|
||||||
|
return
|
||||||
|
|
||||||
elif self._value_template is not None:
|
if self._value_template is not None:
|
||||||
self._attr_native_value = (
|
self._attr_native_value = (
|
||||||
self._value_template.async_render_with_possible_json_value(
|
self._value_template.async_render_with_possible_json_value(
|
||||||
value,
|
value,
|
||||||
|
@ -169,6 +169,28 @@ async def test_update_with_json_attrs(hass: HomeAssistant) -> None:
|
|||||||
)
|
)
|
||||||
entity_state = hass.states.get("sensor.test")
|
entity_state = hass.states.get("sensor.test")
|
||||||
assert entity_state
|
assert entity_state
|
||||||
|
assert entity_state.state == "unknown"
|
||||||
|
assert entity_state.attributes["key"] == "some_json_value"
|
||||||
|
assert entity_state.attributes["another_key"] == "another_json_value"
|
||||||
|
assert entity_state.attributes["key_three"] == "value_three"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_update_with_json_attrs_and_value_template(hass: HomeAssistant) -> None:
|
||||||
|
"""Test json_attributes can be used together with value_template."""
|
||||||
|
await setup_test_entities(
|
||||||
|
hass,
|
||||||
|
{
|
||||||
|
"command": (
|
||||||
|
'echo { \\"key\\": \\"some_json_value\\", \\"another_key\\": '
|
||||||
|
'\\"another_json_value\\", \\"key_three\\": \\"value_three\\" }'
|
||||||
|
),
|
||||||
|
"json_attributes": ["key", "another_key", "key_three"],
|
||||||
|
"value_template": '{{ value_json["key"] }}',
|
||||||
|
},
|
||||||
|
)
|
||||||
|
entity_state = hass.states.get("sensor.test")
|
||||||
|
assert entity_state
|
||||||
|
assert entity_state.state == "some_json_value"
|
||||||
assert entity_state.attributes["key"] == "some_json_value"
|
assert entity_state.attributes["key"] == "some_json_value"
|
||||||
assert entity_state.attributes["another_key"] == "another_json_value"
|
assert entity_state.attributes["another_key"] == "another_json_value"
|
||||||
assert entity_state.attributes["key_three"] == "value_three"
|
assert entity_state.attributes["key_three"] == "value_three"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user