diff --git a/custom_components/mikrotik_router/__init__.py b/custom_components/mikrotik_router/__init__.py index 4e216c0..8db2eea 100644 --- a/custom_components/mikrotik_router/__init__.py +++ b/custom_components/mikrotik_router/__init__.py @@ -5,6 +5,12 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.exceptions import ConfigEntryNotReady + +from homeassistant.const import ( + CONF_NAME, + CONF_HOST, +) + from .const import ( DOMAIN, DATA_CLIENT, @@ -71,8 +77,16 @@ async def async_setup_entry(hass, config_entry): connections={(DOMAIN, controller.data["routerboard"]["serial-number"])}, manufacturer=controller.data["resource"]["platform"], model=controller.data["routerboard"]["model"], - name=controller.data["routerboard"]["model"], + name=f"{config_entry.data[CONF_NAME]} {controller.data['routerboard']['model']}", sw_version=controller.data["resource"]["version"], + configuration_url=f"http://{config_entry.data[CONF_HOST]}", + identifiers={ + DOMAIN, + "serial-number", + controller.data["routerboard"]["serial-number"], + "sensor", + f"{config_entry.data[CONF_NAME]} {controller.data['routerboard']['model']}", + } ) return True diff --git a/custom_components/mikrotik_router/binary_sensor.py b/custom_components/mikrotik_router/binary_sensor.py index e05494e..f5e34f9 100644 --- a/custom_components/mikrotik_router/binary_sensor.py +++ b/custom_components/mikrotik_router/binary_sensor.py @@ -10,6 +10,7 @@ from homeassistant.components.binary_sensor import ( ) from homeassistant.const import ( CONF_NAME, + CONF_HOST, ATTR_ATTRIBUTION, ) from homeassistant.core import callback @@ -264,10 +265,16 @@ class MikrotikControllerBinarySensor(BinarySensorEntity): @property def device_info(self) -> Dict[str, Any]: """Return a description for device registry.""" + if self._type[ATTR_GROUP] == "System": + self._type[ATTR_GROUP] = self._ctrl.data["resource"]["board-name"] + info = { + "connections": {(DOMAIN, self._ctrl.data["routerboard"]["serial-number"])}, "manufacturer": self._ctrl.data["resource"]["platform"], "model": self._ctrl.data["resource"]["board-name"], "name": f"{self._inst} {self._type[ATTR_GROUP]}", + "sw_version": self._ctrl.data["resource"]["version"], + "configuration_url": f"http://{self._ctrl.config_entry.data[CONF_HOST]}", } if ATTR_GROUP in self._type: info["identifiers"] = { @@ -276,7 +283,7 @@ class MikrotikControllerBinarySensor(BinarySensorEntity): "serial-number", self._ctrl.data["routerboard"]["serial-number"], "sensor", - self._type[ATTR_GROUP], + f"{self._inst} {self._type[ATTR_GROUP]}", ) } diff --git a/custom_components/mikrotik_router/sensor.py b/custom_components/mikrotik_router/sensor.py index 91180ef..04da9a8 100644 --- a/custom_components/mikrotik_router/sensor.py +++ b/custom_components/mikrotik_router/sensor.py @@ -5,6 +5,7 @@ from typing import Any, Dict, Optional from homeassistant.const import ( CONF_NAME, + CONF_HOST, ATTR_ATTRIBUTION, ATTR_DEVICE_CLASS, TEMP_CELSIUS, @@ -430,10 +431,16 @@ class MikrotikControllerSensor(SensorEntity): @property def device_info(self) -> Dict[str, Any]: """Return a description for device registry.""" + if self._type[ATTR_GROUP] == "System": + self._type[ATTR_GROUP] = self._ctrl.data["resource"]["board-name"] + info = { + "connections": {(DOMAIN, self._ctrl.data["routerboard"]["serial-number"])}, "manufacturer": self._ctrl.data["resource"]["platform"], "model": self._ctrl.data["resource"]["board-name"], "name": f"{self._inst} {self._type[ATTR_GROUP]}", + "sw_version": self._ctrl.data["resource"]["version"], + "configuration_url": f"http://{self._ctrl.config_entry.data[CONF_HOST]}", } if ATTR_GROUP in self._type: info["identifiers"] = { @@ -442,7 +449,7 @@ class MikrotikControllerSensor(SensorEntity): "serial-number", self._ctrl.data["routerboard"]["serial-number"], "sensor", - self._type[ATTR_GROUP], + f"{self._inst} {self._type[ATTR_GROUP]}", ) }