From 2b94a8c12b3b413141deafb7ab9cb572ef80ce45 Mon Sep 17 00:00:00 2001 From: bzi Date: Fri, 1 Mar 2019 09:33:30 +0100 Subject: [PATCH] Implement averaging of sensor values --- envisens/envisens_esp_fw/envisens_esp_fw.ino | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/envisens/envisens_esp_fw/envisens_esp_fw.ino b/envisens/envisens_esp_fw/envisens_esp_fw.ino index cd9e6d9..75a2a27 100644 --- a/envisens/envisens_esp_fw/envisens_esp_fw.ino +++ b/envisens/envisens_esp_fw/envisens_esp_fw.ino @@ -105,7 +105,7 @@ bool checkVariation(float newValue, float prevValue, float maxDiff) { } bool checkPlausibility(float newValue, float prevValue, float maxDiff) { - return (newValue < prevValue + (maxDiff * 10) || newValue > prevValue - (maxDiff * 10)); + return (newValue < prevValue + (maxDiff * 10) || newValue > prevValue - (maxDiff * 10) || lastVal == 0.0); } long lastMsg = 0; @@ -115,16 +115,18 @@ bool forcePublish = false; bool publish (String desc, char *topic, float val, float &lastVal, float diff, bool force){ bool ret = false; - Serial.println("Sample " + desc + ": " + String(val).c_str()); + Serial.println("Sample " + desc + ": " + String(val).c_str() + " vs. last " + String(lastVal).c_str()); if (checkVariation(val, lastVal, diff) or force) { Serial.println("Sufficient variation on " + desc + ": " + String(val).c_str()); if (checkPlausibility(val, lastVal, diff) or force) { - Serial.println("Value published"); + if (lastVal != 0.0) { + val = (lastVal*2 + val) / 3; // slight averaging + } + Serial.println("Value " + desc + " averaged and published : " + String(val).c_str()); client.publish(topic, String(val).c_str(), true); ret = true; } else { - Serial.print("** ERROR: Value out of bounds, not published. Last value :"); - Serial.println(String(lastVal).c_str()); + Serial.println("** ERROR: Value " + desc + " out of bounds, not published. Last : " + String(lastVal).c_str()); } lastVal = val; }