From 3ab75bcea602144f12b68d694df68f3a6a91bcdf Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Fri, 28 Aug 2020 04:58:38 +0300 Subject: [PATCH] progress --- include/Class/LineParsing.h | 32 ++++++++++++++++++++++++++++---- include/Class/SensorAnalog.h | 22 +++++++++------------- include/Class/SensorConverting.h | 19 ++++++++++--------- src/Class/LineParsing.cpp | 1 + src/Sensors.cpp | 2 ++ 5 files changed, 50 insertions(+), 26 deletions(-) create mode 100644 src/Class/LineParsing.cpp diff --git a/include/Class/LineParsing.h b/include/Class/LineParsing.h index 2d84a385..006282b1 100644 --- a/include/Class/LineParsing.h +++ b/include/Class/LineParsing.h @@ -3,6 +3,7 @@ #include #include "Global.h" +#include "Utils/JsonUtils.h" class LineParsing { protected: @@ -49,7 +50,7 @@ class LineParsing { if (i == 5) _order = sCmd.next(); } - for (int i = 1; i < 6; i++) { + for (int i = 1; i < 10; i++) { String arg = sCmd.next(); if (arg != "") { if (arg.indexOf("pin[") != -1) { @@ -64,16 +65,24 @@ class LineParsing { if (arg.indexOf("db[") != -1) { _db = extractInner(arg); } + if (arg.indexOf("map[") != -1) { + _map = extractInner(arg); + } + if (arg.indexOf("c[") != -1) { + _c = extractInner(arg); + } } } _page.replace("#", " "); - _descr.replace("#", " "); + _descr.replace("#", " "); createWidgetClass(_descr, _page, _order, _file, _key); } + //jsonWriteStr(configOptionJson, _key + "_pin", _pin); + String gkey() { return _key; } @@ -90,14 +99,20 @@ class LineParsing { return _order; } String gpin() { - return _pin; + return _pin; // } String ginv() { - return _inv; + return _inv; // } String gstate() { return _state; } + String gmap() { + return _map; + } + String gc() { + return _c; + } void clear() { _key = ""; @@ -150,4 +165,13 @@ class LineParsing { const String getWidgetFileClass(const String& name) { return "/widgets/" + name + ".json"; } + + //String jsonWriteStr1(String& json, String name, String value) { + // DynamicJsonBuffer jsonBuffer; + // JsonObject& root = jsonBuffer.parseObject(json); + // root[name] = value; + // json = ""; + // root.printTo(json); + // return json; + //} }; diff --git a/include/Class/SensorAnalog.h b/include/Class/SensorAnalog.h index 0152d8f6..b4e69761 100644 --- a/include/Class/SensorAnalog.h +++ b/include/Class/SensorAnalog.h @@ -6,16 +6,11 @@ #include "Class/SensorConverting.h" #include "Global.h" -class SensorAnalog : public LineParsing, - public SensorConverting { +class SensorAnalog : public SensorConverting { public: - SensorAnalog() : LineParsing(), - SensorConverting(){}; + SensorAnalog() : SensorConverting(){}; - void SensorAnalogInit() { - //if (_pin != "") { - // pinMode(_pin.toInt(), INPUT); - //} + void SensorAnalogInit(String key) { } int SensorAnalogRead(String key, String pin) { @@ -28,15 +23,16 @@ class SensorAnalog : public LineParsing, pinInt = pinInt; value = analogRead(A0); #endif - float valueFl; //float valueFl = this->mapping(value); // valueFl = this->correction(valueFl); - eventGen(key, ""); - jsonWriteFloat(configLiveJson, key, valueFl); - MqttClient::publishStatus(key, String(valueFl)); + value = this->mapping(key, value); - Serial.println("[I] sensor '" + key + "' data: " + String(valueFl)); + eventGen(key, ""); + jsonWriteFloat(configLiveJson, key, value); + MqttClient::publishStatus(key, String(value)); + + Serial.println("[I] sensor '" + key + "' data: " + String(value)); return value; } }; diff --git a/include/Class/SensorConverting.h b/include/Class/SensorConverting.h index bb04f897..a324d281 100644 --- a/include/Class/SensorConverting.h +++ b/include/Class/SensorConverting.h @@ -9,20 +9,21 @@ class SensorConverting : public LineParsing { public: SensorConverting() : LineParsing(){}; - int mapping(int input) { - if (_map != "") { - _map.replace("map[", ""); - _map.replace("]", ""); + int mapping(String key, int input) { + String map_ = jsonReadStr(configOptionJson, key + "_map"); + if (map_ != "") { + map_.replace("map[", ""); + map_.replace("]", ""); input = map(input, - selectFromMarkerToMarker(_map, ",", 0).toInt(), - selectFromMarkerToMarker(_map, ",", 1).toInt(), - selectFromMarkerToMarker(_map, ",", 2).toInt(), - selectFromMarkerToMarker(_map, ",", 3).toInt()); + selectFromMarkerToMarker(map_, ",", 0).toInt(), + selectFromMarkerToMarker(map_, ",", 1).toInt(), + selectFromMarkerToMarker(map_, ",", 2).toInt(), + selectFromMarkerToMarker(map_, ",", 3).toInt()); } return input; } - float correction(float input) { + float correction(String key, float input) { _c.replace("c[", ""); _c.replace("]", ""); float coef = _c.toFloat(); diff --git a/src/Class/LineParsing.cpp b/src/Class/LineParsing.cpp new file mode 100644 index 00000000..d44476ef --- /dev/null +++ b/src/Class/LineParsing.cpp @@ -0,0 +1 @@ +#include "Class/LineParsing.h" \ No newline at end of file diff --git a/src/Sensors.cpp b/src/Sensors.cpp index e617d608..2dec60e1 100644 --- a/src/Sensors.cpp +++ b/src/Sensors.cpp @@ -99,12 +99,14 @@ void analogAdc() { sCmd.addCommand(key.c_str(), analogReading); sensorReadingMap += key + ","; jsonWriteStr(configOptionJson, key + "_pin", pin); + jsonWriteStr(configOptionJson, key + "_map", mySensorAnalog->gmap()); mySensorAnalog->clear(); } void analogReading() { String key = sCmd.order(); String pin = jsonReadStr(configOptionJson, key + "_pin"); + mySensorAnalog->SensorAnalogRead(key, pin); }