   Blynk.run();
   timer.run();
   ArduinoOTA.handle();
-}
+
+  if (ranOnce == false && year() != 1970) {
+    Blynk.setProperty(V107, "label", String(hour()) + ":" + minute() + " " + month() + "/" + day() + " HVAC");
+    ranOnce = true;
+  }
+}
+
+void disconnectWatcher() {
+  if (Blynk.connected() == false && blynkFlag == false) {
+    ++blynkDisconnectCount;
+    blynkFlag = true;
+  }
+  else if (Blynk.connected() == true && blynkFlag == true) {
+    blynkFlag = false;
+  }
+}
+
+void disconnectReporter() {
+  Blynk.virtualWrite(V107, blynkDisconnectCount);
+}
+
 
 // ******************************************************** HVAC CTRL START **********************************************
 BLYNK_WRITE(V40) {


char myEmail[] = "email";

char* hostSF = "raspi";
char* streamId   = "publicKey";
char* privateKey = "privateKey";


int fanRelay = 16;      // WeMos pin D0.
int bypassRelay = 0;    // WeMos pin D3.

int controlSplit = 2;   // Predefined value of how much I want to heat or cool above/below setpoint.
int controllingTemp;
int setpointTemp;
String controllingSpace;
bool coolingMode;       // 1 = cooling. 0 = heating.
bool controlMode;
int tempKK, tempLK, tempAT;

long controlStart;
long controlRuntime;
long heatControlTimeout = 600000; // 600000 millis = 10 minutes
long coolControlTimeout = 120000000; // 120000000 millis = 20 minutes
bool controlLatch = FALSE;

bool blynkFlag;
int blynkDisconnectCount;
bool ranOnce;

void setup()
{
