mirror of
https://github.com/home-assistant/core.git
synced 2025-11-12 20:40:18 +00:00
Add discovery schemas for Matter 1.3 power/energy sensors (#125403)
* Add missing discovery schemas for (Matter 1.3) Power/Energy measurements * Prevent discovery of custom cluster if 1.3 cluster present * add tests * Use f-strings --------- Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
committed by
GitHub
parent
b8c3a44d81
commit
cbd884d54a
@@ -74,6 +74,16 @@ async def eve_energy_plug_node_fixture(
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(name="eve_energy_plug_patched_node")
|
||||
async def eve_energy_plug_patched_node_fixture(
|
||||
hass: HomeAssistant, matter_client: MagicMock
|
||||
) -> MatterNode:
|
||||
"""Fixture for a Eve Energy Plug node (patched to include Matter 1.3 energy clusters)."""
|
||||
return await setup_integration_with_node_fixture(
|
||||
hass, "eve-energy-plug-patched", matter_client
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(name="air_quality_sensor_node")
|
||||
async def air_quality_sensor_node_fixture(
|
||||
hass: HomeAssistant, matter_client: MagicMock
|
||||
@@ -243,14 +253,14 @@ async def test_battery_sensor(
|
||||
|
||||
# This tests needs to be adjusted to remove lingering tasks
|
||||
@pytest.mark.parametrize("expected_lingering_tasks", [True])
|
||||
async def test_eve_energy_sensors(
|
||||
async def test_energy_sensors_custom_cluster(
|
||||
hass: HomeAssistant,
|
||||
entity_registry: er.EntityRegistry,
|
||||
matter_client: MagicMock,
|
||||
eve_energy_plug_node: MatterNode,
|
||||
) -> None:
|
||||
"""Test Energy sensors created from Eve Energy custom cluster."""
|
||||
# power sensor
|
||||
"""Test Energy sensors created from (Eve) custom cluster (Matter 1.3 energy clusters absent)."""
|
||||
# power sensor on Eve custom cluster
|
||||
entity_id = "sensor.eve_energy_plug_power"
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
@@ -259,7 +269,7 @@ async def test_eve_energy_sensors(
|
||||
assert state.attributes["device_class"] == "power"
|
||||
assert state.attributes["friendly_name"] == "Eve Energy Plug Power"
|
||||
|
||||
# voltage sensor
|
||||
# voltage sensor on Eve custom cluster
|
||||
entity_id = "sensor.eve_energy_plug_voltage"
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
@@ -268,7 +278,7 @@ async def test_eve_energy_sensors(
|
||||
assert state.attributes["device_class"] == "voltage"
|
||||
assert state.attributes["friendly_name"] == "Eve Energy Plug Voltage"
|
||||
|
||||
# energy sensor
|
||||
# energy sensor on Eve custom cluster
|
||||
entity_id = "sensor.eve_energy_plug_energy"
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
@@ -278,7 +288,7 @@ async def test_eve_energy_sensors(
|
||||
assert state.attributes["friendly_name"] == "Eve Energy Plug Energy"
|
||||
assert state.attributes["state_class"] == "total_increasing"
|
||||
|
||||
# current sensor
|
||||
# current sensor on Eve custom cluster
|
||||
entity_id = "sensor.eve_energy_plug_current"
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
@@ -288,6 +298,65 @@ async def test_eve_energy_sensors(
|
||||
assert state.attributes["friendly_name"] == "Eve Energy Plug Current"
|
||||
|
||||
|
||||
# This tests needs to be adjusted to remove lingering tasks
|
||||
@pytest.mark.parametrize("expected_lingering_tasks", [True])
|
||||
async def test_energy_sensors(
|
||||
hass: HomeAssistant,
|
||||
entity_registry: er.EntityRegistry,
|
||||
matter_client: MagicMock,
|
||||
eve_energy_plug_patched_node: MatterNode,
|
||||
) -> None:
|
||||
"""Test Energy sensors created from official Matter 1.3 energy clusters."""
|
||||
# power sensor on Matter 1.3 ElectricalPowermeasurement cluster
|
||||
entity_id = "sensor.eve_energy_plug_patched_power"
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
assert state.state == "550.0"
|
||||
assert state.attributes["unit_of_measurement"] == "W"
|
||||
assert state.attributes["device_class"] == "power"
|
||||
assert state.attributes["friendly_name"] == "Eve Energy Plug Patched Power"
|
||||
# ensure we do not have a duplicated entity from the custom cluster
|
||||
state = hass.states.get(f"{entity_id}_1")
|
||||
assert state is None
|
||||
|
||||
# voltage sensor on Matter 1.3 ElectricalPowermeasurement cluster
|
||||
entity_id = "sensor.eve_energy_plug_patched_voltage"
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
assert state.state == "220.0"
|
||||
assert state.attributes["unit_of_measurement"] == "V"
|
||||
assert state.attributes["device_class"] == "voltage"
|
||||
assert state.attributes["friendly_name"] == "Eve Energy Plug Patched Voltage"
|
||||
# ensure we do not have a duplicated entity from the custom cluster
|
||||
state = hass.states.get(f"{entity_id}_1")
|
||||
assert state is None
|
||||
|
||||
# energy sensor on Matter 1.3 ElectricalEnergymeasurement cluster
|
||||
entity_id = "sensor.eve_energy_plug_patched_energy"
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
assert state.state == "0.0025"
|
||||
assert state.attributes["unit_of_measurement"] == "kWh"
|
||||
assert state.attributes["device_class"] == "energy"
|
||||
assert state.attributes["friendly_name"] == "Eve Energy Plug Patched Energy"
|
||||
assert state.attributes["state_class"] == "total_increasing"
|
||||
# ensure we do not have a duplicated entity from the custom cluster
|
||||
state = hass.states.get(f"{entity_id}_1")
|
||||
assert state is None
|
||||
|
||||
# current sensor on Matter 1.3 ElectricalPowermeasurement cluster
|
||||
entity_id = "sensor.eve_energy_plug_patched_current"
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
assert state.state == "2.0"
|
||||
assert state.attributes["unit_of_measurement"] == "A"
|
||||
assert state.attributes["device_class"] == "current"
|
||||
assert state.attributes["friendly_name"] == "Eve Energy Plug Patched Current"
|
||||
# ensure we do not have a duplicated entity from the custom cluster
|
||||
state = hass.states.get(f"{entity_id}_1")
|
||||
assert state is None
|
||||
|
||||
|
||||
# This tests needs to be adjusted to remove lingering tasks
|
||||
@pytest.mark.parametrize("expected_lingering_tasks", [True])
|
||||
async def test_air_quality_sensor(
|
||||
|
||||
Reference in New Issue
Block a user