From a35ddd476e07248cf5c3c6b4bdddc02ea2df6927 Mon Sep 17 00:00:00 2001
From: Jan Grewe <jan@faked.org>
Date: Thu, 12 Oct 2023 19:42:00 +0200
Subject: [PATCH] format uptime human-readable

---
 packages/base.yaml | 33 +++++++++++++++++++++++++++++----
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/packages/base.yaml b/packages/base.yaml
index d1163a2..b2270d7 100644
--- a/packages/base.yaml
+++ b/packages/base.yaml
@@ -58,18 +58,43 @@ sensor:
     update_interval: 60s
 
   - platform: uptime
-    id: device_uptime
-    name: "Device Uptime"
-    update_interval: 60s
+    id: device_uptime_seconds
+    update_interval: 15s
+    internal: true
 
 text_sensor:
   - platform: version
     name: "ESPHome Version"
     hide_timestamp: true
 
+  - platform: template
+    id: device_uptime
+    name: "Device: Uptime"
+    update_interval: 15s
+    lambda: |-
+      uint32_t dur = id(device_uptime_seconds).state;
+      int dys = 0;
+      int hrs = 0;
+      int mnts = 0;
+      if (dur > 86399) {
+        dys = trunc(dur / 86400);
+        dur = dur - (dys * 86400);
+      }
+      if (dur > 3599) {
+        hrs = trunc(dur / 3600);
+        dur = dur - (hrs * 3600);
+      }
+      if (dur > 59) {
+        mnts = trunc(dur / 60);
+        dur = dur - (mnts * 60);
+      }
+      char buffer[17];
+      sprintf(buffer, "%ud %02uh %02um %02us", dys, hrs, mnts, dur);
+      return {buffer};
+
 button:
   - platform: restart
-    name: "Device Restart"
+    name: "Device: Restart"
 
 http_request:
   id: http_request_data
-- 
GitLab