Skip to content

Commit a5a9335

Browse files
committed
Added timestamp to mqtt notification message
1 parent 96622bb commit a5a9335

File tree

6 files changed

+31
-24
lines changed

6 files changed

+31
-24
lines changed

code/ESP32/include/InlineFunctions.h renamed to code/ESP32/include/HelperFunctions.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,14 @@ boolean inline requiredParam(iotwebconf::WebRequestWrapper* webRequestWrapper, i
1212
valid = false;
1313
}
1414
return valid;
15+
}
16+
17+
unsigned long inline getTime() {
18+
time_t now;
19+
struct tm timeinfo;
20+
if (!getLocalTime(&timeinfo)) {
21+
return(0);
22+
}
23+
time(&now);
24+
return now;
1525
}

code/ESP32/include/IOT.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ class IOT : public IOTServiceInterface
2121
public:
2222
void Init(IOTCallbackInterface* iotCB, MQTTCallbackInterface* cmdCB);
2323
boolean Run();
24-
void Publish(const char *subtopic, const char *value, boolean retained = false);
25-
void Publish(const char *topic, float value, boolean retained = false);
26-
void PublishMessage(const char* topic, JsonDocument& payload);
24+
void Publish(const char* subtopic, const char *value, boolean retained = false);
25+
void Publish(const char* topic, float value, boolean retained = false);
26+
void Publish(const char* topic, JsonDocument& payload, boolean retained = false);
2727
void PublishTelemetery(bool online);
2828
u_int getUniqueId() { return _uniqueId;};
2929
const char* getThingName();

code/ESP32/include/IOTServiceInterface.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class IOTServiceInterface
88

99
virtual void Publish(const char *subtopic, const char *value, boolean retained) = 0;
1010
virtual void Publish(const char *topic, float value, boolean retained) = 0;
11-
virtual void PublishMessage(const char* topic, JsonDocument& payload) = 0;
11+
virtual void Publish(const char* topic, JsonDocument& payload, boolean retained) = 0;
1212
virtual void PublishTelemetery(bool online) = 0;
1313
virtual u_int getUniqueId() = 0;
1414
virtual const char* getThingName() = 0;

code/ESP32/src/IOT.cpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include "IOT.h"
22
#include <IotWebConfOptionalGroup.h>
33
#include <IotWebConfTParameter.h>
4-
#include "InlineFunctions.h"
4+
#include "HelperFunctions.h"
55

66
namespace SwitchNotifier
77
{
@@ -367,20 +367,18 @@ void IOT::Publish(const char *topic, float value, boolean retained) {
367367
Publish(topic, buf, retained);
368368
}
369369

370-
void IOT::PublishMessage(const char* topic, JsonDocument& payload) {
371-
if (_mqttClient.connected()) {
372-
String s;
373-
serializeJson(payload, s);
374-
if (_mqttClient.publish(topic, 0, false, s.c_str(), s.length()) == 0) {
375-
loge("**** Payload exceeds MAX MQTT Packet Size");
376-
}
377-
}
370+
void IOT::Publish(const char* topic, JsonDocument& payload, boolean retained) {
371+
String s;
372+
serializeJson(payload, s);
373+
Publish(topic, s.c_str(), retained);
378374
}
379375

380376
void IOT::PublishTelemetery(bool online) {
381-
if (_lastTelemetery != online){
382-
_lastTelemetery = online;
383-
_mqttClient.publish(_willTopic, 0, true, online ? "Online": "Offline", 7);
377+
if (_mqttClient.connected()) {
378+
if (_lastTelemetery != online){
379+
_lastTelemetery = online;
380+
_mqttClient.publish(_willTopic, 0, true, online ? "Online": "Offline", 7);
381+
}
384382
}
385383
}
386384

code/ESP32/src/Notifier.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#include <WiFi.h>
22
#include <ESP_Mail_Client.h>
3-
#include "InlineFunctions.h"
3+
#include "HelperFunctions.h"
44
#include "Notifier.h"
55
#include "Log.h"
66

@@ -149,22 +149,24 @@ void Notifier::run(){
149149

150150
void Notifier::notify(uint8_t pin){
151151
logi("Button %d has been pressed\n", pin);
152+
JsonDocument doc;
153+
doc["TimeStamp"] = getTime();
152154
switch (pin){
153155
case BUTTON_1:
154156
sendit(buttonParam1.value());
155-
_pcb->Publish("Event", "1", false);
157+
_pcb->Publish("Switch_1", doc, false);
156158
break;
157159
case BUTTON_2:
158160
sendit(buttonParam2.value());
159-
_pcb->Publish("Event", "2", false);
161+
_pcb->Publish("Switch_2", doc, false);
160162
break;
161163
case BUTTON_3:
162164
sendit(buttonParam3.value());
163-
_pcb->Publish("Event", "3", false);
165+
_pcb->Publish("Switch_3",doc, false);
164166
break;
165167
case BUTTON_4:
166168
sendit(buttonParam4.value());
167-
_pcb->Publish("Event", "4", false);
169+
_pcb->Publish("Switch_4", doc, false);
168170
break;
169171
}
170172
}

code/ESP32/src/main.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,11 @@ void setup()
5656
logd("Booting");
5757
_notifier.setup(&_iot);
5858
_iot.Init(&_notifier, tmp);
59-
6059
init_watchdog();
6160
_lastPublishTimeStamp = millis() + WAKE_PUBLISH_RATE;
62-
6361
logd("Done setup");
6462
}
6563

66-
6764
void loop()
6865
{
6966
if (_iot.Run()) {

0 commit comments

Comments
 (0)