Skip to content

Commit

Permalink
Fixed compatibility with newer versions of ajson
Browse files Browse the repository at this point in the history
  • Loading branch information
mp-se committed Aug 22, 2023
1 parent bdac577 commit 0cfbd05
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 78 deletions.
6 changes: 2 additions & 4 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,12 @@ build_flags =
#!python script/git_rev.py
lib_deps =
# Using local copy of these libraries
# https://github.com/mp-se/i2cdevlib.git#<document>
# https://github.com/mp-se/i2cdevlib.git#<document>
# https://github.com/mp-se/OneWire
# https://github.com/mp-se/Arduino-Temperature-Control-Library
# https://github.com/khoih-prog/ESP_WiFiManager
# https://github.com/khoih-prog/ESP_DoubleResetDetector
https://github.com/mp-se/tinyexpr#v1.0.0
https://github.com/mp-se/Arduino-Log#1.1.1
https://github.com/mp-se/ArduinoJson#v6.18.5
https://github.com/mp-se/ArduinoJson#v6.21.3
https://github.com/mp-se/arduinoCurveFitting#v1.0.6
https://github.com/mp-se/arduino-mqtt#v2.5.1
lib_deps32 =
Expand Down
42 changes: 21 additions & 21 deletions src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,27 +104,27 @@ void Config::createJson(DynamicJsonDocument& doc) {
cal["gz"] = _gyroCalibration.gz;

JsonObject cal2 = doc.createNestedObject(PARAM_FORMULA_DATA);
cal2["a1"] = reduceFloatPrecision(_formulaData.a[0], DECIMALS_TILT);
cal2["a2"] = reduceFloatPrecision(_formulaData.a[1], DECIMALS_TILT);
cal2["a3"] = reduceFloatPrecision(_formulaData.a[2], DECIMALS_TILT);
cal2["a4"] = reduceFloatPrecision(_formulaData.a[3], DECIMALS_TILT);
cal2["a5"] = reduceFloatPrecision(_formulaData.a[4], DECIMALS_TILT);
cal2["a6"] = reduceFloatPrecision(_formulaData.a[5], DECIMALS_TILT);
cal2["a7"] = reduceFloatPrecision(_formulaData.a[6], DECIMALS_TILT);
cal2["a8"] = reduceFloatPrecision(_formulaData.a[7], DECIMALS_TILT);
cal2["a9"] = reduceFloatPrecision(_formulaData.a[8], DECIMALS_TILT);
cal2["a10"] = reduceFloatPrecision(_formulaData.a[9], DECIMALS_TILT);

cal2["g1"] = reduceFloatPrecision(_formulaData.g[0], DECIMALS_SG);
cal2["g2"] = reduceFloatPrecision(_formulaData.g[1], DECIMALS_SG);
cal2["g3"] = reduceFloatPrecision(_formulaData.g[2], DECIMALS_SG);
cal2["g4"] = reduceFloatPrecision(_formulaData.g[3], DECIMALS_SG);
cal2["g5"] = reduceFloatPrecision(_formulaData.g[4], DECIMALS_SG);
cal2["g6"] = reduceFloatPrecision(_formulaData.g[5], DECIMALS_SG);
cal2["g7"] = reduceFloatPrecision(_formulaData.g[6], DECIMALS_SG);
cal2["g8"] = reduceFloatPrecision(_formulaData.g[7], DECIMALS_SG);
cal2["g9"] = reduceFloatPrecision(_formulaData.g[8], DECIMALS_SG);
cal2["g10"] = reduceFloatPrecision(_formulaData.g[9], DECIMALS_SG);
cal2["a1"] = serialized(String(_formulaData.a[0], DECIMALS_TILT));
cal2["a2"] = serialized(String(_formulaData.a[1], DECIMALS_TILT));
cal2["a3"] = serialized(String(_formulaData.a[2], DECIMALS_TILT));
cal2["a4"] = serialized(String(_formulaData.a[3], DECIMALS_TILT));
cal2["a5"] = serialized(String(_formulaData.a[4], DECIMALS_TILT));
cal2["a6"] = serialized(String(_formulaData.a[5], DECIMALS_TILT));
cal2["a7"] = serialized(String(_formulaData.a[6], DECIMALS_TILT));
cal2["a8"] = serialized(String(_formulaData.a[7], DECIMALS_TILT));
cal2["a9"] = serialized(String(_formulaData.a[8], DECIMALS_TILT));
cal2["a10"] = serialized(String(_formulaData.a[9], DECIMALS_TILT));

cal2["g1"] = serialized(String(_formulaData.g[0], DECIMALS_SG));
cal2["g2"] = serialized(String(_formulaData.g[1], DECIMALS_SG));
cal2["g3"] = serialized(String(_formulaData.g[2], DECIMALS_SG));
cal2["g4"] = serialized(String(_formulaData.g[3], DECIMALS_SG));
cal2["g5"] = serialized(String(_formulaData.g[4], DECIMALS_SG));
cal2["g6"] = serialized(String(_formulaData.g[5], DECIMALS_SG));
cal2["g7"] = serialized(String(_formulaData.g[6], DECIMALS_SG));
cal2["g8"] = serialized(String(_formulaData.g[7], DECIMALS_SG));
cal2["g9"] = serialized(String(_formulaData.g[8], DECIMALS_SG));
cal2["g10"] = serialized(String(_formulaData.g[9], DECIMALS_SG));
}

//
Expand Down
115 changes: 62 additions & 53 deletions src/webserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,17 @@ void WebServerHandler::webHandleConfig() {
double tempC = myTempSensor.getTempC(myConfig.isGyroTemp());
double gravity = calculateGravity(angle, tempC);

doc[PARAM_ANGLE] = reduceFloatPrecision(angle, DECIMALS_TILT);
doc[PARAM_ANGLE] = serialized(String(angle, DECIMALS_TILT));
doc[PARAM_GRAVITY_FORMAT] = String(myConfig.getGravityFormat());

// Format the adjustment so we get rid of rounding errors
if (myConfig.isTempF())
// We want the delta value (32F = 0C).
doc[PARAM_TEMP_ADJ] = reduceFloatPrecision(
convertCtoF(myConfig.getTempSensorAdjC()) - 32, DECIMALS_TEMP);
doc[PARAM_TEMP_ADJ] = serialized(
String(convertCtoF(myConfig.getTempSensorAdjC()) - 32, DECIMALS_TEMP));
else
doc[PARAM_TEMP_ADJ] =
reduceFloatPrecision(myConfig.getTempSensorAdjC(), DECIMALS_TEMP);
serialized(String(myConfig.getTempSensorAdjC(), DECIMALS_TEMP));

if (myConfig.isGravityTempAdj()) {
gravity = gravityTemperatureCorrectionC(
Expand All @@ -76,17 +76,17 @@ void WebServerHandler::webHandleConfig() {

if (myConfig.isGravityPlato()) {
doc[PARAM_GRAVITY] =
reduceFloatPrecision(convertToPlato(gravity), DECIMALS_PLATO);
serialized(String(convertToPlato(gravity), DECIMALS_PLATO));
} else {
doc[PARAM_GRAVITY] = reduceFloatPrecision(gravity, DECIMALS_SG);
doc[PARAM_GRAVITY] = serialized(String(gravity, DECIMALS_SG));
}

doc[PARAM_BATTERY] =
reduceFloatPrecision(myBatteryVoltage.getVoltage(), DECIMALS_BATTERY);
serialized(String(myBatteryVoltage.getVoltage(), DECIMALS_BATTERY));

FloatHistoryLog runLog(RUNTIME_FILENAME);
doc[PARAM_RUNTIME_AVERAGE] = reduceFloatPrecision(
runLog.getAverage() ? runLog.getAverage() / 1000 : 0, DECIMALS_RUNTIME);
doc[PARAM_RUNTIME_AVERAGE] = serialized(String(
runLog.getAverage() ? runLog.getAverage() / 1000 : 0, DECIMALS_RUNTIME));

#if defined(ESP8266)
doc[PARAM_PLATFORM] = "esp8266";
Expand Down Expand Up @@ -247,24 +247,27 @@ void WebServerHandler::webHandleStatus() {
double gravity = calculateGravity(angle, tempC);

doc[PARAM_ID] = myConfig.getID();
doc[PARAM_ANGLE] = myGyro.isConnected()
? reduceFloatPrecision(angle, DECIMALS_TILT)
: -1; // Indicate that we have no connection to gyro

if (myGyro.isConnected()) {
doc[PARAM_ANGLE] = serialized(String(angle, DECIMALS_TILT));
} else {
doc[PARAM_ANGLE] = -1; // Indicate that there is no connection to gyro
}

if (myConfig.isGravityTempAdj()) {
gravity = gravityTemperatureCorrectionC(
gravity, tempC, myAdvancedConfig.getDefaultCalibrationTemp());
}
if (myConfig.isGravityPlato()) {
doc[PARAM_GRAVITY] =
reduceFloatPrecision(convertToPlato(gravity), DECIMALS_PLATO);
serialized(String(convertToPlato(gravity), DECIMALS_PLATO));
} else {
doc[PARAM_GRAVITY] = reduceFloatPrecision(gravity, DECIMALS_SG);
doc[PARAM_GRAVITY] = serialized(String(gravity, DECIMALS_SG));
}
doc[PARAM_TEMP_C] = reduceFloatPrecision(tempC, DECIMALS_TEMP);
doc[PARAM_TEMP_F] = reduceFloatPrecision(convertCtoF(tempC), DECIMALS_TEMP);
doc[PARAM_TEMP_C] = serialized(String(tempC, DECIMALS_TEMP));
doc[PARAM_TEMP_F] = serialized(String(convertCtoF(tempC), DECIMALS_TEMP));
doc[PARAM_BATTERY] =
reduceFloatPrecision(myBatteryVoltage.getVoltage(), DECIMALS_BATTERY);
serialized(String(myBatteryVoltage.getVoltage(), DECIMALS_BATTERY));
doc[PARAM_TEMPFORMAT] = String(myConfig.getTempFormat());
doc[PARAM_GRAVITY_FORMAT] = String(myConfig.getGravityFormat());
doc[PARAM_SLEEP_MODE] = sleepModeAlwaysSkip;
Expand All @@ -285,8 +288,8 @@ void WebServerHandler::webHandleStatus() {
#endif

FloatHistoryLog runLog(RUNTIME_FILENAME);
doc[PARAM_RUNTIME_AVERAGE] = reduceFloatPrecision(
runLog.getAverage() ? runLog.getAverage() / 1000 : 0, DECIMALS_RUNTIME);
doc[PARAM_RUNTIME_AVERAGE] = serialized(String(
runLog.getAverage() ? runLog.getAverage() / 1000 : 0, DECIMALS_RUNTIME));

#if defined(ESP8266)
doc[PARAM_PLATFORM] = "esp8266";
Expand Down Expand Up @@ -710,9 +713,15 @@ void WebServerHandler::webHandleConfigAdvancedRead() {
doc[PARAM_HW_WIFI_CONNECT_TIMEOUT] = myAdvancedConfig.getWifiConnectTimeout();
doc[PARAM_HW_PUSH_TIMEOUT] = myAdvancedConfig.getPushTimeout();
float t = myAdvancedConfig.getDefaultCalibrationTemp();
doc[PARAM_HW_FORMULA_CALIBRATION_TEMP] =
myConfig.isTempC() ? t
: reduceFloatPrecision(convertCtoF(t), DECIMALS_TEMP);

if (myConfig.isTempC()) {
doc[PARAM_HW_FORMULA_CALIBRATION_TEMP] =
serialized(String(t, DECIMALS_TEMP));
} else {
doc[PARAM_HW_FORMULA_CALIBRATION_TEMP] =
serialized(String(convertCtoF(t), DECIMALS_TEMP));
}

doc[PARAM_HW_PUSH_INTERVAL_HTTP1] = myAdvancedConfig.getPushIntervalHttp1();
doc[PARAM_HW_PUSH_INTERVAL_HTTP2] = myAdvancedConfig.getPushIntervalHttp2();
doc[PARAM_HW_PUSH_INTERVAL_HTTP3] = myAdvancedConfig.getPushIntervalHttp3();
Expand Down Expand Up @@ -748,7 +757,7 @@ void WebServerHandler::webHandleFormulaRead() {
#endif

doc[PARAM_ID] = myConfig.getID();
doc[PARAM_ANGLE] = reduceFloatPrecision(myGyro.getAngle(), DECIMALS_TILT);
doc[PARAM_ANGLE] = serialized(String(myGyro.getAngle(), DECIMALS_TILT));
doc[PARAM_GRAVITY_FORMAT] = String(myConfig.getGravityFormat());
doc[PARAM_GRAVITY_FORMULA] = "";
doc[PARAM_ERROR] = "";
Expand All @@ -771,39 +780,39 @@ void WebServerHandler::webHandleFormulaRead() {
break;
}

doc["a1"] = reduceFloatPrecision(fd.a[0], DECIMALS_TILT);
doc["a2"] = reduceFloatPrecision(fd.a[1], DECIMALS_TILT);
doc["a3"] = reduceFloatPrecision(fd.a[2], DECIMALS_TILT);
doc["a4"] = reduceFloatPrecision(fd.a[3], DECIMALS_TILT);
doc["a5"] = reduceFloatPrecision(fd.a[4], DECIMALS_TILT);
doc["a6"] = reduceFloatPrecision(fd.a[5], DECIMALS_TILT);
doc["a7"] = reduceFloatPrecision(fd.a[6], DECIMALS_TILT);
doc["a8"] = reduceFloatPrecision(fd.a[7], DECIMALS_TILT);
doc["a9"] = reduceFloatPrecision(fd.a[8], DECIMALS_TILT);
doc["a10"] = reduceFloatPrecision(fd.a[9], DECIMALS_TILT);
doc["a1"] = serialized(String(fd.a[0], DECIMALS_TILT));
doc["a2"] = serialized(String(fd.a[1], DECIMALS_TILT));
doc["a3"] = serialized(String(fd.a[2], DECIMALS_TILT));
doc["a4"] = serialized(String(fd.a[3], DECIMALS_TILT));
doc["a5"] = serialized(String(fd.a[4], DECIMALS_TILT));
doc["a6"] = serialized(String(fd.a[5], DECIMALS_TILT));
doc["a7"] = serialized(String(fd.a[6], DECIMALS_TILT));
doc["a8"] = serialized(String(fd.a[7], DECIMALS_TILT));
doc["a9"] = serialized(String(fd.a[8], DECIMALS_TILT));
doc["a10"] = serialized(String(fd.a[9], DECIMALS_TILT));

if (myConfig.isGravityPlato()) {
doc["g1"] = reduceFloatPrecision(convertToPlato(fd.g[0]), DECIMALS_PLATO);
doc["g2"] = reduceFloatPrecision(convertToPlato(fd.g[1]), DECIMALS_PLATO);
doc["g3"] = reduceFloatPrecision(convertToPlato(fd.g[2]), DECIMALS_PLATO);
doc["g4"] = reduceFloatPrecision(convertToPlato(fd.g[3]), DECIMALS_PLATO);
doc["g5"] = reduceFloatPrecision(convertToPlato(fd.g[4]), DECIMALS_PLATO);
doc["g6"] = reduceFloatPrecision(convertToPlato(fd.g[5]), DECIMALS_PLATO);
doc["g7"] = reduceFloatPrecision(convertToPlato(fd.g[6]), DECIMALS_PLATO);
doc["g8"] = reduceFloatPrecision(convertToPlato(fd.g[7]), DECIMALS_PLATO);
doc["g9"] = reduceFloatPrecision(convertToPlato(fd.g[8]), DECIMALS_PLATO);
doc["g10"] = reduceFloatPrecision(convertToPlato(fd.g[9]), DECIMALS_PLATO);
doc["g1"] = serialized(String(convertToPlato(fd.g[0]), DECIMALS_PLATO));
doc["g2"] = serialized(String(convertToPlato(fd.g[1]), DECIMALS_PLATO));
doc["g3"] = serialized(String(convertToPlato(fd.g[2]), DECIMALS_PLATO));
doc["g4"] = serialized(String(convertToPlato(fd.g[3]), DECIMALS_PLATO));
doc["g5"] = serialized(String(convertToPlato(fd.g[4]), DECIMALS_PLATO));
doc["g6"] = serialized(String(convertToPlato(fd.g[5]), DECIMALS_PLATO));
doc["g7"] = serialized(String(convertToPlato(fd.g[6]), DECIMALS_PLATO));
doc["g8"] = serialized(String(convertToPlato(fd.g[7]), DECIMALS_PLATO));
doc["g9"] = serialized(String(convertToPlato(fd.g[8]), DECIMALS_PLATO));
doc["g10"] = serialized(String(convertToPlato(fd.g[9]), DECIMALS_PLATO));
} else {
doc["g1"] = reduceFloatPrecision(fd.g[0], DECIMALS_SG);
doc["g2"] = reduceFloatPrecision(fd.g[1], DECIMALS_SG);
doc["g3"] = reduceFloatPrecision(fd.g[2], DECIMALS_SG);
doc["g4"] = reduceFloatPrecision(fd.g[3], DECIMALS_SG);
doc["g5"] = reduceFloatPrecision(fd.g[4], DECIMALS_SG);
doc["g6"] = reduceFloatPrecision(fd.g[5], DECIMALS_SG);
doc["g7"] = reduceFloatPrecision(fd.g[6], DECIMALS_SG);
doc["g8"] = reduceFloatPrecision(fd.g[7], DECIMALS_SG);
doc["g9"] = reduceFloatPrecision(fd.g[8], DECIMALS_SG);
doc["g10"] = reduceFloatPrecision(fd.g[9], DECIMALS_SG);
doc["g1"] = serialized(String(fd.g[0], DECIMALS_SG));
doc["g2"] = serialized(String(fd.g[1], DECIMALS_SG));
doc["g3"] = serialized(String(fd.g[2], DECIMALS_SG));
doc["g4"] = serialized(String(fd.g[3], DECIMALS_SG));
doc["g5"] = serialized(String(fd.g[4], DECIMALS_SG));
doc["g6"] = serialized(String(fd.g[5], DECIMALS_SG));
doc["g7"] = serialized(String(fd.g[6], DECIMALS_SG));
doc["g8"] = serialized(String(fd.g[7], DECIMALS_SG));
doc["g9"] = serialized(String(fd.g[8], DECIMALS_SG));
doc["g10"] = serialized(String(fd.g[9], DECIMALS_SG));
}

#if LOG_LEVEL == 6 && !defined(WEB_DISABLE_LOGGING)
Expand Down
1 change: 1 addition & 0 deletions src_docs/source/releases.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ v1.4.0 (beta)
* Added possibility to set wifi settings in config (need manual reboot to apply)
* Updated dependencies to latest versions as of Aug -23
* Added feature to migrate formula and gyro calibration data from an existing ispindel configuration (don't do a full erase)
* Updated code so it now works with newer versions of ArduniJSON

v1.3.1
======
Expand Down

0 comments on commit 0cfbd05

Please sign in to comment.