From 2a1e647fc2f5ec2590ab3dc6620f754bab155d19 Mon Sep 17 00:00:00 2001 From: Joerg Lehmann Date: Fri, 20 Dec 2019 09:05:24 +0100 Subject: [PATCH] enhance calibration code --- mini-beieli-node.ino | 38 ++++++++++++++++++++------------------ mini_beieli_node.h | 2 +- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/mini-beieli-node.ino b/mini-beieli-node.ino index aa431fc..aa5e7d2 100644 --- a/mini-beieli-node.ino +++ b/mini-beieli-node.ino @@ -52,6 +52,7 @@ cCommandStream::CommandFn cmdCalibrateScaleA; cCommandStream::CommandFn cmdCalibrateScaleB; cCommandStream::CommandFn cmdSetDebugLevel; cCommandStream::CommandFn cmdGetDebugLevel; +cCommandStream::CommandFn cmdStopIterations; // the individual commmands are put in this table static const cCommandStream::cEntry sMyExtraCommmands[] = @@ -65,6 +66,7 @@ static const cCommandStream::cEntry sMyExtraCommmands[] = { "calibrate_scale_b", cmdCalibrateScaleB }, { "set_debug_level", cmdSetDebugLevel }, { "get_debug_level", cmdGetDebugLevel }, + { "stop_iterations", cmdStopIterations }, // other commands go here.... }; @@ -95,6 +97,7 @@ SENSOR_data last_sensor_reading; long iteration = 0; // what iteration number do we have, starts with 0 long package_counter = 0; // sent package counter bool send_in_progress = false; +bool stop_iterations = false; bool next_package_is_init_package = true; // generic timer @@ -706,10 +709,10 @@ void StartNewIteration() { if (config_data.debug_level > 0) { gCatena.SafePrintf("%010d - startSendingUplink(), my_position: %d, iteration: %d, package_counter: %d\n", millis(), my_position, iteration, package_counter); } - // the first 5 packets are "Init-Packets" or each INIT_PACKAGE_INTERVAL ... + // the first 12 packets are "Init-Packets" or each INIT_PACKAGE_INTERVAL ... startSendingUplink(next_package_is_init_package); - next_package_is_init_package = ((iteration < 5) || ((package_counter % INIT_PACKAGE_INTERVAL) == 0)); - + next_package_is_init_package = ((iteration < 12) || ((package_counter % INIT_PACKAGE_INTERVAL) == 0)); + if (config_data.debug_level > 1) { gLed.Set(LedPattern::TwoShort); } @@ -743,8 +746,8 @@ void StartNewIteration() { sleep_time_sec = 5; } - // for the first 5 iterations, we set the sleep time to 10 seconds only... - if (iteration <= 5) { + // for the first 12 iterations, we set the sleep time to 10 seconds only... + if (iteration <= 12) { sleep_time_sec = 10; } @@ -816,6 +819,7 @@ void startSendingUplink(bool firstTime) gLoRaWAN.SendBuffer((uint8_t*)&lora_data, sizeof(LORA_data), sendBufferDoneCb, NULL, fConfirmed, kUplinkPort); package_counter++; } + ClearLoraData(); } @@ -879,6 +883,8 @@ static void settleDoneCb( gCatena.SafePrintf("LMIC.dn2Dr: %i\n", LMIC.dn2Dr); gCatena.SafePrintf("LMIC.dn2Freq: %i\n", LMIC.dn2Freq); gCatena.SafePrintf("LMIC.rx1DrOffset: %i\n", LMIC.rx1DrOffset); + gCatena.SafePrintf("LMIC.adrAckReq: %i\n", LMIC.adrAckReq); + gCatena.SafePrintf("LMIC.adrEnabled: %i\n", LMIC.adrEnabled); // Terry ^^ } @@ -915,7 +921,9 @@ static void startNewIterationCb(osjob_t* pJob) gCatena.SafePrintf("%010d - startNewIterationCb\n", millis()); } - StartNewIteration(); + if (! stop_iterations) { + StartNewIteration(); + } } static void receiveMessage(void *pContext, uint8_t port, const uint8_t *pMessage, size_t nMessage) @@ -977,18 +985,6 @@ static void receiveMessage(void *pContext, uint8_t port, const uint8_t *pMessage } - if (port == 1 && nMessage == 1) { - if (pMessage[0] == 0) { - if (config_data.debug_level > 0) { - gCatena.SafePrintf("reset both scales to zero\n"); - } - ReadSensors(temp_sensor_data); - config_data.cal_w1_0 = temp_sensor_data.weight1; - config_data.cal_w2_0 = temp_sensor_data.weight2; - gCatena.getFram()->saveField(cFramStorage::kBme680Cal, (const uint8_t *)&config_data, sizeof(config_data)); - } - } - if (port == 1 && nMessage == 17) { cal_w1_0 = 0; cal_w1_0 += (long)pMessage[1] << 24; @@ -1173,3 +1169,9 @@ cCommandStream::CommandStatus cmdGetDebugLevel(cCommandStream *pThis, void *pCon return cCommandStream::CommandStatus::kSuccess; } + +cCommandStream::CommandStatus cmdStopIterations(cCommandStream *pThis, void *pContext, int argc, char **argv) +{ + stop_iterations = true; + return cCommandStream::CommandStatus::kSuccess; +} diff --git a/mini_beieli_node.h b/mini_beieli_node.h index 43bd76f..a295786 100644 --- a/mini_beieli_node.h +++ b/mini_beieli_node.h @@ -55,7 +55,7 @@ enum { | \****************************************************************************/ -static const int32_t fwVersion = 20191214; +static const int32_t fwVersion = 20191220; // wait between samples // 3 sec is a good delay so that load cell did not warm up