hi, motion detect sensor open relay

Hello, I added 1 sensor to my project, I am having problems, the lamp is on when the sensor detects motion. The sensor stops working when I turn on and off other relays from the web interface. can you help with the error?

// Load Wi-Fi library
#include <ESP8266WiFi.h>

// Replace with your network credentials
const char* ssid = "okhan"; // Input your wifi network name
const char* password = "atakan2009"; // Input your wifi password

// Set web server port number to 80
WiFiServer server(80);

// Variable to store the HTTP request
String header;

// Auxiliar variables to store the current output state
String relay1State = "off";
String relay2State = "off";
String relay3State = "off";
String relay4State = "off";

// Assign output variables to GPIO pins
const int relay1 = 5; // GPIO5 D1
const int relay2 = 4; // GPIO4 D2
const int relay3 = 14; // GPIO0 D5
const int relay4 = 12; // GPIO2 D6
int sensorPin = 2;          // pır sensor D4 PINE BAGLANACAK
int pirState = LOW;
int val = 0;
int relayPin = 0;           //RÖLE PİNİ D3 

void setup() {
  Serial.begin(115200);
 
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
  pinMode(relay3, OUTPUT);
  pinMode(relay4, OUTPUT);
  pinMode(sensorPin, INPUT);
  pinMode(relayPin, OUTPUT);
  

  digitalWrite(relay1, HIGH);
  digitalWrite(relay2, HIGH);
  digitalWrite(relay3, HIGH);
  digitalWrite(relay4, HIGH);

  
  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.begin();
}

void loop() {

  val = digitalRead(sensorPin); 
if (val == HIGH) {           
digitalWrite(relayPin, HIGH);  
delay(150);

if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
}
} else {
digitalWrite(relayPin, LOW);
delay(150);
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}

  
  WiFiClient client = server.available();   // Listen for incoming clients

  if (client) {                         
    Serial.println("New Client.");         
    String currentLine = "";                
    while (client.connected()) {           
      if (client.available()) {             
        char c = client.read();             
        Serial.write(c);                 
        header += c;
        if (c == '\n') {                 

          if (currentLine.length() == 0) {
   
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();

            // turns the GPIOs on and off
            if (header.indexOf("GET /5/on") >= 0)
            {
              Serial.println("GPIO 5 on");
              relay1State = "on";
              digitalWrite(relay1, LOW);
            }
            else if (header.indexOf("GET /5/off") >= 0)
            {
              Serial.println("GPIO 5 off");
              relay1State = "off";
              digitalWrite(relay1, HIGH);
            }
            else if (header.indexOf("GET /4/on") >= 0) {
              Serial.println("GPIO 4 on");
              relay2State = "on";
              digitalWrite(relay2, LOW);
            }
            else if (header.indexOf("GET /4/off") >= 0) {
              Serial.println("GPIO 4 off");
              relay2State = "off";
              digitalWrite(relay2, HIGH);
            }
            else if (header.indexOf("GET /0/on") >= 0)
            {
              Serial.println("GPIO 0 on");
              relay3State = "on";
              digitalWrite(relay3, LOW);
            }
            else if (header.indexOf("GET /0/off") >= 0)
            {
              Serial.println("GPIO 0 off");
              relay3State = "off";
              digitalWrite(relay3, HIGH);
            }
            else if (header.indexOf("GET /2/on") >= 0) {
              Serial.println("GPIO 2 on");
              relay4State = "on";
              digitalWrite(relay4, LOW);
            }
            else if (header.indexOf("GET /2/off") >= 0) {
              Serial.println("GPIO 2 off");
              relay4State = "off";
              digitalWrite(relay4, HIGH);
            }


       
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
      
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #195B6A; border: none; color: white; padding: 12px 24px;");
            client.println("text-decoration: none; font-size: 20px; margin: 2px; cursor: pointer;}");
            client.println(".button2 {background-color: #77878A;}</style></head>");

      
            client.println("<body><h1>NodeMCU Web Server</h1>");

  
            client.println("<p>Relay 1 - State " + relay1State + "</p>");
      
            if (relay1State == "off") {
              client.println("<p><a href=\"/5/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/5/off\"><button class=\"button button2\">OFF</button></a></p>");
            }

   
            client.println("<p>Relay 2 - State " + relay2State + "</p>");
    
            if (relay2State == "off") {
              client.println("<p><a href=\"/4/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/4/off\"><button class=\"button button2\">OFF</button></a></p>");
            }

            client.println("<p>Relay 3 - State " + relay3State + "</p>");
            // If the relay1State is off, it displays the ON button
            if (relay3State == "off") {
              client.println("<p><a href=\"/0/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/0/off\"><button class=\"button button2\">OFF</button></a></p>");
            }

  
            client.println("<p>Relay 4 - State " + relay4State + "</p>");
   
            if (relay4State == "off") {
              client.println("<p><a href=\"/2/on\"><button class=\"button\">ON</button></a></p>");
            } else {
              client.println("<p><a href=\"/2/off\"><button class=\"button button2\">OFF</button></a></p>");
            }

            client.println("</body></html>");

      
            client.println();
    
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') { 
          currentLine += c;      
        }
      }
    }
    // Clear the header variable
    header = "";
    // Close the connection
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
}

You appear to have a blocking loop when there is client activity which will prevent your sensor code running:

while (client.connected()) {
. . .
}

do I need to make an arrangement? are you a little help me?

I guess this is the code you have inserted because it does not otherwise match the exemplary indentation structure of the rest of it:

  val = digitalRead(sensorPin);
if (val == HIGH) {          
digitalWrite(relayPin, HIGH);  
delay(150);

if (pirState == LOW) {
Serial.println("Motion detected!");
pirState = HIGH;
}
} else {
digitalWrite(relayPin, LOW);
delay(150);
if (pirState == HIGH) {
Serial.println("Motion ended!");
pirState = LOW;
}
}

This will probably work fine on its own but if you are integrating it with other code, like the web server you have built, you'll have to recode this part to get rid of the delay statements. Use millis() instead.

Once you have done that, the simplest but maybe not the most elegant way is to put the PIR code in its own function and call it from the beginning of the loop and from within any blocking while loops.

What, incidentally, is the purpose of the string currentLine ?