Fix device info for zwave_js device entities (#77821)
This commit is contained in:
parent
363f95c954
commit
d6cf416c63
4 changed files with 24 additions and 22 deletions
|
@ -9,11 +9,11 @@ from homeassistant.components.button import ButtonEntity
|
|||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
from homeassistant.helpers.entity import DeviceInfo, EntityCategory
|
||||
from homeassistant.helpers.entity import EntityCategory
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import DATA_CLIENT, DOMAIN, LOGGER
|
||||
from .helpers import get_device_id, get_valueless_base_unique_id
|
||||
from .helpers import get_device_info, get_valueless_base_unique_id
|
||||
|
||||
PARALLEL_UPDATES = 0
|
||||
|
||||
|
@ -58,10 +58,8 @@ class ZWaveNodePingButton(ButtonEntity):
|
|||
self._attr_name = f"{name}: Ping"
|
||||
self._base_unique_id = get_valueless_base_unique_id(driver, node)
|
||||
self._attr_unique_id = f"{self._base_unique_id}.ping"
|
||||
# device is precreated in main handler
|
||||
self._attr_device_info = DeviceInfo(
|
||||
identifiers={get_device_id(driver, node)},
|
||||
)
|
||||
# device may not be precreated in main handler yet
|
||||
self._attr_device_info = get_device_info(driver, node)
|
||||
|
||||
async def async_poll_value(self, _: bool) -> None:
|
||||
"""Poll a value."""
|
||||
|
|
|
@ -30,6 +30,7 @@ from homeassistant.const import (
|
|||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
||||
from homeassistant.helpers.entity import DeviceInfo
|
||||
from homeassistant.helpers.typing import ConfigType
|
||||
|
||||
from .const import (
|
||||
|
@ -413,3 +414,15 @@ def get_value_state_schema(
|
|||
vol.Coerce(int),
|
||||
vol.Range(min=value.metadata.min, max=value.metadata.max),
|
||||
)
|
||||
|
||||
|
||||
def get_device_info(driver: Driver, node: ZwaveNode) -> DeviceInfo:
|
||||
"""Get DeviceInfo for node."""
|
||||
return DeviceInfo(
|
||||
identifiers={get_device_id(driver, node)},
|
||||
sw_version=node.firmware_version,
|
||||
name=node.name or node.device_config.description or f"Node {node.node_id}",
|
||||
model=node.device_config.label,
|
||||
manufacturer=node.device_config.manufacturer,
|
||||
suggested_area=node.location if node.location else None,
|
||||
)
|
||||
|
|
|
@ -28,7 +28,7 @@ from homeassistant.core import HomeAssistant, callback
|
|||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers import entity_platform
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
from homeassistant.helpers.entity import DeviceInfo, EntityCategory
|
||||
from homeassistant.helpers.entity import EntityCategory
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import (
|
||||
|
@ -63,7 +63,7 @@ from .discovery_data_template import (
|
|||
NumericSensorDataTemplateData,
|
||||
)
|
||||
from .entity import ZWaveBaseEntity
|
||||
from .helpers import get_device_id, get_valueless_base_unique_id
|
||||
from .helpers import get_device_info, get_valueless_base_unique_id
|
||||
|
||||
PARALLEL_UPDATES = 0
|
||||
|
||||
|
@ -493,10 +493,8 @@ class ZWaveNodeStatusSensor(SensorEntity):
|
|||
self._attr_name = f"{name}: Node Status"
|
||||
self._base_unique_id = get_valueless_base_unique_id(driver, node)
|
||||
self._attr_unique_id = f"{self._base_unique_id}.node_status"
|
||||
# device is precreated in main handler
|
||||
self._attr_device_info = DeviceInfo(
|
||||
identifiers={get_device_id(driver, self.node)},
|
||||
)
|
||||
# device may not be precreated in main handler yet
|
||||
self._attr_device_info = get_device_info(driver, node)
|
||||
self._attr_native_value: str = node.status.name.lower()
|
||||
|
||||
async def async_poll_value(self, _: bool) -> None:
|
||||
|
|
|
@ -19,11 +19,11 @@ from homeassistant.config_entries import ConfigEntry
|
|||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
from homeassistant.helpers.entity import DeviceInfo, EntityCategory
|
||||
from homeassistant.helpers.entity import EntityCategory
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
from .const import API_KEY_FIRMWARE_UPDATE_SERVICE, DATA_CLIENT, DOMAIN, LOGGER
|
||||
from .helpers import get_device_id, get_valueless_base_unique_id
|
||||
from .helpers import get_device_info, get_valueless_base_unique_id
|
||||
|
||||
PARALLEL_UPDATES = 1
|
||||
SCAN_INTERVAL = timedelta(days=1)
|
||||
|
@ -75,14 +75,7 @@ class ZWaveNodeFirmwareUpdate(UpdateEntity):
|
|||
self._base_unique_id = get_valueless_base_unique_id(driver, node)
|
||||
self._attr_unique_id = f"{self._base_unique_id}.firmware_update"
|
||||
# device may not be precreated in main handler yet
|
||||
self._attr_device_info = DeviceInfo(
|
||||
identifiers={get_device_id(driver, node)},
|
||||
sw_version=node.firmware_version,
|
||||
name=node.name or node.device_config.description or f"Node {node.node_id}",
|
||||
model=node.device_config.label,
|
||||
manufacturer=node.device_config.manufacturer,
|
||||
suggested_area=node.location if node.location else None,
|
||||
)
|
||||
self._attr_device_info = get_device_info(driver, node)
|
||||
|
||||
self._attr_installed_version = self._attr_latest_version = node.firmware_version
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue