     server << "# TYPE temp_degrees gauge\n";
     snprintf(s_temp, 100,"temp_degrees{location=\"garage\",timespan=\"none\"} %.4f %li000\n", temperature, Time.now());
     snprintf(s_average_temp, 100, "temp_degrees{location=\"garage\",timespan=\"minute\"} %.4f %li000\n", minuteAverage, Time.now());
-    snprintf(s_outdoor_temp, 100, "temp_degrees{location=\"outdoors\",timespan=\"none\"} %.4f %li000\n\n", outdoorTemp, Time.now());
-    snprintf(s_power, 50, "# TYPE heater gauge\nheater %i %li000\n\n", power, Time.now());
-    snprintf(s_freemem, 110, "# Type free_mem_bytes\nfree_mem_bytes %lu %li000\n\n", freemem, Time.now());
+    snprintf(s_outdoor_temp, 100, "temp_degrees{location=\"outdoors\",timespan=\"none\"} %.4f %li000\n", outdoorTemp, Time.now());
+    snprintf(s_power_on_temp, 100, "temp_degrees{trigger=\"on\",timespan=\"none\"} %.4f %li000\n", tempOnThreshold, Time.now());
+    snprintf(s_power_off_temp, 100, "temp_degrees{trigger=\"off\",timespan=\"none\"} %.4f %li000\n\n", tempOffThreshold, Time.now());
 
     server << s_temp;
     server << s_average_temp;
     server << s_outdoor_temp;
+    server << s_power_on_temp;
+    server << s_power_off_temp;
+
+    server << "# TYPE heater gauge\n";
+    snprintf(s_power, 25, "heater %i %li000\n\n", power, Time.now());
+
     server << s_power;
+
+    server << "# Type free_mem_bytes\n";
+    snprintf(s_freemem, 90, "free_mem_bytes %lu %li000\n\n", freemem, Time.now());
+
     server << s_freemem;
   }
 }

  Particle.variable("min_average", minuteAverage);
  Particle.variable("temp_on", tempOnThreshold);
  Particle.variable("temp_off", tempOffThreshold);
  Particle.function("power", adjustPower);
  publishPowerStatus();

  webserver.setDefaultCommand(&metricsCmd);

    char s_temp[100];
    char s_average_temp[100];
    char s_outdoor_temp[100];
    char s_power_on_temp[100];
    char s_power_off_temp[100];
    char s_power[25];
    char s_freemem[90];
    uint32_t freemem;

    freemem = System.freeMemory();
