Implement averaging of sensor values
This commit is contained in:
		
							parent
							
								
									fffde16271
								
							
						
					
					
						commit
						2b94a8c12b
					
				@ -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;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user