diff -r 3d327db12cef -r 48de0f61e5ea src/MoniSpindels.cpp --- a/src/MoniSpindels.cpp Fri Jun 14 08:45:35 2024 +0200 +++ b/src/MoniSpindels.cpp Sat Jun 22 11:28:14 2024 +0200 @@ -74,8 +74,9 @@ void MoniSpindels::refreshTable() { QTableWidgetItem *item; + double plato, poly[4]; - QSqlQuery query("SELECT record,alias,node,online,mode,temperature,gravity,beercode,beername FROM mon_ispindels ORDER BY alias"); + QSqlQuery query("SELECT record,alias,node,online,mode,temperature,gravity,angle,calibrate,beercode,beername FROM mon_ispindels ORDER BY alias"); const QStringList labels({tr("Unit"), tr("Node"), tr("Status"), tr("Beer"), tr("Temperature"), tr("SG"), tr("Cal"), tr("Details")}); this->tableiSpindels->setColumnCount(8); @@ -114,10 +115,31 @@ } if (query.value("online").toInt()) { + /* + * Try to use the calibrate poly to recalcultate the SG. + */ + plato = query.value("gravity").toDouble(); + QJsonParseError parseError; + const auto& json = query.value("calibrate").toString(); + if (!json.trimmed().isEmpty()) { + const auto& formattedJson = QString("%1").arg(json); + QJsonDocument jsonResponse = QJsonDocument::fromJson(formattedJson.toUtf8(), &parseError); + QJsonObject jsonObj = jsonResponse.object(); + QJsonArray polyData = jsonObj.value("polyData").toArray(); + if (polyData.size() == 4) { + for (int i = 0; i < polyData.size(); i++) { + poly[i] = polyData.at(i).toDouble(); + } + double angle = query.value("angle").toDouble(); + /* New plato from current polynomial */ + plato = (poly[0] * pow(angle, 3)) + (poly[1] * pow(angle, 2)) + (poly[2] * angle) + poly[3]; + } + } + item = new QTableWidgetItem(QString("%1°C").arg(query.value("temperature").toDouble(), 4, 'f', 3, '0')); item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); this->tableiSpindels->setItem(i, 4, item); - double sg = Utils::plato_to_sg(query.value("gravity").toDouble()); + double sg = Utils::plato_to_sg(plato); item = new QTableWidgetItem(QString("%1").arg(sg, 5, 'f', 4, '0')); item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); this->tableiSpindels->setItem(i, 5, item);