 class FlowController { // the set of valves and their config ////////////////
   public:
   int numValves = 3;         // WARNING! call init if resetting!
-  int cycleMins = 18; // TODO// how long is a flood/drain cycle?
+  int cycleMins = 30;        // how long is a flood/drain cycle?
   int maxSimultDrainers = 1; // how many beds can drain simultaneously?
   int minBedsWet = 1;        // min beds that are full or filling
   int maxBedsWet = 2;        // max beds that are full or filling

  // in beds with overflows can be 0; else will be cycle time minus fill time
  long startTime = -1;          // when to start cycling (after boot)    
  bool gotOverflow = false;     // does the growbed have an overflow?
  int fillLevel = 10;           // cms below the level sensor: drain point
  bool filling = false;         // true when closed / on
  long lastFlip = -1;           // millis at last state change
  int floodMins = 6; // TODO 10;

  Valve() { number = counter++; }
  void stateChange(bool newState) { // turn on or off

    int t = millis();
    dbg(valveDBG, "t = "); dbg(valveDBG, t);
    dbg(valveDBG, "; filling = "); dln(valveDBG, filling);
    if(filling &&
        (
          ( lastFlip + (floodMins * 60 * 1000) ) <= t  || full(now)
        )
      ) { // flood over
      dbg(valveDBG, "t = "); dln(valveDBG, t);
      dbg(valveDBG, "lastFlip = "); dln(valveDBG, lastFlip);
      dbg(valveDBG, "floodMins = "); dln(valveDBG, floodMins);
