diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index df39d6c..c31a787 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -117,6 +117,7 @@ static uint32_t factoryBtnPressTime = 0; static AgFirmwareMode fwMode = FW_MODE_I_9PSL; static bool ledBarButtonTest = false; static String fwNewVersion; +static int lastCellSignalQuality = 99; // CSQ SemaphoreHandle_t mutexMeasurementCycleQueue; static std::vector measurementCycleQueue; @@ -1475,14 +1476,20 @@ void networkSignalCheck() { auto result = cell->retrieveSignal(); if (result.status != CellReturnStatus::Ok) { agClient->setClientReady(false); + lastCellSignalQuality = 99; return; } + + // Save last signal quality + lastCellSignalQuality = result.data; + if (result.data == 99) { // 99 indicate cellular not attached to network agClient->setClientReady(false); return; } - Serial.printf("Cellular signal strength %d\n", result.data); + + Serial.printf("Cellular signal quality %d\n", result.data); } } @@ -1501,6 +1508,7 @@ void networkingTask(void *args) { if (networkOption == UseCellular) { Serial.println("Prepare first measures cycle to send on boot for 20s"); delay(20000); + networkSignalCheck(); newMeasurementCycle(); sendDataToServer(); measurementSchedule.update(); @@ -1558,7 +1566,10 @@ void newMeasurementCycle() { measurementCycleQueue.erase(measurementCycleQueue.begin()); } + // Get current measures auto mc = measurements.getMeasures(); + mc.signal = cell->csqToDbm(lastCellSignalQuality); // convert to RSSI + measurementCycleQueue.push_back(mc); Serial.println("New measurement cycle added to queue"); // Release mutex diff --git a/src/AgValue.cpp b/src/AgValue.cpp index 408a700..854cc03 100644 --- a/src/AgValue.cpp +++ b/src/AgValue.cpp @@ -827,6 +827,12 @@ std::string Measurements::buildMeasuresPayload(Measures &mc) { oss << std::round(mc.pm_03_pc[1]); } + oss << ","; + + if (mc.signal < 0) { + oss << mc.signal; + } + return oss.str(); } diff --git a/src/Libraries/airgradient-client b/src/Libraries/airgradient-client index e304eba..d24b369 160000 --- a/src/Libraries/airgradient-client +++ b/src/Libraries/airgradient-client @@ -1 +1 @@ -Subproject commit e304eba3f70ce72efd209f6ecb3564c927b94b63 +Subproject commit d24b369604becb54eacf899997e8b39d3d2bf4f8