Komme im Code nicht weiter - 2 Funktionen beeinflussen sich

Falls es dir hilft - ich würde es wahrscheinlich etwa so zu lösen versuchen:

#define STATUS_OFF 0
#define STATUS_WC 1
#define STATUS_GARTEN 2

uint8_t status =STATUS_OFF;
unsigned long letzterStatusWechselZeitpunkt;


void loop(){
  sammleAlleRelevantenDaten();
  uint8_t newStatus=STATUS_OFF;
  if (wasserImTank()){
     if (wcBrauchtWasser()){
        newStatus=STATUS_WC;
     } else if (gartenBrauchtWasser()){
        newStatus=STATUS_GARTEN;
    }
  }
  setStatus(newStatus);
  schlafEinWeilchen();
}

void setStatus(uint8_t  newStatus){
  if (newStatus != oldStatus){
// Ventile auf/zu , Pumpe an aus ....
    letzterStatusWechselZeitpunkt=millis();
    status=newStatus;
  }
}


/*
Hier wird's etwas tricky - Die Pumpe soll nur laufen, wenn es zu trocken ist
 UND
(Bewässerung läuft seit weniger als AAA Sekunden 
ODER
Bewässerung lief BBB sekunden nicht)
*/
void gartenBrauchtWasser(){
  if (feuchtGenug()) {return false;}
  if ( (status == STATUS_GARTEN) && (millis() - letzterStatusWechselZeitpunkt) / 1000 < AAA){return true;}
  if ( (status != STATUS_GARTEN) && (millis() - letzterStatusWechselZeitpunkt) / 1000 < BBB){return true;}
  return false;
}

Schönes Wochenende :slight_smile: