ขอทราบวิธี disable button widget ใน Blynk

ผมอยากให้ Button switch ใน blynk ให้ disableเอง หลังจากเปิดไฟครบเวลาแล้ว 
มิฉะนั้น มันจะทำงานอีกเพราะ ปุ่มถ้าเราไม่กดปุ่มซ้ำให้มันหยุด
เขียนโค้ดอย่างไรครับ

BLYNK_WRITE(V8)
{
if (param.asInt()==1)
{
start_hen_lamp=millis() ;
Blynk.virtualWrite(V34,“ก่อนmillis()=”);
Blynk.virtualWrite(V34,String(millis())+“---------------”);
Blynk.virtualWrite(V34,“***ก่อนstart_hen_lamp=“);
Blynk.virtualWrite(V34,String(start_hen_lamp)+”---------------“);
Blynk.virtualWrite(V34,”*******ก่อน
open_hen_lamp_period
60
1000=");
Blynk.virtualWrite(V34,String(open_hen_lamp_period
60
1000)+”---------------“);
Blynk.virtualWrite(V34,”**********ก่อน-if (millis() <start_hen_lamp +(open_hen_lamp_period601000))---------“);
Blynk.virtualWrite(V34,”***********start_hen_lamp +(open_hen_lamp_period
60
1000)======="+String(start_hen_lamp +(open_hen_lamp_period
60
1000))+“-------”);
Blynk.virtualWrite(V34,"***********ก่อน-if (millis() <start_hen_lamp +(open_hen_lamp_period601000))------------------");
Blynk.virtualWrite(V34,“millis()=“+String(millis())+”----------");
if (millis() <start_hen_lamp +(open_hen_lamp_period
60
1000))
{//900000=15min//60000=1min
while (millis() <start_hen_lamp +(open_hen_lamp_period
60
1000)) //900000=15min//60000=1min
{
Blynk.virtualWrite(V34, "เวลา
");
Blynk.virtualWrite(V34, formattedTime);
Blynk.virtualWrite(V34, “-----------”);
Blynk.virtualWrite(V34,"ในลูป-if (millis() <start_hen_lamp +(open_hen_lamp_period601000))-------------------");
digitalWrite(lamp_hen, 0);
Blynk.virtualWrite(V34,"ใน
millis()=“);
Blynk.virtualWrite(V34,String(millis())+”---------------");
Blynk.virtualWrite(V34,"ใน
start_hen_lamp+period=");
Blynk.virtualWrite(V34,String(start_hen_lamp +(open_hen_lamp_period
60
1000))+“---------------”);
Blynk.virtualWrite(V34,"ใน
open_hen_lamp_period
60
1000=”);
Blynk.virtualWrite(V34,String(open_hen_lamp_period
60
1000)+“---------------”);
lamp_hen_blynk.on();
}
// Blynk.setProperty(buttonVpin, “enabled”, true);
// Blynk.setProperty(buttonVpin, “enabled”, false);
}
else// (millis() <start_hen_lamp +(open_hen_lamp_period
60
60
1000)) //900000=15min//60000=1min
{
Blynk.virtualWrite(V8,0);
digitalWrite(lamp_hen, 1);
lamp_hen_blynk.off();
}

}
else
{
// delay(500 0);
digitalWrite(lamp_hen, 1);
lamp_hen_blynk.off();

}
}


ตอนนี้ที่ เวิร์ก ต้องใช้ while อยู่ดีครับ
แต่ต้องทำงานให้เสร็จทีละอย่างที่มี while
แบบนี้หรือเปล่าที่เขาเรียกว่ามี 1 core

BLYNK_WRITE(V8) 
  {
   if (param.asInt()==1) 
     {
      start_hen_lamp=millis() ;
      while (millis() <start_hen_lamp +(open_hen_lamp_period*60*1000))  //900000=15min//60000=1min
         {
            digitalWrite(lamp_hen, 0);
           Blynk.virtualWrite(V34,"*****เหลือเวลาอีก=");
           Blynk.virtualWrite(V34,String((start_hen_lamp +(open_hen_lamp_period*60*1000)-millis())/(60*1000) )+"นาที---------------");
         lamp_hen_blynk.on();
         }
        digitalWrite(lamp_hen, 1);
        lamp_hen_blynk.off();
        Blynk.virtualWrite(V8,0);

     }
  }

ผมมีหลอดไฟ อีกหลอด สำหรับ ลูกไก่ ใช้โค้ดแบบข้างบนเหมือนกัน
ถ้าหากหลอด1 ยังไม่เสร็จ หลอด2 ที่กด button switch ใน blynk จะต้องให้หลอด1 เสร็จก่อน
ถ้าหากว่าผมใช้ esp32 จะสามารถทำพร้อมกันได้เลยใช่ไหมครับ

ถ้าต้องการให้ทำพร้อมกันไม่ต้องรอกันก็ใช้ setinterval 2 ตัวทุก 3 วิ มันก็จะทำงานขนาดกันไปได้โดยไม่ต้องรอกันครับ

หรือจะเข้าขั้นแยก core0 core1 เลยก็ได้แต่ระดับนี้มองว่ายังไม่จำเป็นเท่าไหร่

อีกเรื่องคือแยก task เลยคล้าย timer.setinterval (อันนี้เราเรียกว่าเสมือนอิสระกันแต่ยังอยู่ใน core เดียวกัน) แต่ถ้า แยก task มันจะเป็นการแยกรันขนานจริงๆ

ขอบคุณ​ครับ​

ลองดูเป็นแนวทางครับ

ขอบคุณครับ.