 #include <SimpleTimer.h>        // Timer library
 #define BLYNK_PRINT Serial      // Turn this on to see basic Blynk activities
 //#define BLYNK_DEBUG           // Turn this on to see *everything* Blynk is doing... really fills up serial monitor!
-#include <ESP8266WiFi.h>
 #include <ESP8266mDNS.h>        // Required for OTA
 #include <WiFiUdp.h>            // Required for OTA
 #include <ArduinoOTA.h>         // Required for OTA

  timer.setInterval(1234L, sendStatus);       // Unit run status polling interval (for app Current Status display only).
  timer.setInterval(1000L, countRuntime);     // Counts blower runtime for daily accumulation displays.
  timer.setInterval(1000L, totalRuntime);     // Counts blower runtime.
  timer.setInterval(1000L, setClockTime);     // Creates a current time with leading zeros.
  //timer.setInterval(500L, alarmTimer);      // Alarms for low SA/RA split in heating or cooling.
  timer.setInterval(15432L, phantSend);       // ~15 sec run status updates to Phant runnting on a local Raspberry Pi.
  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.
}

void loop()  // To keep Blynk happy, keep most tasks out of the loop.

      Blynk.setProperty(V1, "color", "#ff0000");    // Supply is RED
      Blynk.setProperty(V0, "color", "#04C0F8");    // Return is BLUE
      hvacMode = TRUE;                              // FALSE = cooling, TRUE =  heating.
    }
    else if (tempSA <= tempRA && hvacMode == TRUE)
    {
      Blynk.setProperty(V1, "color", "#04C0F8");    // Supply is BLUE
      Blynk.setProperty(V0, "color", "#ff0000");    // Return is RED
      hvacMode = FALSE;                             // FALSE = cooling, TRUE =  heating.
    }
  }
}

void modeTracking()
{
  if (digitalRead(blowerPin) == LOW)  // If the blower is running...
  {
    if (tempSA > tempRA)              // and it looks like we're heating, then...
    {
      hvacMode = TRUE;                // TRUE = heating, and...
      ++todaysAccumRuntimeSecHeating; // count each heating second, but...
    }
    else if (tempSA < tempRA)         // if it looks like we're coolng, then...
    {
      hvacMode = FALSE;               // FALSE = cooling, and...
      ++todaysAccumRuntimeSecCooling; // count each cooling second.
    }
  }

