added 7.1 support for system health #97

added voltage sensor #156
This commit is contained in:
Tomaae 2022-01-08 22:07:31 +01:00
parent d183a67985
commit 1bc901cf9d
2 changed files with 41 additions and 13 deletions

View file

@ -107,6 +107,7 @@ class MikrotikControllerData:
"routerboard": {}, "routerboard": {},
"resource": {}, "resource": {},
"health": {}, "health": {},
"health7": {},
"interface": {}, "interface": {},
"bridge": {}, "bridge": {},
"bridge_host": {}, "bridge_host": {},
@ -1218,18 +1219,32 @@ class MikrotikControllerData:
# --------------------------- # ---------------------------
def get_system_health(self): def get_system_health(self):
"""Get routerboard data from Mikrotik""" """Get routerboard data from Mikrotik"""
self.data["health"] = parse_api( if self.major_fw_version >= 7:
data=self.data["health"], self.data["health7"] = parse_api(
source=self.api.path("/system/health"), data=self.data["health7"],
vals=[ source=self.api.path("/system/health"),
{"name": "temperature", "default": "unknown"}, key="name",
{"name": "cpu-temperature", "default": "unknown"}, vals=[
{"name": "power-consumption", "default": "unknown"}, {"name": "value", "default": "unknown"},
{"name": "board-temperature1", "default": "unknown"}, ],
{"name": "fan1-speed", "default": "unknown"}, )
{"name": "fan2-speed", "default": "unknown"}, for uid, vals in self.data["health7"].items():
], self.data["health"][uid] = vals["value"]
)
else:
self.data["health"] = parse_api(
data=self.data["health"],
source=self.api.path("/system/health"),
vals=[
{"name": "temperature", "default": "unknown"},
{"name": "voltage", "default": "unknown"},
{"name": "cpu-temperature", "default": "unknown"},
{"name": "power-consumption", "default": "unknown"},
{"name": "board-temperature1", "default": "unknown"},
{"name": "fan1-speed", "default": "unknown"},
{"name": "fan2-speed", "default": "unknown"},
],
)
# --------------------------- # ---------------------------
# get_system_resource # get_system_resource

View file

@ -9,6 +9,7 @@ from homeassistant.const import (
ATTR_ATTRIBUTION, ATTR_ATTRIBUTION,
ATTR_DEVICE_CLASS, ATTR_DEVICE_CLASS,
TEMP_CELSIUS, TEMP_CELSIUS,
ELECTRIC_POTENTIAL_VOLT,
) )
from homeassistant.helpers.entity import EntityCategory from homeassistant.helpers.entity import EntityCategory
@ -65,6 +66,16 @@ SENSOR_TYPES = {
ATTR_ATTR: "temperature", ATTR_ATTR: "temperature",
ATTR_CTGR: None, ATTR_CTGR: None,
}, },
"system_voltage": {
ATTR_DEVICE_CLASS: SensorDeviceClass.VOLTAGE,
ATTR_ICON: "mdi:lightning-bolt",
ATTR_LABEL: "Voltage",
ATTR_UNIT: ELECTRIC_POTENTIAL_VOLT,
ATTR_GROUP: "System",
ATTR_PATH: "health",
ATTR_ATTR: "voltage",
ATTR_CTGR: EntityCategory.DIAGNOSTIC,
},
"system_cpu-temperature": { "system_cpu-temperature": {
ATTR_DEVICE_CLASS: SensorDeviceClass.TEMPERATURE, ATTR_DEVICE_CLASS: SensorDeviceClass.TEMPERATURE,
ATTR_ICON: "mdi:thermometer", ATTR_ICON: "mdi:thermometer",
@ -296,7 +307,9 @@ def update_items(inst, config_entry, mikrotik_controller, async_add_entities, se
for sensor in SENSOR_TYPES: for sensor in SENSOR_TYPES:
if "system_" in sensor: if "system_" in sensor:
if ( if (
mikrotik_controller.data[SENSOR_TYPES[sensor][ATTR_PATH]][ SENSOR_TYPES[sensor][ATTR_ATTR]
not in mikrotik_controller.data[SENSOR_TYPES[sensor][ATTR_PATH]]
or mikrotik_controller.data[SENSOR_TYPES[sensor][ATTR_PATH]][
SENSOR_TYPES[sensor][ATTR_ATTR] SENSOR_TYPES[sensor][ATTR_ATTR]
] ]
== "unknown" == "unknown"