clear averages for each run, ignore distances higher than tank depth

This commit is contained in:
Your Name 2021-07-01 20:39:51 +02:00
parent 11d29939f6
commit 7c9a0bf6f1
3 changed files with 28 additions and 3 deletions

View File

@ -48,6 +48,7 @@ public:
* *
*/ */
void addSenseValue(void); void addSenseValue(void);
void clearMoisture(void);
void deactivatePump(void); void deactivatePump(void);

View File

@ -55,6 +55,10 @@ void Plant::init(void)
digitalWrite(this->mPinPump, LOW); digitalWrite(this->mPinPump, LOW);
} }
void Plant::clearMoisture(void){
this->moistureRaw.clear();
}
void Plant::addSenseValue(void) void Plant::addSenseValue(void)
{ {
int raw = analogRead(this->mPinSensor); int raw = analogRead(this->mPinSensor);

View File

@ -36,7 +36,7 @@
* DEFINES * DEFINES
******************************************************************************/ ******************************************************************************/
#define AMOUNT_SENOR_QUERYS 8 #define AMOUNT_SENOR_QUERYS 8
#define MAX_TANK_DEPTH 1000 #define MAX_TANK_DEPTH 2000
#define TEST_TOPIC "roundtrip\0" #define TEST_TOPIC "roundtrip\0"
#define BACKUP_TOPIC "$implementation/config/backup/set\0" #define BACKUP_TOPIC "$implementation/config/backup/set\0"
#define BACKUP_STATUS_TOPIC "$implementation/config/backup\0" #define BACKUP_STATUS_TOPIC "$implementation/config/backup\0"
@ -279,6 +279,11 @@ void readPowerSwitchedSensors()
{ {
digitalWrite(OUTPUT_ENABLE_SENSOR, HIGH); digitalWrite(OUTPUT_ENABLE_SENSOR, HIGH);
delay(10); delay(10);
for (int i = 0; i < MAX_PLANTS; i++)
{
mPlants[i].clearMoisture();
}
for (int readCnt = 0; readCnt < AMOUNT_SENOR_QUERYS; readCnt++) for (int readCnt = 0; readCnt < AMOUNT_SENOR_QUERYS; readCnt++)
{ {
for (int i = 0; i < MAX_PLANTS; i++) for (int i = 0; i < MAX_PLANTS; i++)
@ -288,6 +293,7 @@ void readPowerSwitchedSensors()
delay(2); delay(2);
} }
waterRawSensor.clear();
Wire.setPins(SENSOR_TANK_TRG, SENSOR_TANK_ECHO); Wire.setPins(SENSOR_TANK_TRG, SENSOR_TANK_ECHO);
Wire.begin(); Wire.begin();
tankSensor.setTimeout(500); tankSensor.setTimeout(500);
@ -316,7 +322,10 @@ void readPowerSwitchedSensors()
for (int readCnt = 0; readCnt < 5; readCnt++) for (int readCnt = 0; readCnt < 5; readCnt++)
{ {
if(!tankSensor.timeoutOccurred()){ if(!tankSensor.timeoutOccurred()){
waterRawSensor.add(tankSensor.readRangeSingleMillimeters()); uint16_t distance = tankSensor.readRangeSingleMillimeters();
if(distance < MAX_TANK_DEPTH){
waterRawSensor.add(distance);
}
} }
delay(10); delay(10);
} }
@ -430,7 +439,7 @@ int determineNextPump()
Serial.printf("%d Skip deactivated pump\r\n", i); Serial.printf("%d Skip deactivated pump\r\n", i);
continue; continue;
} }
if ((rtcLastWateringPlant[i] > 0) && ((rtcLastWateringPlant[i] + plant.getCooldownInSeconds()) < getCurrentTime())) if ((rtcLastWateringPlant[i] + plant.getCooldownInSeconds()) > getCurrentTime())
{ {
Serial.printf("%d Skipping due to cooldown %ld / %ld \r\n", i, rtcLastWateringPlant[i], plant.getCooldownInSeconds()); Serial.printf("%d Skipping due to cooldown %ld / %ld \r\n", i, rtcLastWateringPlant[i], plant.getCooldownInSeconds());
continue; continue;
@ -529,6 +538,15 @@ void setup()
WiFi.mode(WIFI_OFF); WiFi.mode(WIFI_OFF);
Serial.flush(); Serial.flush();
gpio_hold_dis(OUTPUT_PUMP0);
gpio_hold_dis(OUTPUT_PUMP1);
gpio_hold_dis(OUTPUT_PUMP2);
gpio_hold_dis(OUTPUT_PUMP3);
gpio_hold_dis(OUTPUT_PUMP4);
gpio_hold_dis(OUTPUT_PUMP5);
gpio_hold_dis(OUTPUT_PUMP6);
gpio_hold_dis(OUTPUT_ENABLE_PUMP);
/* Intialize Plant */ /* Intialize Plant */
for (int i = 0; i < MAX_PLANTS; i++) for (int i = 0; i < MAX_PLANTS; i++)
{ {
@ -539,6 +557,8 @@ void setup()
// read button // read button
pinMode(BUTTON, INPUT); pinMode(BUTTON, INPUT);
// Power pins // Power pins
pinMode(OUTPUT_ENABLE_PUMP, OUTPUT); pinMode(OUTPUT_ENABLE_PUMP, OUTPUT);