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
fca9052430
commit
2b46734bd3
2 changed files with 26 additions and 1 deletions
|
@ -137,8 +137,11 @@ class CommandSensor(SensorEntity):
|
|||
_LOGGER.warning("Unable to parse output as JSON: %s", value)
|
||||
else:
|
||||
_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._value_template.async_render_with_possible_json_value(
|
||||
value,
|
||||
|
|
|
@ -169,6 +169,28 @@ async def test_update_with_json_attrs(hass: HomeAssistant) -> None:
|
|||
)
|
||||
entity_state = hass.states.get("sensor.test")
|
||||
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["another_key"] == "another_json_value"
|
||||
assert entity_state.attributes["key_three"] == "value_three"
|
||||
|
|
Loading…
Add table
Reference in a new issue