Use device registry in aten_pe (#61906)
This commit is contained in:
parent
e3848944e8
commit
b55b802aeb
3 changed files with 21 additions and 5 deletions
|
@ -2,7 +2,7 @@
|
||||||
"domain": "aten_pe",
|
"domain": "aten_pe",
|
||||||
"name": "ATEN Rack PDU",
|
"name": "ATEN Rack PDU",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/aten_pe",
|
"documentation": "https://www.home-assistant.io/integrations/aten_pe",
|
||||||
"requirements": ["atenpdu==0.3.0"],
|
"requirements": ["atenpdu==0.3.2"],
|
||||||
"codeowners": ["@mtdcr"],
|
"codeowners": ["@mtdcr"],
|
||||||
"iot_class": "local_polling"
|
"iot_class": "local_polling"
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,8 @@ from homeassistant.const import CONF_HOST, CONF_PORT, CONF_USERNAME
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import PlatformNotReady
|
from homeassistant.exceptions import PlatformNotReady
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC
|
||||||
|
from homeassistant.helpers.entity import DeviceInfo
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
|
||||||
|
@ -62,13 +64,24 @@ async def async_setup_platform(
|
||||||
await hass.async_add_executor_job(dev.initialize)
|
await hass.async_add_executor_job(dev.initialize)
|
||||||
mac = await dev.deviceMAC()
|
mac = await dev.deviceMAC()
|
||||||
outlets = dev.outlets()
|
outlets = dev.outlets()
|
||||||
|
name = await dev.deviceName()
|
||||||
|
model = await dev.modelName()
|
||||||
|
sw_version = await dev.deviceFWversion()
|
||||||
except AtenPEError as exc:
|
except AtenPEError as exc:
|
||||||
_LOGGER.error("Failed to initialize %s:%s: %s", node, serv, str(exc))
|
_LOGGER.error("Failed to initialize %s:%s: %s", node, serv, str(exc))
|
||||||
raise PlatformNotReady from exc
|
raise PlatformNotReady from exc
|
||||||
|
|
||||||
|
info = DeviceInfo(
|
||||||
|
connections={(CONNECTION_NETWORK_MAC, mac)},
|
||||||
|
manufacturer="ATEN",
|
||||||
|
model=model,
|
||||||
|
name=name,
|
||||||
|
sw_version=sw_version,
|
||||||
|
)
|
||||||
|
|
||||||
switches = []
|
switches = []
|
||||||
async for outlet in outlets:
|
async for outlet in outlets:
|
||||||
switches.append(AtenSwitch(dev, mac, outlet.id, outlet.name))
|
switches.append(AtenSwitch(dev, info, mac, outlet.id, outlet.name))
|
||||||
|
|
||||||
async_add_entities(switches, True)
|
async_add_entities(switches, True)
|
||||||
|
|
||||||
|
@ -78,10 +91,13 @@ class AtenSwitch(SwitchEntity):
|
||||||
|
|
||||||
_attr_device_class = SwitchDeviceClass.OUTLET
|
_attr_device_class = SwitchDeviceClass.OUTLET
|
||||||
|
|
||||||
def __init__(self, device, mac, outlet, name):
|
def __init__(
|
||||||
|
self, device: AtenPE, info: DeviceInfo, mac: str, outlet: str, name: str
|
||||||
|
) -> None:
|
||||||
"""Initialize an ATEN PE switch."""
|
"""Initialize an ATEN PE switch."""
|
||||||
self._device = device
|
self._device = device
|
||||||
self._outlet = outlet
|
self._outlet = outlet
|
||||||
|
self._attr_device_info = info
|
||||||
self._attr_unique_id = f"{mac}-{outlet}"
|
self._attr_unique_id = f"{mac}-{outlet}"
|
||||||
self._attr_name = name or f"Outlet {outlet}"
|
self._attr_name = name or f"Outlet {outlet}"
|
||||||
|
|
||||||
|
@ -101,6 +117,6 @@ class AtenSwitch(SwitchEntity):
|
||||||
if status == "on":
|
if status == "on":
|
||||||
self._attr_is_on = True
|
self._attr_is_on = True
|
||||||
self._attr_current_power_w = await self._device.outletPower(self._outlet)
|
self._attr_current_power_w = await self._device.outletPower(self._outlet)
|
||||||
else:
|
elif status == "off":
|
||||||
self._attr_is_on = False
|
self._attr_is_on = False
|
||||||
self._attr_current_power_w = 0.0
|
self._attr_current_power_w = 0.0
|
||||||
|
|
|
@ -353,7 +353,7 @@ async-upnp-client==0.23.3
|
||||||
asyncpysupla==0.0.5
|
asyncpysupla==0.0.5
|
||||||
|
|
||||||
# homeassistant.components.aten_pe
|
# homeassistant.components.aten_pe
|
||||||
atenpdu==0.3.0
|
atenpdu==0.3.2
|
||||||
|
|
||||||
# homeassistant.components.aurora
|
# homeassistant.components.aurora
|
||||||
auroranoaa==0.0.2
|
auroranoaa==0.0.2
|
||||||
|
|
Loading…
Add table
Reference in a new issue