diff --git a/custom_components/mikrotik_router/mikrotik_controller.py b/custom_components/mikrotik_router/mikrotik_controller.py index 7e12ab6..6a9095e 100644 --- a/custom_components/mikrotik_router/mikrotik_controller.py +++ b/custom_components/mikrotik_router/mikrotik_controller.py @@ -1,5 +1,6 @@ """Mikrotik Controller for Mikrotik Router.""" +import re import asyncio import logging from datetime import timedelta @@ -705,15 +706,28 @@ class MikrotikControllerData: {"name": "platform", "default": "unknown"}, {"name": "board-name", "default": "unknown"}, {"name": "version", "default": "unknown"}, - {"name": "uptime", "default": "unknown"}, + {"name": "uptime_str", "source": "uptime", "default": "unknown"}, {"name": "cpu-load", "default": "unknown"}, {"name": "free-memory", "default": 0}, {"name": "total-memory", "default": 0}, {"name": "free-hdd-space", "default": 0}, {"name": "total-hdd-space", "default": 0}, ], + ensure_vals=[ + {"name": "uptime", "default": 0}, + ], ) + l = list(map(int, re.split('[whms]', self.data["resource"]["uptime_str"])[:-1])) + if len(l) == 4: + self.data["resource"]["uptime"] = l[0] * 604800 + l[1] * 3600 + l[2] * 60 + l[3] + elif len(l) == 3: + self.data["resource"]["uptime"] = l[0] * 3600 + l[1] * 60 + l[2] + elif len(l) == 2: + self.data["resource"]["uptime"] = l[0] * 60 + l[1] + else: + self.data["resource"]["uptime"] = l[0] + if self.data["resource"]["total-memory"] > 0: self.data["resource"]["memory-usage"] = round( ( diff --git a/custom_components/mikrotik_router/sensor.py b/custom_components/mikrotik_router/sensor.py index d59c5d9..d3a6197 100644 --- a/custom_components/mikrotik_router/sensor.py +++ b/custom_components/mikrotik_router/sensor.py @@ -39,6 +39,15 @@ ATTR_PATH = "data_path" ATTR_ATTR = "data_attr" SENSOR_TYPES = { + "system_uptime": { + ATTR_DEVICE_CLASS: None, + ATTR_ICON: "mdi:clock-outline", + ATTR_LABEL: "Uptime", + ATTR_UNIT: "s", + ATTR_GROUP: "System", + ATTR_PATH: "resource", + ATTR_ATTR: "uptime", + }, "system_temperature": { ATTR_DEVICE_CLASS: None, ATTR_ICON: "mdi:thermometer",