From 0b985b13e282579c76c3315e62a8bf60ee9943d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=B8rch?= Date: Sun, 18 Oct 2015 23:08:00 +0200 Subject: [PATCH 1/2] Folowing updates done: Corrected division in the code deciding whether to transmit or not, that resulted in generating an integer. Now it's generating floats as expected. Simplified detection for OTA bootloader, now detecting if MY_OTA_FIRMWARE_FEATURE is defined. If this is defined sensebender automaticly waits 300mS after each transmission Moved Battery status messages, so they are transmitted together with normal sensor updates (but only every 60th minute) --- .../SensebenderMicro/SensebenderMicro.ino | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/libraries/MySensors/examples/SensebenderMicro/SensebenderMicro.ino b/libraries/MySensors/examples/SensebenderMicro/SensebenderMicro.ino index 826b137..ed1e4c7 100644 --- a/libraries/MySensors/examples/SensebenderMicro/SensebenderMicro.ino +++ b/libraries/MySensors/examples/SensebenderMicro/SensebenderMicro.ino @@ -61,7 +61,7 @@ // Uncomment the line below, to transmit battery voltage as a normal sensor value //#define BATT_SENSOR 199 -#define RELEASE "1.3" +#define RELEASE "1.4" #define AVERAGES 2 @@ -88,7 +88,6 @@ // Pin definitions #define TEST_PIN A0 -#define OTA_ENABLE A1 #define LED_PIN A2 #define ATSHA204_PIN 17 // A3 @@ -111,7 +110,6 @@ int measureCount = 0; int sendBattery = 0; boolean isMetric = true; boolean highfreq = true; -boolean ota_enabled = false; boolean transmission_occured = false; // Storage of old measurements @@ -142,18 +140,11 @@ void setup() { digitalWrite(TEST_PIN, HIGH); // Enable pullup if (!digitalRead(TEST_PIN)) testMode(); - pinMode(OTA_ENABLE, INPUT); - digitalWrite(OTA_ENABLE, HIGH); - if (!digitalRead(OTA_ENABLE)) { - ota_enabled = true; - } - // Make sure that ATSHA204 is not floating pinMode(ATSHA204_PIN, INPUT); digitalWrite(ATSHA204_PIN, HIGH); digitalWrite(TEST_PIN,LOW); - digitalWrite(OTA_ENABLE, LOW); // remove pullup, save some power. digitalWrite(LED_PIN, HIGH); @@ -169,7 +160,10 @@ void setup() { raHum.clear(); sendTempHumidityMeasurements(false); sendBattLevel(false); - if (ota_enabled) Serial.println("OTA FW update enabled"); + +#ifdef MY_OTA_FIRMWARE_FEATURE + Serial.println("OTA FW update enabled"); +#endif } @@ -196,11 +190,13 @@ void loop() { sendBattery ++; bool forceTransmit = false; transmission_occured = false; +#ifndef MY_OTA_FIRMWARE_FEATURE if ((measureCount == 5) && highfreq) { - if (!ota_enabled) clock_prescale_set(clock_div_8); // Switch to 1Mhz for the reminder of the sketch, save power. + clock_prescale_set(clock_div_8); // Switch to 1Mhz for the reminder of the sketch, save power. highfreq = false; } +#endif if (measureCount > FORCE_TRANSMIT_INTERVAL) { // force a transmission forceTransmit = true; @@ -208,15 +204,16 @@ void loop() { } sendTempHumidityMeasurements(forceTransmit); - if (sendBattery > 60) +/* if (sendBattery > 60) { sendBattLevel(forceTransmit); // Not needed to send battery info that often sendBattery = 0; - } - - if (ota_enabled & transmission_occured) { + }*/ +#ifdef MY_OTA_FIRMWARE_FEATURE + if (transmission_occured) { wait(OTA_WAIT_PERIOD); } +#endif sleep(MEASURE_INTERVAL); } @@ -238,7 +235,7 @@ void sendTempHumidityMeasurements(bool force) raHum.addValue(data.humidityPercent); - float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100); + float diffTemp = abs(lastTemperature - (isMetric ? data.celsiusHundredths : data.fahrenheitHundredths)/100.0); float diffHum = abs(lastHumidity - raHum.getAverage()); Serial.print(F("TempDiff :"));Serial.println(diffTemp); @@ -261,6 +258,10 @@ void sendTempHumidityMeasurements(bool force) lastTemperature = temperature; lastHumidity = humidity; transmission_occured = true; + if (sendBattery > 60) { + sendBattLevel(true); // Not needed to send battery info that often + sendBattery = 0; + } } } From 359959a7aa5b1154d9b85dc1cb4777d7b0b805c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20M=C3=B8rch?= Date: Sun, 18 Oct 2015 23:13:53 +0200 Subject: [PATCH 2/2] Added version comments to file --- .../examples/SensebenderMicro/SensebenderMicro.ino | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/MySensors/examples/SensebenderMicro/SensebenderMicro.ino b/libraries/MySensors/examples/SensebenderMicro/SensebenderMicro.ino index ed1e4c7..0c92d38 100644 --- a/libraries/MySensors/examples/SensebenderMicro/SensebenderMicro.ino +++ b/libraries/MySensors/examples/SensebenderMicro/SensebenderMicro.ino @@ -31,10 +31,15 @@ * * * Version 1.3 - Thomas Bowman Mørch - * Improved transmission logic, eliminating spurious transmissions (when temperatuere / humidity fluctuates 1 up and down between measurements) - * + * Improved transmission logic, eliminating spurious transmissions (when temperatuere / humidity fluctuates 1 up and down between measurements) * Added OTA boot mode, need to hold A1 low while applying power. (uses slightly more power as it's waiting for bootloader messages) * + * Version 1.4 - Thomas Bowman Mørch + * + * Corrected division in the code deciding whether to transmit or not, that resulted in generating an integer. Now it's generating floats as expected. + * Simplified detection for OTA bootloader, now detecting if MY_OTA_FIRMWARE_FEATURE is defined. If this is defined sensebender automaticly waits 300mS after each transmission + * Moved Battery status messages, so they are transmitted together with normal sensor updates (but only every 60th minute) + * */ // Enable debug prints to serial monitor