Did you try to just read the temperatures without the PID in-between?
Post a wiring diagram of your setup.
Please explain what this part of your code is expected to do:
if(millis() - windowStartTime>WindowSize)
{ //time to shift the Relay Window
windowStartTime += WindowSize;
}
if(Output < millis() - windowStartTime) digitalWrite(RELAY,HIGH);
else digitalWrite(RELAY,LOW);
Is the relay output connected to a heater? Does it make sense in that setup to have the on-time of that device as the output of the PID? So does the periodical on-time of that "heater" a direct relationship with the temperature output? It might be necessary to describe your setup in a bit more detail.