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.config_entries import ConfigEntry
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
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 homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from .const import DATA_CLIENT, DOMAIN, LOGGER
|
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
|
PARALLEL_UPDATES = 0
|
||||||
|
|
||||||
|
@ -58,10 +58,8 @@ class ZWaveNodePingButton(ButtonEntity):
|
||||||
self._attr_name = f"{name}: Ping"
|
self._attr_name = f"{name}: Ping"
|
||||||
self._base_unique_id = get_valueless_base_unique_id(driver, node)
|
self._base_unique_id = get_valueless_base_unique_id(driver, node)
|
||||||
self._attr_unique_id = f"{self._base_unique_id}.ping"
|
self._attr_unique_id = f"{self._base_unique_id}.ping"
|
||||||
# device is precreated in main handler
|
# device may not be precreated in main handler yet
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = get_device_info(driver, node)
|
||||||
identifiers={get_device_id(driver, node)},
|
|
||||||
)
|
|
||||||
|
|
||||||
async def async_poll_value(self, _: bool) -> None:
|
async def async_poll_value(self, _: bool) -> None:
|
||||||
"""Poll a value."""
|
"""Poll a value."""
|
||||||
|
|
|
@ -30,6 +30,7 @@ from homeassistant.const import (
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers import device_registry as dr, entity_registry as er
|
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 homeassistant.helpers.typing import ConfigType
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
|
@ -413,3 +414,15 @@ def get_value_state_schema(
|
||||||
vol.Coerce(int),
|
vol.Coerce(int),
|
||||||
vol.Range(min=value.metadata.min, max=value.metadata.max),
|
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.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers import entity_platform
|
from homeassistant.helpers import entity_platform
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
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 homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
|
@ -63,7 +63,7 @@ from .discovery_data_template import (
|
||||||
NumericSensorDataTemplateData,
|
NumericSensorDataTemplateData,
|
||||||
)
|
)
|
||||||
from .entity import ZWaveBaseEntity
|
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
|
PARALLEL_UPDATES = 0
|
||||||
|
|
||||||
|
@ -493,10 +493,8 @@ class ZWaveNodeStatusSensor(SensorEntity):
|
||||||
self._attr_name = f"{name}: Node Status"
|
self._attr_name = f"{name}: Node Status"
|
||||||
self._base_unique_id = get_valueless_base_unique_id(driver, node)
|
self._base_unique_id = get_valueless_base_unique_id(driver, node)
|
||||||
self._attr_unique_id = f"{self._base_unique_id}.node_status"
|
self._attr_unique_id = f"{self._base_unique_id}.node_status"
|
||||||
# device is precreated in main handler
|
# device may not be precreated in main handler yet
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = get_device_info(driver, node)
|
||||||
identifiers={get_device_id(driver, self.node)},
|
|
||||||
)
|
|
||||||
self._attr_native_value: str = node.status.name.lower()
|
self._attr_native_value: str = node.status.name.lower()
|
||||||
|
|
||||||
async def async_poll_value(self, _: bool) -> None:
|
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.core import HomeAssistant, callback
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
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 homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
from .const import API_KEY_FIRMWARE_UPDATE_SERVICE, DATA_CLIENT, DOMAIN, LOGGER
|
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
|
PARALLEL_UPDATES = 1
|
||||||
SCAN_INTERVAL = timedelta(days=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._base_unique_id = get_valueless_base_unique_id(driver, node)
|
||||||
self._attr_unique_id = f"{self._base_unique_id}.firmware_update"
|
self._attr_unique_id = f"{self._base_unique_id}.firmware_update"
|
||||||
# device may not be precreated in main handler yet
|
# device may not be precreated in main handler yet
|
||||||
self._attr_device_info = DeviceInfo(
|
self._attr_device_info = get_device_info(driver, node)
|
||||||
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_installed_version = self._attr_latest_version = node.firmware_version
|
self._attr_installed_version = self._attr_latest_version = node.firmware_version
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue