Make zwave_js last seen sensor enabled by default (#109191)
* Make zwave_js last seen sensor enabled by default * Add test * Fix test * improve tests
This commit is contained in:
parent
08f8f84f61
commit
2b525ed2e9
5 changed files with 48 additions and 19 deletions
|
@ -343,6 +343,7 @@ class ZWaveJSStatisticsSensorEntityDescription(SensorEntityDescription):
|
|||
convert: Callable[
|
||||
[ControllerStatisticsDataType | NodeStatisticsDataType, str], Any
|
||||
] = lambda statistics, key: statistics.get(key)
|
||||
entity_registry_enabled_default: bool = False
|
||||
|
||||
|
||||
# Controller statistics descriptions
|
||||
|
@ -487,6 +488,7 @@ ENTITY_DESCRIPTION_NODE_STATISTICS_LIST = [
|
|||
else None
|
||||
)
|
||||
),
|
||||
entity_registry_enabled_default=True,
|
||||
),
|
||||
]
|
||||
|
||||
|
@ -930,7 +932,6 @@ class ZWaveStatisticsSensor(SensorEntity):
|
|||
entity_description: ZWaveJSStatisticsSensorEntityDescription
|
||||
_attr_should_poll = False
|
||||
_attr_entity_category = EntityCategory.DIAGNOSTIC
|
||||
_attr_entity_registry_enabled_default = False
|
||||
_attr_has_entity_name = True
|
||||
|
||||
def __init__(
|
||||
|
|
|
@ -694,7 +694,8 @@
|
|||
"commandsRX": 0,
|
||||
"commandsDroppedRX": 0,
|
||||
"commandsDroppedTX": 0,
|
||||
"timeoutResponse": 0
|
||||
"timeoutResponse": 0,
|
||||
"lastSeen": "2024-01-01T12:00:00+00"
|
||||
},
|
||||
"highestSecurityClass": -1,
|
||||
"isControllerNode": false
|
||||
|
|
|
@ -22,9 +22,10 @@ from homeassistant.components.zwave_js.discovery import (
|
|||
from homeassistant.components.zwave_js.discovery_data_template import (
|
||||
DynamicCurrentTempClimateDataTemplate,
|
||||
)
|
||||
from homeassistant.components.zwave_js.helpers import get_device_id
|
||||
from homeassistant.const import ATTR_ENTITY_ID, STATE_OFF, STATE_UNKNOWN, EntityCategory
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import entity_registry as er
|
||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||
|
||||
|
||||
async def test_iblinds_v2(hass: HomeAssistant, client, iblinds_v2, integration) -> None:
|
||||
|
@ -224,14 +225,21 @@ async def test_indicator_test(
|
|||
|
||||
This test covers indicators that we don't already have device fixtures for.
|
||||
"""
|
||||
device = dr.async_get(hass).async_get_device(
|
||||
identifiers={get_device_id(client.driver, indicator_test)}
|
||||
)
|
||||
assert device
|
||||
ent_reg = er.async_get(hass)
|
||||
assert len(hass.states.async_entity_ids(NUMBER_DOMAIN)) == 0
|
||||
assert len(hass.states.async_entity_ids(BUTTON_DOMAIN)) == 1 # only ping
|
||||
assert len(hass.states.async_entity_ids(BINARY_SENSOR_DOMAIN)) == 1
|
||||
assert (
|
||||
len(hass.states.async_entity_ids(SENSOR_DOMAIN)) == 3
|
||||
) # include node + controller status
|
||||
assert len(hass.states.async_entity_ids(SWITCH_DOMAIN)) == 1
|
||||
entities = er.async_entries_for_device(ent_reg, device.id)
|
||||
|
||||
def len_domain(domain):
|
||||
return len([entity for entity in entities if entity.domain == domain])
|
||||
|
||||
assert len_domain(NUMBER_DOMAIN) == 0
|
||||
assert len_domain(BUTTON_DOMAIN) == 1 # only ping
|
||||
assert len_domain(BINARY_SENSOR_DOMAIN) == 1
|
||||
assert len_domain(SENSOR_DOMAIN) == 3 # include node status + last seen
|
||||
assert len_domain(SWITCH_DOMAIN) == 1
|
||||
|
||||
entity_id = "binary_sensor.this_is_a_fake_device_binary_sensor"
|
||||
entry = ent_reg.async_get(entity_id)
|
||||
|
|
|
@ -227,14 +227,16 @@ async def test_on_node_added_not_ready(
|
|||
client.driver.receive_event(event)
|
||||
await hass.async_block_till_done()
|
||||
|
||||
# the only entities are the node status sensor and ping button
|
||||
assert len(hass.states.async_all()) == 3
|
||||
|
||||
device = dev_reg.async_get_device(identifiers={(DOMAIN, device_id)})
|
||||
assert device
|
||||
# no extended device identifier yet
|
||||
assert len(device.identifiers) == 1
|
||||
|
||||
ent_reg = er.async_get(hass)
|
||||
entities = er.async_entries_for_device(ent_reg, device.id)
|
||||
# the only entities are the node status sensor, last_seen sensor, and ping button
|
||||
assert len(entities) == 3
|
||||
|
||||
|
||||
async def test_existing_node_ready(
|
||||
hass: HomeAssistant, client, multisensor_6, integration
|
||||
|
@ -329,14 +331,16 @@ async def test_existing_node_not_ready(
|
|||
assert not device.model
|
||||
assert not device.sw_version
|
||||
|
||||
# the only entities are the node status sensor and ping button
|
||||
assert len(hass.states.async_all()) == 3
|
||||
|
||||
device = dev_reg.async_get_device(identifiers={(DOMAIN, device_id)})
|
||||
assert device
|
||||
# no extended device identifier yet
|
||||
assert len(device.identifiers) == 1
|
||||
|
||||
ent_reg = er.async_get(hass)
|
||||
entities = er.async_entries_for_device(ent_reg, device.id)
|
||||
# the only entities are the node status sensor, last_seen sensor, and ping button
|
||||
assert len(entities) == 3
|
||||
|
||||
|
||||
async def test_existing_node_not_replaced_when_not_ready(
|
||||
hass: HomeAssistant,
|
||||
|
|
|
@ -731,14 +731,13 @@ NODE_STATISTICS_SUFFIXES = {
|
|||
NODE_STATISTICS_SUFFIXES_UNKNOWN = {
|
||||
"round_trip_time": 6,
|
||||
"rssi": 7,
|
||||
"last_seen": "2024-01-01T00:00:00+00:00",
|
||||
}
|
||||
|
||||
|
||||
async def test_statistics_sensors(
|
||||
async def test_statistics_sensors_no_last_seen(
|
||||
hass: HomeAssistant, zp3111, client, integration, caplog: pytest.LogCaptureFixture
|
||||
) -> None:
|
||||
"""Test statistics sensors."""
|
||||
"""Test all statistics sensors but last seen which is enabled by default."""
|
||||
ent_reg = er.async_get(hass)
|
||||
|
||||
for prefix, suffixes in (
|
||||
|
@ -880,6 +879,22 @@ async def test_statistics_sensors(
|
|||
)
|
||||
|
||||
|
||||
async def test_last_seen_statistics_sensors(
|
||||
hass: HomeAssistant, zp3111, client, integration
|
||||
) -> None:
|
||||
"""Test last_seen statistics sensors."""
|
||||
ent_reg = er.async_get(hass)
|
||||
|
||||
entity_id = f"{NODE_STATISTICS_ENTITY_PREFIX}last_seen"
|
||||
entry = ent_reg.async_get(entity_id)
|
||||
assert entry
|
||||
assert not entry.disabled
|
||||
|
||||
state = hass.states.get(entity_id)
|
||||
assert state
|
||||
assert state.state == "2024-01-01T12:00:00+00:00"
|
||||
|
||||
|
||||
ENERGY_PRODUCTION_ENTITY_MAP = {
|
||||
"energy_production_power": {
|
||||
"state": 1.23,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue