   timer.setTimeout(100, vsync1);              // Syncs back vPins to survive hardware reset.
   timer.setTimeout(2000, vsync2);             // Syncs back vPins to survive hardware reset.
   timer.setTimeout(4000, vsync3);             // Syncs back vPins to survive hardware reset.
+  timer.setTimeout(8000, controlReset);
   timer.setInterval(30000L, tempUpdater);      // When bypass on, this evaluates controlling space against setpoint.
   timer.setInterval(30000L, tempControl);     // Temps (controlling space) that can control HVAC are synced.
+  timer.setInterval(1000L, tempControlSafety);
 
 }
 

        controllingSpace = "LK";
        coolingMode = 1;
        controllingTemp = tempLK;
        Blynk.setProperty(V39, "label", String("Setpoint - Controlled by LK (currently ") + tempLK + "F).");
        Blynk.setProperty(V39, "color", "#04C0F8");
        Blynk.setProperty(V40, "color", "#04C0F8");
        digitalWrite(fanRelay, HIGH);
        digitalWrite(coolingRelay, HIGH);
        digitalWrite(heatingRelay, HIGH);
        digitalWrite(bypassRelay, LOW);
        break;
      }
    case 9: {                             // Liv-controlled heating

{
  setpointTemp = param.asInt();
}

void controlReset() {
  controlMode = 0;
  controllingSpace = "";
  Blynk.setProperty(V39, "label", "Setpoint");
  digitalWrite(fanRelay, HIGH);
  digitalWrite(coolingRelay, HIGH);
  digitalWrite(heatingRelay, HIGH);
  digitalWrite(bypassRelay, HIGH);
  Blynk.virtualWrite(V40, 1);

  terminal.println((millis() / 1000) + String(" House in Ctrl mode."));
  terminal.flush();
}
// ******************************************************** HVAC CTRL END **********************************************

void vsync1()
{
  Blynk.syncVirtual(V16);    // currentStatus
  Blynk.syncVirtual(V39);    // setpointTemp
}

void vsync2()
{
