From 0975a4eb7d42ef7f7bc85c1be8b8fd4a9a38cbee Mon Sep 17 00:00:00 2001 From: biver Date: Tue, 1 Mar 2022 20:16:12 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D0=BC=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20?= =?UTF-8?q?=D1=80=D0=B0=D1=81=D1=81=D0=B8=D0=BD=D1=85=D1=80=D0=BE=D0=BD?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B1=D0=B0=D0=B7=D1=8B?= =?UTF-8?q?=20=D0=B8=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B8?= =?UTF-8?q?=D1=80=D1=83=D0=B5=D0=BC=D1=8B=D1=85=20=D0=B7=D0=BD=D0=B0=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/classes/IoTItem.cpp | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index b4b7f782..1fdb4481 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -75,26 +75,28 @@ void IoTItem::regEvent(String value, String consoleInfo = "") { SerialPrint("i", "Sensor " + consoleInfo, "'" + _id + "' data: " + value + "'"); } -void IoTItem::regEvent(float value, String consoleInfo = "") { - if (_multiply) value = value * _multiply; - if (_plus) value = value + _multiply; +void IoTItem::regEvent(float regvalue, String consoleInfo = "") { + if (_multiply) regvalue = regvalue * _multiply; + if (_plus) regvalue = regvalue + _multiply; if (_round != 0) { - if (value > 0) { - value = (int)(value * _round + 0.5F); - value = value / _round; + if (regvalue > 0) { + regvalue = (int)(regvalue * _round + 0.5F); + regvalue = regvalue / _round; } - if (value < 0) { - value = (int)(value * _round - 0.5F); - value = value / _round; + if (regvalue < 0) { + regvalue = (int)(regvalue * _round - 0.5F); + regvalue = regvalue / _round; } - // value = (float)value / (_round ? pow(10, (int)_round) : 1); // TODO: решить как указывать округление, количество знаков после запятой или десятые сотые ... + // regvalue = (float)regvalue / (_round ? pow(10, (int)_round) : 1); // TODO: решить как указывать округление, количество знаков после запятой или десятые сотые ... } - if (_map1 != _map2) value = map(value, _map1, _map2, _map3, _map4); + if (_map1 != _map2) regvalue = map(regvalue, _map1, _map2, _map3, _map4); + + value.valD = regvalue; // убираем лишние нули char buf[20]; - sprintf(buf, "%g", value); + sprintf(buf, "%g", regvalue); regEvent((String)buf, consoleInfo); } From cf188070d5b3c16f7a4f412ca3305464fbf3e6da Mon Sep 17 00:00:00 2001 From: biver Date: Tue, 1 Mar 2022 20:56:58 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=94=D0=B5=D0=BB=D0=B0=D0=B5=D0=BC=20?= =?UTF-8?q?=D0=BE=D0=BA=D1=80=D1=83=D0=B3=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=83=D0=BA=D0=B0=D0=B7=D0=B0=D0=BD=D0=BD=D0=BE?= =?UTF-8?q?=D0=BC=D1=83=20=D0=BA=D0=BE=D0=BB=D0=B8=D1=87=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D0=B2=D1=83=20=D1=81=D0=B8=D0=BC=D0=B2=D0=BE=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=8F?= =?UTF-8?q?=D1=82=D0=BE=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/classes/IoTItem.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index 1fdb4481..322bc42c 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -78,17 +78,9 @@ void IoTItem::regEvent(String value, String consoleInfo = "") { void IoTItem::regEvent(float regvalue, String consoleInfo = "") { if (_multiply) regvalue = regvalue * _multiply; if (_plus) regvalue = regvalue + _multiply; - if (_round != 0) { - if (regvalue > 0) { - regvalue = (int)(regvalue * _round + 0.5F); - regvalue = regvalue / _round; - } - if (regvalue < 0) { - regvalue = (int)(regvalue * _round - 0.5F); - regvalue = regvalue / _round; - } - - // regvalue = (float)regvalue / (_round ? pow(10, (int)_round) : 1); // TODO: решить как указывать округление, количество знаков после запятой или десятые сотые ... + if (_round >= 0 && _round < 6) { + int sot = _round ? pow(10, (int)_round) : 1; + regvalue = round(regvalue*sot)/sot; } if (_map1 != _map2) regvalue = map(regvalue, _map1, _map2, _map3, _map4);