I have a metal datapoint script like this

var triggerSMSAction = false;
var thisText = "";
var NL = "\r\n";
var S = my.value;
print('my.value= '+my.value);
//print(my);

var resendMsgTimeDelay = 300;

var Ptr = -1;
var txt = "";



var theSecondsDelyforSignalVerification = 30;

//--mango timestamp value in milliseconds since the epoch
var now = new Date().getTime();
//print("now=",now);






var o1lastValue,o1_isLeak,o1;
o1 = getDataPointByXID("XID_MainDC_Leak_A");
// print(o1);
o1lastValue = o1.lastValue();
print ("o1lastValue =",o1lastValue);
o1_isLeak = o1lastValue.value;
print("o1_isLeak =",o1_isLeak);


if (o1_isLeak === true) {
    print ("now =",now);
    print ("o1LastValueTime =",o1lastValue.time);
	timeDiff = (now - o1lastValue.time)/1000;
	
	print("timeDiff =",timeDiff);
	
	if (timeDiff <= theSecondsDelyforSignalVerification) {o1_isLeak=false;}
}

//======================================================================
Ptr = Ptr + 1;
if (o1_isLeak === true){
         print("o1_isLeak=",o1_isLeak);
         print ("Debug it !!");
         if (!(S & Mask[Ptr])) { // 0101 & 0100 => 0100 => true
            // do stuff
            txt = 'Delay-Alarm';
            LOG.info(txt);

			S = S | Mask[Ptr] ;
			triggerSMSAction = true;
			thisText = thisText + txt + NL;
        }
    
 }else{
    
        if (S & Mask[Ptr]) { // 0101 & 0100 => 0100 => true
            // from true to false
            txt = 'Delay-reCover';
            LOG.info(txt);

			S = S ^ Mask[Ptr] ;
			triggerSMSAction = true;
			thisText = thisText + txt + NL;
        }
}

function getDataPointByXID(xid) {
  var dataPoints = DataPointQuery.query("eq(xid,"+xid+")");
  if( dataPoints.length !== 1 )
  throw LOG.info("Data point with xid '" + xid + "' not found.");
  return dataPoints[0].runtime;
}

I turn the datapoint "XID_MainDC_Leak_A" value to true but in the if (o1_isLeak === true) script will not work?
How do I do fix it?