diff --git a/project.properties b/project.properties index fcb569a..929d875 100644 --- a/project.properties +++ b/project.properties @@ -1,3 +1,3 @@ name=TempAlarmFirmware -dependencies.Adafruit_DHT=0.0.4 +dependencies.Adafruit_DHT=0.0.2 dependencies.Adafruit_IO_Particle=1.0.1 diff --git a/src/TempAlarmFirmware.ino b/src/TempAlarmFirmware.ino index 1b9373b..0024f2d 100644 --- a/src/TempAlarmFirmware.ino +++ b/src/TempAlarmFirmware.ino @@ -155,6 +155,8 @@ static void doAlarmIfNecessary(void) if ((now - lastAIOThresMillis) >= AIO_CHECK_MS) { + SERIAL.println("Getting thresholds from Adafruit IO"); + // Get latest values from Adafruit IO Adafruit_IO_Feed lowThresFeed = AIOClient->getFeed("temp-alarm.low-threshold"); FeedData lowThresLatest = lowThresFeed.receive(); @@ -162,7 +164,7 @@ static void doAlarmIfNecessary(void) { int newLowThres; lowThresLatest.intValue(&newLowThres); - if (newLowThres != sensorSettings.lowThres) + if ((newLowThres != 0) && (newLowThres != sensorSettings.lowThres)) { sensorSettings.lowThres = newLowThres; EEPROM.put(SETTINGS_ADDR, sensorSettings); @@ -170,6 +172,13 @@ static void doAlarmIfNecessary(void) SERIAL.printlnf("New Low Threshold: %d", sensorSettings.lowThres); } } + else + { + SERIAL.println("Adafruit IO low threshold is not valid!"); + } + + // Yield to Particle before retrieving the high threshold + Particle.process(); Adafruit_IO_Feed highThresFeed = AIOClient->getFeed("temp-alarm.high-threshold"); FeedData highThresLatest = highThresFeed.receive(); @@ -177,7 +186,7 @@ static void doAlarmIfNecessary(void) { int newHighThres; highThresLatest.intValue(&newHighThres); - if (newHighThres != sensorSettings.highThres) + if ((newHighThres != 0) && (newHighThres != sensorSettings.highThres)) { sensorSettings.highThres = newHighThres; EEPROM.put(SETTINGS_ADDR, sensorSettings); @@ -185,6 +194,10 @@ static void doAlarmIfNecessary(void) SERIAL.printlnf("New High Threshold: %d", sensorSettings.highThres); } } + else + { + SERIAL.println("Adafruit IO high threshold is not valid!"); + } lastAIOThresMillis = now; } @@ -274,6 +287,9 @@ static void doReportIfTime(void) SERIAL.println("Failed to publish temperature to Adafruit IO!"); } + // Yield to Particle before sending the humidity + Particle.process(); + Adafruit_IO_Feed humidityFeed = AIOClient->getFeed("temp-alarm.humidity"); snprintf(publishString, sizeof(publishString), "%.1f", currentHumid); if (!humidityFeed.send(publishString))