       todaysDate = day();
     }
 
+    if (digitalRead(blowerPin) == LOW || digitalRead(fanPin) == LOW) {
+      ++currentFilterSec;                               // Counts how many seconds filter is used for HVAC or fan-only.
+      Blynk.virtualWrite(11, currentFilterSec);
+      currentFilterHours = (currentFilterSec / 3600);   // Converts those seconds to hours for display and other uses.
+    }
+
     if (yesterdayRuntime < 1)               // Displays yesterday's runtime in app, or 'None' is there's none.
     {
       Blynk.virtualWrite(14, "None");

  if (controlMode == 1 && digitalRead(blowerPin) == LOW && coolingMode == 0 && millis() >= controlStart + heatControlTimeout) {
    safetyShutoff();

    Blynk.notify(hour() + String(":") + minute() + ":" + second() + " " + month() + "/" + day() + " ERROR: Heater ran for more than " + (heatControlTimeout/60000) + " minutes.");
  }
  else if (controlMode == 1 && digitalRead(blowerPin) == LOW && coolingMode == 1 && millis() >= controlStart + coolControlTimeout) {
    safetyShutoff();

    Blynk.notify(hour() + String(":") + minute() + ":" + second() + " " + month() + "/" + day() + " ERROR: Cooler ran for more than " + (coolControlTimeout/60000) + " minutes.");
  }

}


void sendTemps()
{
  sensors.requestTemperatures();                                          // Polls the sensors
  tempRA = sensors.getTempF(ds18b20RA);
  tempSA = sensors.getTempF(ds18b20SA);
  tempSplit = tempRA - tempSA;

  // RETURN AIR
  if (digitalRead(blowerPin) == LOW)    // If HVAC blower running...
  {
    Blynk.virtualWrite(0, tempRA);      // ...display the temp...
  }
  else if (digitalRead(fanPin) == LOW)  // ...if fan-only running, display FAN, unless...
  {
    Blynk.virtualWrite(0, "FAN");
  }
  else if (tempRA <= 0 || tempRA > 150)
  {
    Blynk.virtualWrite(0, "ERR");       // ...there's an error, then display ERR, otherwise...
  }
  else{
    Blynk.virtualWrite(0, "OFF");       // ...display OFF.
  }

  // SUPPLY AIR
  if (digitalRead(blowerPin) == LOW)
  {
    Blynk.virtualWrite(1, tempSA);
  }
  else if (digitalRead(fanPin) == LOW)
  {
    Blynk.virtualWrite(1, "FAN");
  }
  else if (tempSA <= 0 || tempSA > 150)
  {
    Blynk.virtualWrite(1, "ERR");
  }
  else {
    Blynk.virtualWrite(1, "OFF");
  }

  if (digitalRead(blowerPin) == LOW) {    // If HVAC is running and...
