From c0e37366f17ab5e53247dfd5893ca2c30373b760 Mon Sep 17 00:00:00 2001 From: Nano Date: Thu, 28 Mar 2024 17:32:42 +0100 Subject: [PATCH] SystemUptime testing branch --- library/scheduler.py | 5 +++++ library/stats.py | 32 +++++++++++++++++++++++++++++++- main.py | 1 + requirements.txt | 1 + res/themes/default.yaml | 8 ++++++++ theme-editor.py | 1 + 6 files changed, 47 insertions(+), 1 deletion(-) diff --git a/library/scheduler.py b/library/scheduler.py index c36812f6..2bd058a5 100644 --- a/library/scheduler.py +++ b/library/scheduler.py @@ -153,6 +153,11 @@ def DateStats(): # logger.debug("Refresh date stats") stats.Date.stats() +@async_job("SystemUptime_Stats") +@schedule(timedelta(seconds=config.THEME_DATA['STATS']['UPTIME'].get("INTERVAL", None)).total_seconds()) +def SystemUptimeStats(): + # logger.debug("Refresh system uptime stats") + stats.SystemUptime.stats() @async_job("Custom_Stats") @schedule(timedelta(seconds=config.THEME_DATA['STATS']['CUSTOM'].get("INTERVAL", None)).total_seconds()) diff --git a/library/stats.py b/library/stats.py index 0617ff2e..8dd8f045 100644 --- a/library/stats.py +++ b/library/stats.py @@ -34,7 +34,7 @@ import library.config as config from library.display import display from library.log import logger - +from uptime import uptime DEFAULT_HISTORY_SIZE = 10 ETH_CARD = config.CONFIG_DATA["config"]["ETH"] @@ -723,6 +723,36 @@ def stats(): ) +class SystemUptime: + @staticmethod + def stats(): + if HW_SENSORS == "STATIC": + # For static sensors, use predefined uptime + uptimesec = "4294036" + uptimeformatted = "49 days, 16:47:16" + else: + uptimesec = int(uptime()) + uptimeformatted = str(datetime.timedelta(seconds = uptimesec)) + + systemuptime_theme_data = config.THEME_DATA['STATS']['UPTIME'] + + systemuptime_sec_theme_data = systemuptime_theme_data['SECONDS']['TEXT'] + systemuptime_sec_format = systemuptime_sec_theme_data.get("FORMAT", 'medium') + if systemuptime_sec_theme_data and systemuptime_sec_theme_data['SHOW']: + display_themed_value( + theme_data = systemuptime_sec_theme_data, + value= uptimesec + ) + + systemuptime_withdays_theme_data = systemuptime_theme_data['WITHDAYS']['TEXT'] + systemuptime_formatted_format = systemuptime_withdays_theme_data.get("FORMAT", 'medium') + if systemuptime_withdays_theme_data and systemuptime_withdays_theme_data['SHOW']: + display_themed_value( + theme_data = systemuptime_withdays_theme_data, + value= uptimeformatted + ) + + class Custom: @staticmethod def stats(): diff --git a/main.py b/main.py index 9d710124..5c29b107 100755 --- a/main.py +++ b/main.py @@ -208,6 +208,7 @@ def on_win32_wm_event(hWnd, msg, wParam, lParam): scheduler.DiskStats() scheduler.NetStats() scheduler.DateStats() + scheduler.SystemUptimeStats() scheduler.CustomStats() scheduler.QueueHandler() diff --git a/requirements.txt b/requirements.txt index 6cfd3ece..a437438b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,6 +7,7 @@ pystray~=0.19.5 # Tray icon (all OS) babel~=2.14.0 # Date/time formatting ruamel.yaml~=0.18.6 # For configuration editor sv-ttk~=2.6.0 # Tk Sun Valley theme for configuration editor +uptime~=3.0.1 # For System Uptime # Efficient image serialization numpy~=1.24.4; python_version < "3.9" # For Python 3.8 max. diff --git a/res/themes/default.yaml b/res/themes/default.yaml index 1e1d2d5f..343814be 100644 --- a/res/themes/default.yaml +++ b/res/themes/default.yaml @@ -206,5 +206,13 @@ STATS: HOUR: TEXT: SHOW: False + UPTIME: + INTERVAL: 100 + SECONDS: + TEXT: + SHOW: False + WITHDAYS: + TEXT: + SHOW: False CUSTOM: INTERVAL: 100 diff --git a/theme-editor.py b/theme-editor.py index 944ee4bc..573fb142 100755 --- a/theme-editor.py +++ b/theme-editor.py @@ -111,6 +111,7 @@ def refresh_theme(): stats.Disk.stats() stats.Net.stats() stats.Date.stats() + stats.SystemUptime.stats() stats.Custom.stats()