Pls Help Me. Control Motion Detect Notifation Not run

HELLO with this code I control 4 relay with both physical buttons and blynk application. no problem. In addition to this code, I have added a motion detector, but the nodemcu is permanently connected and disconnected. and the motion detector does not work. The v0 button also does not work. where I could not find fault. can you help me


#define BLYNK_PRINT Serial  
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>
#define DHTPIN 01 // DHT PİN TX PİN  
#define DHTTYPE DHT11     // DHT 11 
#define ledPin 9 
#define pirPin D1 // motion detector

int pirState;
int val;
int x;

char auth[] = "aeb3a337085548fdbf496802c123e828";
//D1 HAREKET SENSORU BAGLA
char ssid[] = "okhan";
char pass[] = "atakan2009";

const int butonpin =  D5;  // fiziksel butonlar
const int butonpin1 = D6; // 
const int butonpin2 = D7; 
const int butonpin3 = 03; //
const int RolePin =  D4;         // röle çıkışları
const int RolePin1 = D2;
const int RolePin2 = D3;
const int RolePin3 = D8;
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
void ykilicaslanb();
void ykilicaslanb1();
void ykilicaslanb2();
void ykilicaslanb3();

int butonpindurumu = LOW;           // AÇIK
int RolePindurumu = HIGH;        // KAPALI
//
int butonpin1durumu = LOW;           // AÇIK
int RolePin1durumu = HIGH;        // KAPALI
//
int butonpin2durumu = LOW;           // AÇIK
int RolePin2durumu = HIGH;        // KAPALI
//
int butonpin3durumu = LOW;           // AÇIK
int RolePin3durumu = HIGH;        // KAPALI

//*******röle durumları*****************
#define YKA_AC 0                 // YKA_AC ve YKA_KAPA röle durumları boot ettiginde, 
#define YKA_KAPA 1                // akitfken kullanilacak pin durumu


void setup()
{
  Serial.begin (9600);
  Blynk.begin(auth, ssid, pass);
 dht.begin();
  pinMode(RolePin, OUTPUT);            //  pin durumlar
   pinMode(RolePin1, OUTPUT);            //  pin durumlar
    pinMode(RolePin2, OUTPUT);            //  pin durumlar
     pinMode(RolePin3, OUTPUT);            //  pin durumlar
  pinMode(butonpin, INPUT_PULLUP);        // buton olarak basıldığında açılacak
    pinMode(butonpin1, INPUT_PULLUP);        // buton olarak basıldığında açılacak
      pinMode(butonpin2, INPUT_PULLUP);        // buton olarak basıldığında açılacak
        pinMode(butonpin3, INPUT_PULLUP);        // buton olarak basıldığında açılacak
  digitalWrite(RolePin, RolePindurumu);
    digitalWrite(RolePin1, RolePin1durumu);
      digitalWrite(RolePin2, RolePin2durumu);
        digitalWrite(RolePin3, RolePin3durumu);
  digitalWrite(RolePin, YKA_KAPA);     // ilk bootta role durumlari
    digitalWrite(RolePin1, YKA_KAPA);     // ilk bootta role durumlari
      digitalWrite(RolePin2, YKA_KAPA);     // ilk bootta role durumlari
        digitalWrite(RolePin3, YKA_KAPA);    //ilk bootta role durumlari

        pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);

  // fiziksel buton haberlesme suresi milisaniye
  timer.setInterval(100L, ykilicaslanb); // röle çekim süresi
   timer.setInterval(100L, ykilicaslanb1);// röle çekim süresi
    timer.setInterval(100L, ykilicaslanb2);// röle çekim süresi
     timer.setInterval(100L, ykilicaslanb3);// röle çekim süresi
     timer.setInterval(500L, sensoryolla);//ısı ve nem sensor durumlari 

       timer.setInterval(100L, PIRval);
 timer.setInterval(100L, pir);
}

// sistem herzaman aktif kalacak sanal tuslara
BLYNK_CONNECTED()
{
  // fiziksel butondaki verileri ceki son durumlar telefonda goster. acik yada kapali durumlarini
  Blynk.syncVirtual(V1);
  Blynk.syncVirtual(V2);
  Blynk.syncVirtual(V3);
  Blynk.syncVirtual(V4);
  Blynk.syncVirtual(V0);
}

// butona basildiginda
// ceptelefonundaki buton aktif pasif durumu
BLYNK_WRITE(V1)
{                           
  RolePindurumu = param.asInt();
  digitalWrite(RolePin, RolePindurumu);
}

void ykilicaslanb()
{
  if (digitalRead(butonpin) == LOW)
  {
    // butonpindurumu basili degilken
    if (butonpindurumu != LOW)
    {
      // telefondaki role durumu
      RolePindurumu = !RolePindurumu;
      digitalWrite(RolePin, RolePindurumu);
      Blynk.virtualWrite(V1, RolePindurumu);  //butona basinca telefondaki butonun durumu
    }

    butonpindurumu = LOW; 
  }
  else
  {
    butonpindurumu = HIGH;
  }
}

//dneeme

BLYNK_WRITE(V2)
{                           
  RolePin1durumu = param.asInt();
  digitalWrite(RolePin1, RolePin1durumu);
}

void ykilicaslanb1()
{
  if (digitalRead(butonpin1) == LOW)
  {
    // butonpindurumu 
    if (butonpin1durumu != LOW)
    {
      // role durumu
      RolePin1durumu = !RolePin1durumu;
      digitalWrite(RolePin1, RolePin1durumu);
      Blynk.virtualWrite(V2, RolePin1durumu);  //butona basinca telefondaki butonun durumu
    }

    butonpin1durumu = LOW; 
  }
  else
  {
    butonpin1durumu = HIGH;
  }
}
////BUTON 3


BLYNK_WRITE(V3)
{                           
  RolePin2durumu = param.asInt();
  digitalWrite(RolePin2, RolePin2durumu);
}

void ykilicaslanb2()
{
  if (digitalRead(butonpin2) == LOW)
  {
    // butonpindurumu 
    if (butonpin2durumu != LOW)
    {
      // röle durumu
      RolePin2durumu = !RolePin2durumu;
      digitalWrite(RolePin2, RolePin2durumu);
      Blynk.virtualWrite(V3, RolePin2durumu);  //butona basinca telefondaki butonun durumu
    }

    butonpin2durumu = LOW; 
  }
  else
  {
    butonpin2durumu = HIGH;
  }
}
////BUTON 4
BLYNK_WRITE(V4)
{                           
  RolePin3durumu = param.asInt();
  digitalWrite(RolePin3, RolePin3durumu);
}

void ykilicaslanb3()
{
  if (digitalRead(butonpin3) == LOW)
  {
    // durumlar
    if (butonpin3durumu != LOW)
    {
      // Toggle relay durumu
      RolePin3durumu = !RolePin3durumu;
      digitalWrite(RolePin3, RolePin3durumu);
      Blynk.virtualWrite(V4, RolePin3durumu);  //butona basinca telefondaki butonun durumu
    }

    butonpin3durumu = LOW; 
  }
  else
  {
    butonpin3durumu = HIGH;
  }
}
//////


//HAREKET SENSOR
BLYNK_WRITE(V0){
 x = param.asInt();
 }

void PIRval(){
val = digitalRead(pirPin);
    if (val == HIGH) {
      digitalWrite(ledPin, HIGH);  
      }
      else {
        digitalWrite(ledPin, LOW); 
      }
   }

  void pir(){
  if (x == 1){
    if (digitalRead(pirPin) == HIGH){
 Blynk.notify("ALARM!!!");
 }
    }
  }

//HAREKET SENSOR BITISI
void sensoryolla()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // sicaklik olc

  if (isnan(h) || isnan(t)) {
    Serial.println("sensor okuma hatasi!");
    return;
  }
  // sanal butonlara derece yolla
  // v5 v6 
  Blynk.virtualWrite(V5, h); //NEM
  Blynk.virtualWrite(V6, t);// SICAKLIK
}



//////// buton bitisleri



void loop()
{
  Blynk.run();                               // blynk calis
  timer.run();                               // zaman calis
}

All of this 100ms functions are running fast, and trying to run at the exact same time, and bumping into the 500ms one every fifth iteration. That is all conspiring to causing your disconnections.