From b344fca66ecd280360efeeda41e8d6d9989aeb1e Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 28 Jul 2020 23:34:38 +0200 Subject: [PATCH] heartbeat added --- libraries/includes/defines.h | 2 ++ releaseInfo.json | 6 +++--- sketch/ConfigDataStructure.py | 4 +++- sketch/application.cpp | 27 +++++++++++++++++++++------ 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/libraries/includes/defines.h b/libraries/includes/defines.h index 9771957..afa777c 100644 --- a/libraries/includes/defines.h +++ b/libraries/includes/defines.h @@ -11,6 +11,8 @@ // #define DEBUG +#define VALUES_BUF_SIZE 128 +#define HEARTBEAT_BUF_SIZE 256 #define NODEMCU diff --git a/releaseInfo.json b/releaseInfo.json index 1f68e65..30842b3 100644 --- a/releaseInfo.json +++ b/releaseInfo.json @@ -1,8 +1,8 @@ { - "releaseTag": "v1.0.0", + "releaseTag": "v1.0.1", "createReleaseTag": "true", - "releaseName": "initial", - "description": "initial" + "releaseName": "heartbeat", + "description": "heartbeat message added" } diff --git a/sketch/ConfigDataStructure.py b/sketch/ConfigDataStructure.py index 66463b0..9664bf7 100644 --- a/sketch/ConfigDataStructure.py +++ b/sketch/ConfigDataStructure.py @@ -10,11 +10,13 @@ configItems = [ {"label":"MQTT Port", "key":"mqttPort", "type":"I", "default":1883}, {"label":"MQTT ValuesTopic", "key":"mqttValuesTopic", "type":"C", "length":64, "default":"IoT/RainSensor2/Values"}, {"label":"MQTT DebugTopic", "key":"mqttDebugTopic", "type":"C", "length":64, "default":"IoT/RainSensor2/Debug"}, + {"label":"MQTT HeartbeatTopic", "key":"mqttHeartbeatTopic", "type":"C", "length":64, "default":"IoT/RainSensor2/Heartbeat"}, {"label":"MQTT WatchdogTopic", "key":"mqttWatchdogTopic", "type":"C", "length":64, "default":"IoT/Watchdog"}, {"label":"Values period (s)", "key":"valuesPeriod", "type":"I", "default":3600}, + {"label":"Heartbeat period (s)", "key":"heartbeatPeriod", "type":"I", "default":5}, {"label":"Debounce time (us)", "key":"debounce", "type":"I", "default":300}, {"label":"DebugMode", "key":"debugMode", "type":"I", "default":0} ] -magic = 3235774471 +magic = 3235774472 appName = "ESP8266 based RainSensor/Counter" diff --git a/sketch/application.cpp b/sketch/application.cpp index dc91b2c..4e9e786 100644 --- a/sketch/application.cpp +++ b/sketch/application.cpp @@ -67,9 +67,11 @@ void loopApplication() { } static uint32_t totalCnt = 0; - static uint32_t lastMillis = 0; - if (currentMillis > (lastMillis + (configBlock.valuesPeriod * 1000))) { - lastMillis = currentMillis; + static uint32_t lastValuesMillis = 0; + static uint32_t lastHeartbeatMillis = 0; + char buf[VALUES_BUF_SIZE]; + if (currentMillis > (lastValuesMillis + (configBlock.valuesPeriod * 1000))) { + lastValuesMillis = currentMillis; // rain sensor uint32_t rainCnt = 0; @@ -84,12 +86,25 @@ void loopApplication() { totalCnt += rainCnt; // MQTT publishing -#define BUF_SIZE 256 - char buf[BUF_SIZE]; - snprintf(buf, BUF_SIZE-1, "{\"raincnt\":%ld, \"totalCnt\":%ld, \"uptime\":%ld}", rainCnt, totalCnt, uptime); + memset(buf, 0, VALUES_BUF_SIZE); + snprintf(buf, VALUES_BUF_SIZE-1, "{\"raincnt\":%ld, \"totalCnt\":%ld, \"uptime\":%ld}", rainCnt, totalCnt, uptime); mqttClient.publish(configBlock.mqttValuesTopic, buf); } + if (currentMillis > (lastHeartbeatMillis + (configBlock.heartbeatPeriod * 1000))) { + lastHeartbeatMillis = currentMillis; + +#ifdef DEBUG + Serial.println("Publishing heartbeat"); +#endif + + // MQTT publishing + char heartbeatBuf[HEARTBEAT_BUF_SIZE]; + memset(heartbeatBuf, 0, HEARTBEAT_BUF_SIZE); + snprintf(heartbeatBuf, HEARTBEAT_BUF_SIZE-1, "{\"lastMessage\":%s, \"uptime\":%ld}", buf, uptime); + mqttClient.publish(configBlock.mqttHeartbeatTopic, heartbeatBuf); + } + }