From 4077dc776aa728083779714422196c72f54c2862 Mon Sep 17 00:00:00 2001 From: srdjastankovic Date: Tue, 27 Mar 2018 16:07:28 +0200 Subject: [PATCH 1/6] if readed form eeprom NaN set values to 0 --- wolksensor/SDK/core/config.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/wolksensor/SDK/core/config.c b/wolksensor/SDK/core/config.c index b81f3af..99d6caa 100644 --- a/wolksensor/SDK/core/config.c +++ b/wolksensor/SDK/core/config.c @@ -307,7 +307,7 @@ bool load_offset_status(void) { if (global_dependencies.config_read(&atmo_offset, CFG_OFFSET, 1, sizeof(atmo_offset))) { - LOG_PRINT(1, PSTR("Temperature offset is written: %g \n\rPressure offset is written: %g \n\rHumidity offset is written: %g \n\r"), atmo_offset[0], atmo_offset[1], atmo_offset[2]); + LOG_PRINT(1, PSTR("Temperature offset is written: %.1f \n\rPressure offset is written: %.1f \n\rHumidity offset is written: %.1f \n\r"), atmo_offset[0], atmo_offset[1], atmo_offset[2]); return true; } @@ -323,7 +323,16 @@ bool load_offset_factory_status(void) { if(global_dependencies.config_read(&atmo_offset_factory, CFG_OFFSET_FACTORY, 1, sizeof(atmo_offset_factory))) { - LOG_PRINT(1, PSTR("Temperature offset factory is written: %0.2f \n\rPressure offset factory is written: %0.2f \n\rHumidity offset factory is written: %0.2f \n\r"), atmo_offset_factory[0], atmo_offset_factory[1], atmo_offset_factory[2]); + if( isnan(atmo_offset_factory[0]) || isnan(atmo_offset_factory[1]) || isnan(atmo_offset_factory[2]) ) + { + LOG(1, "Could not read Temperature offset factory status, defaulting to 0 \n\rCould not read Pressure offset factory status, defaulting to 0 \n\rCould not read Humidity offset factory status, defaulting to 0"); + atmo_offset_factory[0] = 0; + atmo_offset_factory[1] = 0; + atmo_offset_factory[2] = 0; + + return false; + } + return true; } From 4e2f350c453528c716b85a54323f181e10c64f7b Mon Sep 17 00:00:00 2001 From: srdjastankovic Date: Tue, 27 Mar 2018 16:08:14 +0200 Subject: [PATCH 2/6] set decimal vlaue to 1 --- wolksensor/SDK/core/command_parser.c | 2 +- wolksensor/SDK/core/commands.c | 20 ++++++++++--------- wolksensor/SDK/core/protocol.c | 16 +++++++-------- .../functional/initialisation/constants.py | 4 ++-- .../tests/functional/tests/data_driven.py | 8 ++++---- .../tests/functional/tests/flow_states.py | 2 -- .../wolksensor/WolkSensor/platform_specific.h | 3 ++- 7 files changed, 28 insertions(+), 27 deletions(-) diff --git a/wolksensor/SDK/core/command_parser.c b/wolksensor/SDK/core/command_parser.c index a6199bf..1f50004 100644 --- a/wolksensor/SDK/core/command_parser.c +++ b/wolksensor/SDK/core/command_parser.c @@ -317,7 +317,7 @@ static bool parse_commad_argument(command_t* command, char* argument) case COMMAND_HUMIDITY_OFFSET: case COMMAND_PRESSURE_OFFSET: { - if (strlen(argument)>(MAX_INT_LENGTH+1) || !is_string_decimal_numeric(argument)) + if (strlen(argument)>(MAX_INT_LENGTH) || !is_string_decimal_numeric(argument)) return false; float value = atof(argument); diff --git a/wolksensor/SDK/core/commands.c b/wolksensor/SDK/core/commands.c index 90a6df9..cac6e9e 100644 --- a/wolksensor/SDK/core/commands.c +++ b/wolksensor/SDK/core/commands.c @@ -576,11 +576,11 @@ command_execution_result_t cmd_temp_offset(command_t* command, circular_buffer_t atmo_offset_factory[3] = 1; atmo_offset_factory[0] = command->argument.float_argument; if(global_dependencies.config_write(atmo_offset_factory, CFG_OFFSET_FACTORY, 1, sizeof(atmo_offset_factory))) - LOG_PRINT(1, PSTR("Factory temperature offset is written: %0.2f \n\r"), atmo_offset_factory[0]); + LOG_PRINT(1, PSTR("Factory temperature offset is written: %.1f \n\r"), atmo_offset_factory[0]); } atmo_offset[0] = command->argument.float_argument; if(global_dependencies.config_write(&atmo_offset, CFG_OFFSET, 1, sizeof(atmo_offset))) - LOG_PRINT(1, PSTR("Temperature offset is written: %g \n\r"), atmo_offset[0]); + LOG_PRINT(1, PSTR("Temperature offset is written: %.1f \n\r"), atmo_offset[0]); } append_temp_offset(atmo_offset[0], response_buffer); @@ -604,10 +604,11 @@ command_execution_result_t cmd_humidity_offset(command_t* command, circular_buff atmo_offset_factory[4] = 1; atmo_offset_factory[2] = command->argument.float_argument; if(global_dependencies.config_write(atmo_offset_factory, CFG_OFFSET_FACTORY, 1, sizeof(atmo_offset_factory))) - LOG_PRINT(1, PSTR("Factory temperature offset is written: %0.2f \n\r"), atmo_offset_factory[2]); + LOG_PRINT(1, PSTR("Factory temperature offset is written: %.1f \n\r"), atmo_offset_factory[2]); } atmo_offset[2] = command->argument.float_argument; - global_dependencies.config_write(&atmo_offset, CFG_OFFSET, 1, sizeof(atmo_offset)); + if(global_dependencies.config_write(&atmo_offset, CFG_OFFSET, 1, sizeof(atmo_offset))) + LOG_PRINT(1, PSTR("Humidity offset is written: %.1f \n\r"), atmo_offset[2]); } append_humidity_offset(atmo_offset[2], response_buffer); @@ -631,10 +632,11 @@ command_execution_result_t cmd_pressure_offset(command_t* command, circular_buff atmo_offset_factory[5] = 1; atmo_offset_factory[1] = command->argument.float_argument; if(global_dependencies.config_write(atmo_offset_factory, CFG_OFFSET_FACTORY, 1, sizeof(atmo_offset_factory))) - LOG_PRINT(1, PSTR("Factory temperature offset is written: %0.2f \n\r"), atmo_offset_factory[1]); + LOG_PRINT(1, PSTR("Factory temperature offset is written: %.1f \n\r"), atmo_offset_factory[1]); } atmo_offset[1] = command->argument.float_argument; - global_dependencies.config_write(&atmo_offset, CFG_OFFSET, 1, sizeof(atmo_offset)); + if(global_dependencies.config_write(&atmo_offset, CFG_OFFSET, 1, sizeof(atmo_offset))) + LOG_PRINT(1, PSTR("Pressure offset is written: %.1f \n\r"), atmo_offset[1]); } append_pressure_offset(atmo_offset[1], response_buffer); @@ -657,9 +659,9 @@ command_execution_result_t cmd_offset_factory(command_t* command, circular_buffe if(global_dependencies.config_write(&atmo_offset, CFG_OFFSET, 1, sizeof(atmo_offset))) { - LOG_PRINT(1, PSTR("Temperature offset is written: %g"), atmo_offset[0]); - LOG_PRINT(1, PSTR("Pressure offset is written: %g"), atmo_offset[1]); - LOG_PRINT(1, PSTR("Humidity offset is written: %g \n\r"), atmo_offset[2]); + LOG_PRINT(1, PSTR("Temperature offset is written: %.1f\n\r"), atmo_offset[0]); + LOG_PRINT(1, PSTR("Pressure offset is written: %.1f\n\r"), atmo_offset[1]); + LOG_PRINT(1, PSTR("Humidity offset is written: %.1f \n\r"), atmo_offset[2]); } else LOG(1, "Failed to write offset factory settings into offset eeprom"); diff --git a/wolksensor/SDK/core/protocol.c b/wolksensor/SDK/core/protocol.c index 18ce7cc..1700f46 100644 --- a/wolksensor/SDK/core/protocol.c +++ b/wolksensor/SDK/core/protocol.c @@ -51,7 +51,7 @@ static uint16_t serialize_sensor_reading(sensor_readings_t* sensor_reading, char { if(sensor_reading->values[i] != SENSOR_VALUE_NOT_SET) { - size += sprintf_P(buffer + size, PSTR("%c:%.2f,"), sensors[i].id, sensor_reading->values[i]); + size += sprintf_P(buffer + size, PSTR("%c:%.1f,"), sensors[i].id, sensor_reading->values[i]); } } @@ -759,21 +759,21 @@ bool append_mqtt_password(char* password, circular_buffer_t* response_buffer) bool append_temp_offset(uint16_t offset, circular_buffer_t* message_buffer) { - sprintf_P(tmp, PSTR("TEMP_OFFSET %g;"), atmo_offset[0]); + sprintf_P(tmp, PSTR("TEMP_OFFSET %.1f;"), atmo_offset[0]); circular_buffer_add_array(message_buffer, tmp, strlen(tmp)); return true; } bool append_humidity_offset(uint16_t offset, circular_buffer_t* message_buffer) { - sprintf_P(tmp, PSTR("HUMIDITY_OFFSET %g;"), atmo_offset[2]); + sprintf_P(tmp, PSTR("HUMIDITY_OFFSET %.1f;"), atmo_offset[2]); circular_buffer_add_array(message_buffer, tmp, strlen(tmp)); return true; } bool append_pressure_offset(uint16_t offset, circular_buffer_t* message_buffer) { - sprintf_P(tmp, PSTR("PRESSURE_OFFSET %g;"), atmo_offset[1]); + sprintf_P(tmp, PSTR("PRESSURE_OFFSET %.1f;"), atmo_offset[1]); circular_buffer_add_array(message_buffer, tmp, strlen(tmp)); return true; } @@ -786,12 +786,12 @@ bool append_offset_factory(char* offset_factory, circular_buffer_t* message_buff } else { - static char array[6]; + static char array[20]; - sprintf_P(tmp, PSTR("OFFSET_FACTORY P:%g,"), atmo_offset_factory[1]); - sprintf_P(array, PSTR("T:%g,"), atmo_offset_factory[0]); + sprintf_P(tmp, PSTR("OFFSET_FACTORY P:%.1f,"), atmo_offset_factory[1]); + sprintf_P(array, PSTR("T:%.1f,"), atmo_offset_factory[0]); strcat(tmp, array); - sprintf_P(array, PSTR("H:%g;"), atmo_offset_factory[2]); + sprintf_P(array, PSTR("H:%.1f;"), atmo_offset_factory[2]); strcat(tmp, array); LOG_PRINT(1, PSTR("tmp: %s \n\r"), tmp); diff --git a/wolksensor/tests/functional/initialisation/constants.py b/wolksensor/tests/functional/initialisation/constants.py index df26586..7c32e72 100644 --- a/wolksensor/tests/functional/initialisation/constants.py +++ b/wolksensor/tests/functional/initialisation/constants.py @@ -17,9 +17,9 @@ VID = 'VID_0403' PID = 'PID_6015' -SSID = "theHome" +SSID = "wolkabout" AUTH = "WPA2" -PASS = "Welcome26" +PASS = "Walkm3int0" URL = '52.213.16.227' HOSTNAME = 'api-demo.wolkabout.com' diff --git a/wolksensor/tests/functional/tests/data_driven.py b/wolksensor/tests/functional/tests/data_driven.py index e8e8cc7..444a224 100644 --- a/wolksensor/tests/functional/tests/data_driven.py +++ b/wolksensor/tests/functional/tests/data_driven.py @@ -158,17 +158,17 @@ def data_driven(): logging_device.error("Return value is %s" %return_value) logging_device.info("\n\r\t\t-------- TEMP_OFFSET --------") - if not test('TEMP_OFFSET', ['0', '2', '-1', '1.1', '1.76', '-1.5', '-0.92', '3.7', '-2'], ['3.71', '-2.01', '38.23', '-21.879', '', '-1.temperature.+1.QWE', 'app.wolkabout.com', '\Test1234', '!")(*&^%;']): + if not test('TEMP_OFFSET', ['0.0', '2.0', '-1.0', '1.1', '1.7', '-1.5', '-0.9', '3.7', '-2.0'], ['3.71', '-2.01', '38.23', '-21.879', '', '-1.temperature.+1.QWE', 'app.wolkabout.com', '\Test1234', '!")(*&^%;']): return_value = False logging_device.error("Return value is %s" %return_value) logging_device.info("\n\r\t\t-------- HUMIDITY_OFFSET --------") - if not test('HUMIDITY_OFFSET', ['0', '2', '-1', '1.3', '1.23', '-1.9', '-2.97', '3', '-3'], ['3.1', '-3.1', '78.12', '', '-1.humidity.+1.QWE', 'app.wolkabout.com', '\Test1234', '!")(*&^%;']): + if not test('HUMIDITY_OFFSET', ['0.0', '2.0', '-1.0', '1.3', '1.3', '-1.9', '-2.9', '3.0', '-3.0'], ['3.1', '-3.1', '78.12', '', '-1.humidity.+1.QWE', 'app.wolkabout.com', '\Test1234', '!")(*&^%;']): return_value = False logging_device.error("Return value is %s" %return_value) logging_device.info("\n\r\t\t-------- PRESSURE_OFFSET --------") - if not test('PRESSURE_OFFSET', ['0', '2', '-8', '8.2', '1.25', '-2.6', '-1.23', '10', '-10'], ['10.1', '-10.1', '94.65', '', '-1.pressure.+1.QWE', 'app.wolkabout.com', '\Test1234', '!")(*&^%;']): + if not test('PRESSURE_OFFSET', ['0.0', '2.0', '-8.0', '8.2', '1.5', '-2.6', '-1.3', '10.0', '-10.0'], ['10.1', '-10.1', '94.65', '', '-1.pressure.+1.QWE', 'app.wolkabout.com', '\Test1234', '!")(*&^%;']): return_value = False logging_device.error("Return value is %s" %return_value) @@ -181,7 +181,7 @@ def data_driven(): if not test('ACQUISITION', [], ['empty', 'CLEAR', '', '-1.pressure.+1.QWE', '!")(*&^%;']): return_value = False logging_device.error("Return value is %s" %return_value) - + logging_device.log("\n\r") return return_value diff --git a/wolksensor/tests/functional/tests/flow_states.py b/wolksensor/tests/functional/tests/flow_states.py index 814dc38..542205d 100644 --- a/wolksensor/tests/functional/tests/flow_states.py +++ b/wolksensor/tests/functional/tests/flow_states.py @@ -45,7 +45,6 @@ def flow_states(): return_value = False logging_device.error("Return value is %s. Response from command NOW; is: %s" %(return_value, response)) - ''' logging_device.info("\n\r\t\t-------- set Wifi with WPA secure --------") if not set_wifi_parameters('WolkSensorWlan2', 'WPA', 'WolkSensorFabrication'): return_value = False @@ -72,7 +71,6 @@ def flow_states(): if response != True: return_value = False logging_device.error("Return value is %s. Response from command NOW; is: %s" %(return_value, response)) - ''' logging_device.log("\t---False flow---") if not set_wifi_parameters('my0penwl4n', 'NONE', 'NULL'): diff --git a/wolksensor/wolksensor/WolkSensor/platform_specific.h b/wolksensor/wolksensor/WolkSensor/platform_specific.h index fa9fe38..eebd624 100644 --- a/wolksensor/wolksensor/WolkSensor/platform_specific.h +++ b/wolksensor/wolksensor/WolkSensor/platform_specific.h @@ -11,10 +11,11 @@ #include #include #include +#include #define FW_VERSION_MAJOR 4 // number 0 -99 #define FW_VERSION_MINOR 3 // number 0 -99 -#define FW_VERSION_PATCH 3 // number 0 -99 +#define FW_VERSION_PATCH 4 // number 0 -99 #define SYNCHRONIZED_BLOCK_START register8_t saved_sreg = SREG; cli(); #define SYNCHRONIZED_BLOCK_END SREG = saved_sreg; From 6e2e92d378be85ace5ca21b8c1bed93971c101b2 Mon Sep 17 00:00:00 2001 From: srdjastankovic Date: Tue, 27 Mar 2018 18:37:53 +0200 Subject: [PATCH 3/6] update movement to one scale --- wolksensor/tests/functional/tests/flow_states.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wolksensor/tests/functional/tests/flow_states.py b/wolksensor/tests/functional/tests/flow_states.py index 542205d..b110e91 100644 --- a/wolksensor/tests/functional/tests/flow_states.py +++ b/wolksensor/tests/functional/tests/flow_states.py @@ -44,7 +44,7 @@ def flow_states(): if response != True: return_value = False logging_device.error("Return value is %s. Response from command NOW; is: %s" %(return_value, response)) - + ''' logging_device.info("\n\r\t\t-------- set Wifi with WPA secure --------") if not set_wifi_parameters('WolkSensorWlan2', 'WPA', 'WolkSensorFabrication'): return_value = False @@ -71,7 +71,7 @@ def flow_states(): if response != True: return_value = False logging_device.error("Return value is %s. Response from command NOW; is: %s" %(return_value, response)) - + ''' logging_device.log("\t---False flow---") if not set_wifi_parameters('my0penwl4n', 'NONE', 'NULL'): return_value = False @@ -200,7 +200,7 @@ def set_offset(pressure_offset, temperature_offset, humidity_offset): logging_device.log("\t -->MOVE WolkSensor to continue testing<--") send_string_serial_wait("READINGS;") received_string = receive_string_serial() - while ",M:1.00;" not in received_string: + while ",M:1.0;" not in received_string: send_string_serial_wait("READINGS;") received_string = receive_string_serial() time.sleep(0.5) From 6f4e2ee3ac0da485881419e27ee5a136c7d381eb Mon Sep 17 00:00:00 2001 From: srdjastankovic Date: Tue, 27 Mar 2018 18:38:10 +0200 Subject: [PATCH 4/6] update RN --- RELEASE NOTES.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/RELEASE NOTES.txt b/RELEASE NOTES.txt index 78f85fa..612d671 100644 --- a/RELEASE NOTES.txt +++ b/RELEASE NOTES.txt @@ -10,6 +10,10 @@ WolkSensor is a device with built-in temperature, pressure, humidity and movement sensor. List of Firmware Release Versions for WolkSensor device in WolkSensor.bin file: +**Version 4.3.4** +- [BUGFIX] "nan" for OFFSET_FACTORY's while read from eeprom changed with 0,0,0 as default offset factory values +- [NEW] New decimal numbers scale is 1. Example T:20.1 + **Version 4.3.3** - [BUGFIX] Update certification time on every connection to the platform - [BUGFIX] Reject values for offset which are not decimal From ff6ac494eee79ff9d5e4346f111b2ff1727e0453 Mon Sep 17 00:00:00 2001 From: srdjastankovic Date: Wed, 28 Mar 2018 10:41:06 +0200 Subject: [PATCH 5/6] update formating --- wolksensor/wolksensor/src/util_conversions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wolksensor/wolksensor/src/util_conversions.c b/wolksensor/wolksensor/src/util_conversions.c index 9fb7450..a8bc21a 100644 --- a/wolksensor/wolksensor/src/util_conversions.c +++ b/wolksensor/wolksensor/src/util_conversions.c @@ -45,7 +45,7 @@ bool is_string_decimal_numeric(const char *str) { if(*str == '.') { - if(strlen(str)==1) + if(strlen(str) == 1) return false; ++str; ++number_of_dots; From 504ac7d9723d9f3779a5b05d15e5149b4ddae80c Mon Sep 17 00:00:00 2001 From: srdjastankovic Date: Wed, 28 Mar 2018 10:42:16 +0200 Subject: [PATCH 6/6] update formating --- wolksensor/wolksensor/src/util_conversions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wolksensor/wolksensor/src/util_conversions.c b/wolksensor/wolksensor/src/util_conversions.c index a8bc21a..155d345 100644 --- a/wolksensor/wolksensor/src/util_conversions.c +++ b/wolksensor/wolksensor/src/util_conversions.c @@ -57,7 +57,7 @@ bool is_string_decimal_numeric(const char *str) ++str; } - if( number_of_dots>1 ) + if(number_of_dots > 1) return false; return true;