 {
   Blynk.run();
   timer.run();
+}
+
+void heartbeatOn()  // Blinks a virtual LED in the Blynk app to show the ESP is live and reporting.
+{
+  led1.on();
+  timer.setTimeout(2500L, heartbeatOff);
+}
+
+void heartbeatOff()
+{
+  led1.off();  // The OFF portion of the LED heartbeat indicator in the Blynk app
 }
 
 BLYNK_WRITE(V19) // App button to reset EEPROM stored total and address

    if (tempSplit <= 15 && secondsCount > alarmTime && alarmFor == 1)
    {
      Blynk.tweet(String("Low split (") + tempSplit + "°F) " + "recorded at " + hour() + ":" + minute() + ":" + second() + " " + month() + "/" + day() + "/" + year());
      Blynk.notify(String("Low HVAC split: ") + tempSplit + "°F");
      //terminal.println(String("Low HVAC split: ") + tempSplit + "°F");
      alarmFor = 5; // Arbitrary value indicating notification sent and locking out repetitive notifications.
    }

  Serial.begin(9600);
  Blynk.begin(auth, "ssid", "pw");

  EEPROM.begin(201); // Reminder: "201" means addresses 0 to 200 are available (not 1 to 201 or 0 to 201).

  sensors.begin();
  sensors.setResolution(ds18b20RA, 10);
