mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 17:57:11 +00:00
Show NUT device serial number if provided in Device Info (#124168)
This commit is contained in:
parent
f11aba9648
commit
a05a34239d
@ -131,6 +131,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: NutConfigEntry) -> bool:
|
|||||||
manufacturer=data.device_info.manufacturer,
|
manufacturer=data.device_info.manufacturer,
|
||||||
model=data.device_info.model,
|
model=data.device_info.model,
|
||||||
sw_version=data.device_info.firmware,
|
sw_version=data.device_info.firmware,
|
||||||
|
serial_number=data.device_info.serial,
|
||||||
)
|
)
|
||||||
|
|
||||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
@ -209,6 +210,7 @@ class NUTDeviceInfo:
|
|||||||
manufacturer: str | None = None
|
manufacturer: str | None = None
|
||||||
model: str | None = None
|
model: str | None = None
|
||||||
firmware: str | None = None
|
firmware: str | None = None
|
||||||
|
serial: str | None = None
|
||||||
|
|
||||||
|
|
||||||
class PyNUTData:
|
class PyNUTData:
|
||||||
@ -268,7 +270,8 @@ class PyNUTData:
|
|||||||
manufacturer = _manufacturer_from_status(self._status)
|
manufacturer = _manufacturer_from_status(self._status)
|
||||||
model = _model_from_status(self._status)
|
model = _model_from_status(self._status)
|
||||||
firmware = _firmware_from_status(self._status)
|
firmware = _firmware_from_status(self._status)
|
||||||
return NUTDeviceInfo(manufacturer, model, firmware)
|
serial = _serial_from_status(self._status)
|
||||||
|
return NUTDeviceInfo(manufacturer, model, firmware, serial)
|
||||||
|
|
||||||
async def _async_get_status(self) -> dict[str, str]:
|
async def _async_get_status(self) -> dict[str, str]:
|
||||||
"""Get the ups status from NUT."""
|
"""Get the ups status from NUT."""
|
||||||
|
@ -15,6 +15,7 @@ from homeassistant.components.sensor import (
|
|||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_MANUFACTURER,
|
ATTR_MANUFACTURER,
|
||||||
ATTR_MODEL,
|
ATTR_MODEL,
|
||||||
|
ATTR_SERIAL_NUMBER,
|
||||||
ATTR_SW_VERSION,
|
ATTR_SW_VERSION,
|
||||||
PERCENTAGE,
|
PERCENTAGE,
|
||||||
STATE_UNKNOWN,
|
STATE_UNKNOWN,
|
||||||
@ -42,6 +43,7 @@ NUT_DEV_INFO_TO_DEV_INFO: dict[str, str] = {
|
|||||||
"manufacturer": ATTR_MANUFACTURER,
|
"manufacturer": ATTR_MANUFACTURER,
|
||||||
"model": ATTR_MODEL,
|
"model": ATTR_MODEL,
|
||||||
"firmware": ATTR_SW_VERSION,
|
"firmware": ATTR_SW_VERSION,
|
||||||
|
"serial": ATTR_SERIAL_NUMBER,
|
||||||
}
|
}
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
@ -8,8 +8,9 @@ from homeassistant.components.nut.const import DOMAIN
|
|||||||
from homeassistant.config_entries import ConfigEntryState
|
from homeassistant.config_entries import ConfigEntryState
|
||||||
from homeassistant.const import CONF_HOST, CONF_PORT, STATE_UNAVAILABLE
|
from homeassistant.const import CONF_HOST, CONF_PORT, STATE_UNAVAILABLE
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.helpers import device_registry as dr
|
||||||
|
|
||||||
from .util import _get_mock_nutclient
|
from .util import _get_mock_nutclient, async_init_integration
|
||||||
|
|
||||||
from tests.common import MockConfigEntry
|
from tests.common import MockConfigEntry
|
||||||
|
|
||||||
@ -96,3 +97,26 @@ async def test_auth_fails(hass: HomeAssistant) -> None:
|
|||||||
flows = hass.config_entries.flow.async_progress()
|
flows = hass.config_entries.flow.async_progress()
|
||||||
assert len(flows) == 1
|
assert len(flows) == 1
|
||||||
assert flows[0]["context"]["source"] == "reauth"
|
assert flows[0]["context"]["source"] == "reauth"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_serial_number(hass: HomeAssistant) -> None:
|
||||||
|
"""Test for serial number set on device."""
|
||||||
|
mock_serial_number = "A00000000000"
|
||||||
|
await async_init_integration(
|
||||||
|
hass,
|
||||||
|
username="someuser",
|
||||||
|
password="somepassword",
|
||||||
|
list_vars={"ups.serial": mock_serial_number},
|
||||||
|
list_ups={"ups1": "UPS 1"},
|
||||||
|
list_commands_return_value=[],
|
||||||
|
)
|
||||||
|
|
||||||
|
device_registry = dr.async_get(hass)
|
||||||
|
assert device_registry is not None
|
||||||
|
|
||||||
|
device_entry = device_registry.async_get_device(
|
||||||
|
identifiers={(DOMAIN, mock_serial_number)}
|
||||||
|
)
|
||||||
|
|
||||||
|
assert device_entry is not None
|
||||||
|
assert device_entry.serial_number == mock_serial_number
|
||||||
|
Loading…
x
Reference in New Issue
Block a user