Skip to content

Commit

Permalink
Added timestamp to mqtt notification message
Browse files Browse the repository at this point in the history
  • Loading branch information
graham22 committed May 14, 2024
1 parent 96622bb commit a5a9335
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
6 changes: 3 additions & 3 deletions code/ESP32/include/IOT.h
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
2 changes: 1 addition & 1 deletion code/ESP32/include/IOTServiceInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
22 changes: 10 additions & 12 deletions code/ESP32/src/IOT.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#include "IOT.h"
#include <IotWebConfOptionalGroup.h>
#include <IotWebConfTParameter.h>
#include "InlineFunctions.h"
#include "HelperFunctions.h"

namespace SwitchNotifier
{
Expand Down Expand Up @@ -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);
}
}
}

Expand Down
12 changes: 7 additions & 5 deletions code/ESP32/src/Notifier.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#include <WiFi.h>
#include <ESP_Mail_Client.h>
#include "InlineFunctions.h"
#include "HelperFunctions.h"
#include "Notifier.h"
#include "Log.h"

Expand Down Expand Up @@ -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;
}
}
Expand Down
3 changes: 0 additions & 3 deletions code/ESP32/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()) {
Expand Down

0 comments on commit a5a9335

Please sign in to comment.