From 4bea741958bb1168f7a31277c78c1f5108e7490a Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 26 Jun 2020 13:02:20 +0200 Subject: [PATCH] add uptime in seconds to heartbeat MQTT payload --- lib/uuid-common/src/get_uptime_ms.cpp | 19 +++++++++++++++++-- lib/uuid-common/src/uuid/common.h | 6 ++++-- src/mqtt.cpp | 3 ++- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/lib/uuid-common/src/get_uptime_ms.cpp b/lib/uuid-common/src/get_uptime_ms.cpp index 5fa8d0f00..ee55a29f2 100644 --- a/lib/uuid-common/src/get_uptime_ms.cpp +++ b/lib/uuid-common/src/get_uptime_ms.cpp @@ -22,6 +22,22 @@ namespace uuid { +#define UPTIME_OVERFLOW 4294967295 // Uptime overflow value + +// returns system uptime in seconds +uint32_t get_uptime_sec() { + static uint32_t last_uptime = 0; + static uint8_t uptime_overflows = 0; + + if (millis() < last_uptime) { + ++uptime_overflows; + } + last_uptime = millis(); + uint32_t uptime_seconds = uptime_overflows * (UPTIME_OVERFLOW / 1000) + (last_uptime / 1000); + + return uptime_seconds; +} + uint64_t get_uptime_ms() { static uint32_t high_millis = 0; static uint32_t low_millis = 0; @@ -36,8 +52,7 @@ uint64_t get_uptime_ms() { } // added by proddy - -static uint32_t now_millis; // added by proddy +static uint32_t now_millis; void set_uptime() { now_millis = ::millis(); diff --git a/lib/uuid-common/src/uuid/common.h b/lib/uuid-common/src/uuid/common.h index 3811ca727..4665c950f 100644 --- a/lib/uuid-common/src/uuid/common.h +++ b/lib/uuid-common/src/uuid/common.h @@ -86,8 +86,10 @@ void loop(); */ uint64_t get_uptime_ms(); -uint32_t get_uptime(); // added by proddy -void set_uptime(); +uint32_t get_uptime(); // added by proddy +uint32_t get_uptime_sec(); // added by proddy + +void set_uptime(); } // namespace uuid diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 869a50327..587cd3bc0 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -450,10 +450,11 @@ void Mqtt::send_heartbeat() { return; } - StaticJsonDocument<90> doc; + StaticJsonDocument doc; doc["rssid"] = Network::wifi_quality(); doc["uptime"] = uuid::log::format_timestamp_ms(uuid::get_uptime_ms(), 3); + doc["uptime_sec"] = uuid::get_uptime_sec(); doc["freemem"] = System::free_mem(); doc["mqttpublishfails"] = mqtt_publish_fails_;