|
|
|
@ -210,7 +210,7 @@ struct sensordata
|
|
|
|
|
sensordata dataRaingauge;
|
|
|
|
|
unsigned long raingauge_lasttimereset=0;
|
|
|
|
|
uint16_t raingauge_pulsecounter=0; //counted pulses since last reset
|
|
|
|
|
|
|
|
|
|
bool raingauge_idleflag=true;
|
|
|
|
|
|
|
|
|
|
#define RAINGAUGE_DEBOUNCETIME 1000
|
|
|
|
|
unsigned long raingauge_lastpulse_fordebounce=0;
|
|
|
|
@ -1011,11 +1011,16 @@ void loop_raingauge()
|
|
|
|
|
bool _changed=false;
|
|
|
|
|
if (millis() >= (d.lastreadtime+d.readdelay)) {
|
|
|
|
|
|
|
|
|
|
if (millis()-raingauge_lasttimereset > d.senddelaymax) {
|
|
|
|
|
raingauge_idleflag=true; //raingauge didn't flip for a long time
|
|
|
|
|
}
|
|
|
|
|
if (raingauge_pulsecounter>0){ //if rg flipped
|
|
|
|
|
if (millis()-raingauge_lasttimereset > d.senddelaymax) { //last flip is before reset time
|
|
|
|
|
if (raingauge_idleflag) { //last flip is before reset time
|
|
|
|
|
value_raingauge=raingauge_pulsecounter*RAINGAUGE_FLIPAMOUNT; //set to fixed amount if flip was exactly at that time
|
|
|
|
|
raingauge_idleflag=false;
|
|
|
|
|
}else{
|
|
|
|
|
value_raingauge=3600000/(millis()-raingauge_lasttimereset)/raingauge_pulsecounter*RAINGAUGE_FLIPAMOUNT;
|
|
|
|
|
raingauge_idleflag=false;
|
|
|
|
|
}
|
|
|
|
|
_changed=true;
|
|
|
|
|
}
|
|
|
|
|