From a5a9335aead9a2dfa3a12b28d7e77feefc90037c Mon Sep 17 00:00:00 2001 From: Graham Date: Tue, 14 May 2024 08:07:26 -0400 Subject: [PATCH] Added timestamp to mqtt notification message --- .../{InlineFunctions.h => HelperFunctions.h} | 10 +++++++++ code/ESP32/include/IOT.h | 6 ++--- code/ESP32/include/IOTServiceInterface.h | 2 +- code/ESP32/src/IOT.cpp | 22 +++++++++---------- code/ESP32/src/Notifier.cpp | 12 +++++----- code/ESP32/src/main.cpp | 3 --- 6 files changed, 31 insertions(+), 24 deletions(-) rename code/ESP32/include/{InlineFunctions.h => HelperFunctions.h} (72%) diff --git a/code/ESP32/include/InlineFunctions.h b/code/ESP32/include/HelperFunctions.h similarity index 72% rename from code/ESP32/include/InlineFunctions.h rename to code/ESP32/include/HelperFunctions.h index 3da2997..724dcb6 100644 --- a/code/ESP32/include/InlineFunctions.h +++ b/code/ESP32/include/HelperFunctions.h @@ -12,4 +12,14 @@ boolean inline requiredParam(iotwebconf::WebRequestWrapper* webRequestWrapper, i valid = false; } return valid; +} + +unsigned long inline getTime() { + time_t now; + struct tm timeinfo; + if (!getLocalTime(&timeinfo)) { + return(0); + } + time(&now); + return now; } \ No newline at end of file diff --git a/code/ESP32/include/IOT.h b/code/ESP32/include/IOT.h index 81595a6..7850c6e 100644 --- a/code/ESP32/include/IOT.h +++ b/code/ESP32/include/IOT.h @@ -21,9 +21,9 @@ class IOT : public IOTServiceInterface public: void Init(IOTCallbackInterface* iotCB, MQTTCallbackInterface* cmdCB); boolean Run(); - void Publish(const char *subtopic, const char *value, boolean retained = false); - void Publish(const char *topic, float value, boolean retained = false); - void PublishMessage(const char* topic, JsonDocument& payload); + void Publish(const char* subtopic, const char *value, boolean retained = false); + void Publish(const char* topic, float value, boolean retained = false); + void Publish(const char* topic, JsonDocument& payload, boolean retained = false); void PublishTelemetery(bool online); u_int getUniqueId() { return _uniqueId;}; const char* getThingName(); diff --git a/code/ESP32/include/IOTServiceInterface.h b/code/ESP32/include/IOTServiceInterface.h index affd6c7..e947f1d 100644 --- a/code/ESP32/include/IOTServiceInterface.h +++ b/code/ESP32/include/IOTServiceInterface.h @@ -8,7 +8,7 @@ class IOTServiceInterface virtual void Publish(const char *subtopic, const char *value, boolean retained) = 0; virtual void Publish(const char *topic, float value, boolean retained) = 0; - virtual void PublishMessage(const char* topic, JsonDocument& payload) = 0; + virtual void Publish(const char* topic, JsonDocument& payload, boolean retained) = 0; virtual void PublishTelemetery(bool online) = 0; virtual u_int getUniqueId() = 0; virtual const char* getThingName() = 0; diff --git a/code/ESP32/src/IOT.cpp b/code/ESP32/src/IOT.cpp index 9425d40..11f05e1 100644 --- a/code/ESP32/src/IOT.cpp +++ b/code/ESP32/src/IOT.cpp @@ -1,7 +1,7 @@ #include "IOT.h" #include #include -#include "InlineFunctions.h" +#include "HelperFunctions.h" namespace SwitchNotifier { @@ -367,20 +367,18 @@ void IOT::Publish(const char *topic, float value, boolean retained) { Publish(topic, buf, retained); } -void IOT::PublishMessage(const char* topic, JsonDocument& payload) { - if (_mqttClient.connected()) { - String s; - serializeJson(payload, s); - if (_mqttClient.publish(topic, 0, false, s.c_str(), s.length()) == 0) { - loge("**** Payload exceeds MAX MQTT Packet Size"); - } - } +void IOT::Publish(const char* topic, JsonDocument& payload, boolean retained) { + String s; + serializeJson(payload, s); + Publish(topic, s.c_str(), retained); } void IOT::PublishTelemetery(bool online) { - if (_lastTelemetery != online){ - _lastTelemetery = online; - _mqttClient.publish(_willTopic, 0, true, online ? "Online": "Offline", 7); + if (_mqttClient.connected()) { + if (_lastTelemetery != online){ + _lastTelemetery = online; + _mqttClient.publish(_willTopic, 0, true, online ? "Online": "Offline", 7); + } } } diff --git a/code/ESP32/src/Notifier.cpp b/code/ESP32/src/Notifier.cpp index af8e80c..65a1b86 100644 --- a/code/ESP32/src/Notifier.cpp +++ b/code/ESP32/src/Notifier.cpp @@ -1,6 +1,6 @@ #include #include -#include "InlineFunctions.h" +#include "HelperFunctions.h" #include "Notifier.h" #include "Log.h" @@ -149,22 +149,24 @@ void Notifier::run(){ void Notifier::notify(uint8_t pin){ logi("Button %d has been pressed\n", pin); + JsonDocument doc; + doc["TimeStamp"] = getTime(); switch (pin){ case BUTTON_1: sendit(buttonParam1.value()); - _pcb->Publish("Event", "1", false); + _pcb->Publish("Switch_1", doc, false); break; case BUTTON_2: sendit(buttonParam2.value()); - _pcb->Publish("Event", "2", false); + _pcb->Publish("Switch_2", doc, false); break; case BUTTON_3: sendit(buttonParam3.value()); - _pcb->Publish("Event", "3", false); + _pcb->Publish("Switch_3",doc, false); break; case BUTTON_4: sendit(buttonParam4.value()); - _pcb->Publish("Event", "4", false); + _pcb->Publish("Switch_4", doc, false); break; } } diff --git a/code/ESP32/src/main.cpp b/code/ESP32/src/main.cpp index 4a41b38..b54f1e9 100644 --- a/code/ESP32/src/main.cpp +++ b/code/ESP32/src/main.cpp @@ -56,14 +56,11 @@ void setup() logd("Booting"); _notifier.setup(&_iot); _iot.Init(&_notifier, tmp); - init_watchdog(); _lastPublishTimeStamp = millis() + WAKE_PUBLISH_RATE; - logd("Done setup"); } - void loop() { if (_iot.Run()) {