Найди ошибки в коде: 
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// Задаем номера выводов
const int flowSensorPin = D1;
const int pumpPin = D2;
const int valvePin = D3;
const int buttonStartStopPin = D4;
const int buttonPauseResumePin = D5;

// Время перекачки в минутах и объем воды в литрах
float timeToPump = 1.0;
float volumeToPump = 3.0;

unsigned long currentTime;
unsigned long prevTime = 0;
unsigned long pumpInterval;
unsigned long prevPumpInterval;

volatile unsigned int flowCount;
float flowRate;
float currentVolume;

unsigned long startTime;

boolean pumpRunning = false;
boolean pumpPaused = false;

// Настройки для Wi-Fi
const char* ssid = "SSID";
const char* password = "PASSWORD";

// Настройки для веб сервера
ESP8266WebServer server(80);

void setup() {
  pinMode(flowSensorPin, INPUT);
  pinMode(pumpPin, OUTPUT);
  pinMode(valvePin, OUTPUT);
  pinMode(buttonStartStopPin, INPUT_PULLUP);
  pinMode(buttonPauseResumePin, INPUT_PULLUP);

  // Запускаем обработчик прерываний
  attachInterrupt(digitalPinToInterrupt(flowSensorPin), flowPulseCounter, RISING);

  Serial.begin(115200);
  delay(10);

  // Соединение с Wi-Fi
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");

  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  server.on("/", handleRoot);

  server.begin();
  Serial.println("HTTP server started");

  // Вычисление временного интервала запуска помпы
  pumpInterval = (timeToPump*60 * 1000) / volumeToPump;

  currentTime = millis();
  prevPumpInterval = currentTime;
}

void loop() {
  // Обработка веб запросов
  server.handleClient();

  currentTime = millis();
  if((currentTime-prevPumpInterval) >= pumpInterval && pumpRunning && !pumpPaused) {
    prevPumpInterval = currentTime;
    if(currentVolume < volumeToPump) {
      pumpWater();
    }
    else {
      stopPump();
    }
  }

  // Проверка состояния кнопки старта/стопа
  if(digitalRead(buttonStartStopPin) == LOW) {
    delay(50);
    if(digitalRead(buttonStartStopPin) == LOW) {
      if(!pumpRunning) {
        startPump();
      }
      else {
        stopPump();
      }
    }
  }

  // Проверка состояния кнопки паузы/возобновления
  if(digitalRead(buttonPauseResumePin) == LOW) {
    delay(50);
    if(digitalRead(buttonPauseResumePin) == LOW) {
      if(!pumpPaused) {
        pausePump();
      }
      else {
        resumePump();
      }
    }
  }
}

// Отправка главной страницы через веб сервер
void handleRoot() {
  String message = "<html><body>"
                   "<h1>Система управления перекачкой воды</h1>";
  if (pumpRunning){
    message += "<h3>Состояние: РАБОТАЕТ</h3>";
  }
  else {
    message += "<h3>Состояние: ОСТАНОВЛЕНО</h3>";
  }
  message += "</body></html>";
  
  server.send(200, "text/html", message);
}

// Функция для обработки прерывания датчика потока
void ICACHE_RAM_ATTR flowPulseCounter() {
  flowCount++;
}

// Начало перекачки воды
void startPump() {
  digitalWrite(valvePin, HIGH);
  delay(500);
  digitalWrite(pumpPin, HIGH);
  startTime = millis();
  pumpRunning = true;
}

// Прекращение перекачки воды
void stopPump() {
  digitalWrite(valvePin, LOW);
  delay(500);
  digitalWrite(pumpPin, LOW);
  pumpRunning = false;
  currentVolume = 0;
  flowCount = 0;
}

// Перекачка определенного объема воды
void pumpWater() {
  flowRate = (flowCount / 450.0) * 60;
  currentVolume = flowRate / 60.0;
  flowCount = 0;

  if(currentVolume < volumeToPump) {
    digitalWrite(valvePin, HIGH);
    delay(500);
    digitalWrite(pumpPin, HIGH);
    startTime = millis();
    pumpRunning = true;
  }
  else {
    stopPump();
  }
}

// Приостановить перекачку воды
void pausePump() {
  digitalWrite(pumpPin, LOW);
  pumpPaused = true;
}

// Возобновить перекачку воды
void resumePump() {
  digitalWrite(pumpPin, HIGH);
  pumpPaused = false;
}