sensor entity code cleanup

This commit is contained in:
tomaae 2021-12-15 02:06:27 +01:00
parent 86a4dd358f
commit e372ebbfff
2 changed files with 44 additions and 54 deletions

View file

@ -227,28 +227,24 @@ def update_items(inst, config_entry, mikrotik_controller, async_add_entities, se
class MikrotikControllerBinarySensor(BinarySensorEntity): class MikrotikControllerBinarySensor(BinarySensorEntity):
"""Define an Mikrotik Controller Binary Sensor.""" """Define an Mikrotik Controller Binary Sensor."""
def __init__(self, mikrotik_controller, inst, sensor): def __init__(self, mikrotik_controller, inst, sid_data):
"""Initialize.""" """Initialize."""
self._inst = inst self._inst = inst
self._sensor = sensor self._sensor = sid_data
self._ctrl = mikrotik_controller self._ctrl = mikrotik_controller
if sensor in SENSOR_TYPES: if sid_data in SENSOR_TYPES:
self._data = mikrotik_controller.data[SENSOR_TYPES[sensor][ATTR_PATH]] self._data = mikrotik_controller.data[SENSOR_TYPES[sid_data][ATTR_PATH]]
self._type = SENSOR_TYPES[sensor] self._type = SENSOR_TYPES[sid_data]
self._attr = SENSOR_TYPES[sensor][ATTR_ATTR] self._attr = SENSOR_TYPES[sid_data][ATTR_ATTR]
self._dcls = SENSOR_TYPES[sid_data][ATTR_DEVICE_CLASS]
self._ctgr = SENSOR_TYPES[sid_data][ATTR_CTGR]
else: else:
self._type = {} self._type = {}
self._attr = None self._attr = None
self._dcls = None
self._ctgr = None
if ATTR_CTGR in self._type:
self._entity_category = self._type[ATTR_CTGR]
else:
self._entity_category = None
self._device_class = None
self._state = None self._state = None
self._icon = None
self._unit_of_measurement = None
self._attrs = {ATTR_ATTRIBUTION: ATTRIBUTION} self._attrs = {ATTR_ATTRIBUTION: ATTRIBUTION}
@property @property
@ -264,10 +260,7 @@ class MikrotikControllerBinarySensor(BinarySensorEntity):
@property @property
def device_class(self) -> Optional[str]: def device_class(self) -> Optional[str]:
"""Return the device class.""" """Return the device class."""
if ATTR_DEVICE_CLASS in self._type: return self._dcls
return self._type[ATTR_DEVICE_CLASS]
return None
@property @property
def unique_id(self) -> str: def unique_id(self) -> str:
@ -282,10 +275,7 @@ class MikrotikControllerBinarySensor(BinarySensorEntity):
@property @property
def entity_category(self) -> str: def entity_category(self) -> str:
"""Return entity category""" """Return entity category"""
if self._entity_category: return self._ctgr
return self._entity_category
return None
@property @property
def device_info(self) -> Dict[str, Any]: def device_info(self) -> Dict[str, Any]:

View file

@ -63,6 +63,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "health", ATTR_PATH: "health",
ATTR_ATTR: "temperature", ATTR_ATTR: "temperature",
ATTR_CTGR: None,
}, },
"system_cpu-temperature": { "system_cpu-temperature": {
ATTR_DEVICE_CLASS: SensorDeviceClass.TEMPERATURE, ATTR_DEVICE_CLASS: SensorDeviceClass.TEMPERATURE,
@ -72,6 +73,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "health", ATTR_PATH: "health",
ATTR_ATTR: "cpu-temperature", ATTR_ATTR: "cpu-temperature",
ATTR_CTGR: None,
}, },
"system_board-temperature1": { "system_board-temperature1": {
ATTR_DEVICE_CLASS: SensorDeviceClass.TEMPERATURE, ATTR_DEVICE_CLASS: SensorDeviceClass.TEMPERATURE,
@ -81,6 +83,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "health", ATTR_PATH: "health",
ATTR_ATTR: "board-temperature1", ATTR_ATTR: "board-temperature1",
ATTR_CTGR: None,
}, },
"system_power-consumption": { "system_power-consumption": {
ATTR_DEVICE_CLASS: SensorDeviceClass.POWER, ATTR_DEVICE_CLASS: SensorDeviceClass.POWER,
@ -90,6 +93,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "health", ATTR_PATH: "health",
ATTR_ATTR: "power-consumption", ATTR_ATTR: "power-consumption",
ATTR_CTGR: None,
}, },
"system_fan1-speed": { "system_fan1-speed": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -99,6 +103,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "health", ATTR_PATH: "health",
ATTR_ATTR: "fan1-speed", ATTR_ATTR: "fan1-speed",
ATTR_CTGR: None,
}, },
"system_fan2-speed": { "system_fan2-speed": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -108,6 +113,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "health", ATTR_PATH: "health",
ATTR_ATTR: "fan2-speed", ATTR_ATTR: "fan2-speed",
ATTR_CTGR: None,
}, },
"system_uptime": { "system_uptime": {
ATTR_DEVICE_CLASS: SensorDeviceClass.TIMESTAMP, ATTR_DEVICE_CLASS: SensorDeviceClass.TIMESTAMP,
@ -127,6 +133,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "resource", ATTR_PATH: "resource",
ATTR_ATTR: "cpu-load", ATTR_ATTR: "cpu-load",
ATTR_CTGR: None,
}, },
"system_memory-usage": { "system_memory-usage": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -136,6 +143,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "resource", ATTR_PATH: "resource",
ATTR_ATTR: "memory-usage", ATTR_ATTR: "memory-usage",
ATTR_CTGR: None,
}, },
"system_hdd-usage": { "system_hdd-usage": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -145,6 +153,7 @@ SENSOR_TYPES = {
ATTR_GROUP: "System", ATTR_GROUP: "System",
ATTR_PATH: "resource", ATTR_PATH: "resource",
ATTR_ATTR: "hdd-usage", ATTR_ATTR: "hdd-usage",
ATTR_CTGR: None,
}, },
"traffic_tx": { "traffic_tx": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -154,6 +163,7 @@ SENSOR_TYPES = {
ATTR_UNIT_ATTR: "tx-bits-per-second-attr", ATTR_UNIT_ATTR: "tx-bits-per-second-attr",
ATTR_PATH: "interface", ATTR_PATH: "interface",
ATTR_ATTR: "tx-bits-per-second", ATTR_ATTR: "tx-bits-per-second",
ATTR_CTGR: None,
}, },
"traffic_rx": { "traffic_rx": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -163,6 +173,7 @@ SENSOR_TYPES = {
ATTR_UNIT_ATTR: "rx-bits-per-second-attr", ATTR_UNIT_ATTR: "rx-bits-per-second-attr",
ATTR_PATH: "interface", ATTR_PATH: "interface",
ATTR_ATTR: "rx-bits-per-second", ATTR_ATTR: "rx-bits-per-second",
ATTR_CTGR: None,
}, },
"accounting_lan_tx": { "accounting_lan_tx": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -172,6 +183,7 @@ SENSOR_TYPES = {
ATTR_UNIT_ATTR: "tx-rx-attr", ATTR_UNIT_ATTR: "tx-rx-attr",
ATTR_PATH: "accounting", ATTR_PATH: "accounting",
ATTR_ATTR: "lan-tx", ATTR_ATTR: "lan-tx",
ATTR_CTGR: None,
}, },
"accounting_lan_rx": { "accounting_lan_rx": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -181,6 +193,7 @@ SENSOR_TYPES = {
ATTR_UNIT_ATTR: "tx-rx-attr", ATTR_UNIT_ATTR: "tx-rx-attr",
ATTR_PATH: "accounting", ATTR_PATH: "accounting",
ATTR_ATTR: "lan-rx", ATTR_ATTR: "lan-rx",
ATTR_CTGR: None,
}, },
"accounting_wan_tx": { "accounting_wan_tx": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -190,6 +203,7 @@ SENSOR_TYPES = {
ATTR_UNIT_ATTR: "tx-rx-attr", ATTR_UNIT_ATTR: "tx-rx-attr",
ATTR_PATH: "accounting", ATTR_PATH: "accounting",
ATTR_ATTR: "wan-tx", ATTR_ATTR: "wan-tx",
ATTR_CTGR: None,
}, },
"accounting_wan_rx": { "accounting_wan_rx": {
ATTR_DEVICE_CLASS: None, ATTR_DEVICE_CLASS: None,
@ -199,6 +213,7 @@ SENSOR_TYPES = {
ATTR_UNIT_ATTR: "tx-rx-attr", ATTR_UNIT_ATTR: "tx-rx-attr",
ATTR_PATH: "accounting", ATTR_PATH: "accounting",
ATTR_ATTR: "wan-rx", ATTR_ATTR: "wan-rx",
ATTR_CTGR: None,
}, },
} }
@ -361,25 +376,23 @@ class MikrotikControllerSensor(SensorEntity):
if sid_data in SENSOR_TYPES: if sid_data in SENSOR_TYPES:
self._data = mikrotik_controller.data[SENSOR_TYPES[sid_data][ATTR_PATH]] self._data = mikrotik_controller.data[SENSOR_TYPES[sid_data][ATTR_PATH]]
self._type = SENSOR_TYPES[sid_data] self._type = SENSOR_TYPES[sid_data]
self._attr = SENSOR_TYPES[sid_data][ATTR_ATTR] self._icon = self._type[ATTR_ICON]
if ATTR_UNIT in self._type:
self._unit = self._type[ATTR_UNIT]
if ATTR_UNIT_ATTR in self._type:
self._unit = self._data[SENSOR_TYPES[self._sensor][ATTR_UNIT_ATTR]]
self._attr = self._type[ATTR_ATTR]
self._dcls = self._type[ATTR_DEVICE_CLASS]
self._ctgr = self._type[ATTR_CTGR]
else: else:
self._type = {} self._type = {}
self._attr = None
self._device_class = None
self._state = None
if ATTR_CTGR in self._type:
self._entity_category = self._type[ATTR_CTGR]
else:
self._entity_category = None
if ATTR_ICON in self._type:
self._icon = self._type[ATTR_ICON]
else:
self._icon = None self._icon = None
self._unit = None
self._attr = None
self._dcls = None
self._ctgr = None
self._unit_of_measurement = None self._state = None
self._attrs = {ATTR_ATTRIBUTION: ATTRIBUTION} self._attrs = {ATTR_ATTRIBUTION: ATTRIBUTION}
@property @property
@ -404,26 +417,17 @@ class MikrotikControllerSensor(SensorEntity):
@property @property
def icon(self) -> str: def icon(self) -> str:
"""Return the icon.""" """Return the icon."""
if self._icon: return self._icon
return self._icon
return None
@property @property
def entity_category(self) -> str: def entity_category(self) -> str:
"""Return entity category""" """Return entity category"""
if self._entity_category: return self._ctgr
return self._entity_category
return None
@property @property
def device_class(self) -> Optional[str]: def device_class(self) -> Optional[str]:
"""Return the device class.""" """Return the device class."""
if ATTR_DEVICE_CLASS in self._type: return self._dcls
return self._type[ATTR_DEVICE_CLASS]
return None
@property @property
def unique_id(self) -> str: def unique_id(self) -> str:
@ -433,11 +437,7 @@ class MikrotikControllerSensor(SensorEntity):
@property @property
def unit_of_measurement(self): def unit_of_measurement(self):
"""Return the unit the value is expressed in.""" """Return the unit the value is expressed in."""
if ATTR_UNIT_ATTR in self._type: return self._unit
return self._data[SENSOR_TYPES[self._sensor][ATTR_UNIT_ATTR]]
if ATTR_UNIT in self._type:
return self._type[ATTR_UNIT]
@property @property
def available(self) -> bool: def available(self) -> bool: