           dumpSerial();
 
           // send events to particle cloud used to trigger IFTTT push notification
-          if (Time.hour() == PUBLISHEVENT_TIME_HOUR && publishEvents == true) {
+          if (Time.hour() == PUBLISHEVENT_TIME_HOUR && particleEventPublished == true) {
             postSoilEventToParticle();
-            publishEvents = false;
+            particleEventPublished = false; // only publish once
           }
           if (Time.hour() > PUBLISHEVENT_TIME_HOUR) {
-            publishEvents = true;
+            particleEventPublished = true; // reset publish status
           }
       }
     }

      return 1; // indicate soil is to low
    } else if (soilValue > SOIL_THRESHOLD_HIGH) {
      return 2; // indicate soil is to high
    } else {
      return 0; // indicate normal reading
    }
    return 0;
}

void dumpSerial() {

elapsedMillis lastPost;

const unsigned int PUBLISHEVENT_TIME_HOUR = 15; // send events ~ 3pm
boolean particleEventPublished = true;

void setup() {
  Serial.begin(9600);
  Time.zone(1);

  // declare GPIO pins
  pinMode(led, OUTPUT);
  for (unsigned int i = 0; i < sizeof(soilSensors); i++) {
    pinMode(soilSensors[i].sensor, INPUT);
    pinMode(soilSensors[i].power, OUTPUT);
  }

  // init BME280 sensor
  if (!bme.begin()) {
    Serial.println("Could not find a valid BME280 sensor, check wiring!");
    while (1);
