diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h index 00d4a68c..dc42c57a 100644 --- a/include/classes/IoTItem.h +++ b/include/classes/IoTItem.h @@ -10,14 +10,14 @@ struct IoTValue { class IoTItem { public: - IoTItem(String parameters); + IoTItem(const String ¶meters); virtual ~IoTItem() {} virtual void loop(); virtual void doByInterval(); virtual IoTValue execute(String command, std::vector& param); - virtual void regEvent(String value, String consoleInfo, bool error = false); - virtual void regEvent(float value, String consoleInfo, bool error = false); + virtual void regEvent(const String& value, const String& consoleInfo, bool error = false); + virtual void regEvent(float value, const String& consoleInfo, bool error = false); String getSubtype(); @@ -38,8 +38,8 @@ class IoTItem { bool enableDoByInt = true; virtual IoTGpio* getGpioDriver(); - virtual void setValue(IoTValue Value, bool generateEvent = true); - virtual void setValue(String valStr, bool generateEvent = true); + virtual void setValue(const IoTValue& Value, bool generateEvent = true); + virtual void setValue(const String& valStr, bool generateEvent = true); String getRoundValue(); //методы для графиков @@ -66,15 +66,15 @@ class IoTItem { bool _global = false; // характеристика айтема, что ему нужно слать и принимать события из внешнего мира }; -IoTItem* findIoTItem(String name); // поиск экземпляра элемента модуля по имени -String getItemValue(String name); // поиск плюс получение значения -bool isItemExist(String name); // существует ли айтем +IoTItem* findIoTItem(const String& name); // поиск экземпляра элемента модуля по имени +String getItemValue(const String& name); // поиск плюс получение значения +bool isItemExist(const String& name); // существует ли айтем StaticJsonDocument* getLocalItemsAsJSON(); // сбор всех локальных значений Items class externalVariable : IoTItem { // объект, создаваемый при получении информации о событии на другом контроллере для хранения информации о событии указанное время public: - externalVariable(String parameters); + externalVariable(const String& parameters); ~externalVariable(); void doByInterval(); // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения }; \ No newline at end of file diff --git a/include/utils/JsonUtils.h b/include/utils/JsonUtils.h index 3a6912e9..8418163f 100644 --- a/include/utils/JsonUtils.h +++ b/include/utils/JsonUtils.h @@ -10,20 +10,20 @@ extern String jsonWriteInt(String& json, String name, int value, bool e = true); extern String jsonWriteFloat(String& json, String name, float value, bool e = true); extern String jsonWriteBool(String& json, String name, boolean value, bool e = true); -extern bool jsonRead(String& json, String key, unsigned long& value, bool e = true); -extern bool jsonRead(String& json, String key, float& value, bool e = true); -extern bool jsonRead(String& json, String key, String& value, bool e = true); -extern bool jsonRead(String& json, String key, bool& value, bool e = true); -extern bool jsonRead(String& json, String key, int& value, bool e = true); +extern bool jsonRead(const String& json, String key, unsigned long& value, bool e = true); +extern bool jsonRead(const String& json, String key, float& value, bool e = true); +extern bool jsonRead(const String& json, String key, String& value, bool e = true); +extern bool jsonRead(const String& json, String key, bool& value, bool e = true); +extern bool jsonRead(const String& json, String key, int& value, bool e = true); -extern String jsonReadStr(String& json, String name, bool e = true); -extern int jsonReadInt(String& json, String name, bool e = true); -extern boolean jsonReadBool(String& json, String name, bool e = true); +extern String jsonReadStr(const String& json, String name, bool e = true); +extern int jsonReadInt(const String& json, String name, bool e = true); +extern boolean jsonReadBool(const String& json, String name, bool e = true); -extern bool jsonWriteStr_(String& json, String name, String value, bool e = true); -extern bool jsonWriteBool_(String& json, String name, bool value, bool e = true); -extern bool jsonWriteInt_(String& json, String name, int value, bool e = true); -extern bool jsonWriteFloat_(String& json, String name, float value, bool e = true); +extern bool jsonWriteStr_(String& json, const String& name, const String& value, bool e = true); +extern bool jsonWriteBool_(String& json, const String& name, bool value, bool e = true); +extern bool jsonWriteInt_(String& json, const String& name, int value, bool e = true); +extern bool jsonWriteFloat_(String& json, const String& name, float value, bool e = true); void writeUint8tValueToJsonString(uint8_t* payload, size_t length, size_t headerLenth, String& json); extern bool jsonMergeObjects(String& json1, String& json2, bool e = true); extern void jsonMergeDocs(JsonObject dest, JsonObjectConst src); diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index 37a59850..c63d12a7 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -6,7 +6,7 @@ #include "EventsAndOrders.h" //получение параметров в экземпляр класса -IoTItem::IoTItem(String parameters) { +IoTItem::IoTItem(const String& parameters) { jsonRead(parameters, F("int"), _interval); if (_interval == 0) enableDoByInt = false; _interval = _interval * 1000; @@ -58,7 +58,7 @@ String IoTItem::getValue() { } //определяем тип прилетевшей величины -void IoTItem::setValue(String valStr, bool generateEvent) { +void IoTItem::setValue(const String& valStr, bool generateEvent) { if (value.isDecimal = isDigitDotCommaStr(valStr)) { value.valD = valStr.toFloat(); } else { @@ -68,7 +68,7 @@ void IoTItem::setValue(String valStr, bool generateEvent) { } // -void IoTItem::setValue(IoTValue Value, bool generateEvent) { +void IoTItem::setValue(const IoTValue& Value, bool generateEvent) { value = Value; if (generateEvent) if (value.isDecimal) { @@ -79,22 +79,17 @@ void IoTItem::setValue(IoTValue Value, bool generateEvent) { } //когда событие случилось -void IoTItem::regEvent(String value, String consoleInfo, bool error) { +void IoTItem::regEvent(const String& value, const String& consoleInfo, bool error) { if (_needSave) { jsonWriteStr_(valuesFlashJson, _id, value); needSaveValues = true; } - - generateEvent(_id, value); publishStatusMqtt(_id, value); - publishStatusWs(_id, value); SerialPrint("i", "Sensor", consoleInfo + " '" + _id + "' data: " + value + "'"); - // проверка если global установлен то шлем всем о событии - // if (_global) { - // SerialPrint("i", F("=>ALLMQTT"), "Broadcast event: "); - // } + generateEvent(_id, value); + //отправка события другим устройствам в сети если не было ошибки============================== if (jsonReadBool(settingsFlashJson, "mqttin") && _global && !error) { String json = "{}"; @@ -120,7 +115,7 @@ String IoTItem::getRoundValue() { } } -void IoTItem::regEvent(float regvalue, String consoleInfo, bool error) { +void IoTItem::regEvent(float regvalue, const String& consoleInfo, bool error) { value.valD = regvalue; if (_multiply) value.valD = value.valD * _multiply; @@ -162,7 +157,7 @@ IoTGpio* IoTItem::getGpioDriver() { //сетевое общение==================================================================================================================================== -externalVariable::externalVariable(String parameters) : IoTItem(parameters) { +externalVariable::externalVariable(const String& parameters) : IoTItem(parameters) { prevMillis = millis(); // запоминаем текущее значение таймера для выполения doByInterval после int сек iAmLocal = false; // указываем, что это сущность прилетела из сети //Serial.printf("Call from externalVariable: parameters %s %d\n", parameters.c_str(), _interval); @@ -181,7 +176,7 @@ void externalVariable::doByInterval() { // для данного класса d IoTItem* myIoTItem; // поиск элемента модуля в существующей конфигурации -IoTItem* findIoTItem(String name) { +IoTItem* findIoTItem(const String& name) { for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { if ((*it)->getID() == name) return *it; } @@ -189,7 +184,7 @@ IoTItem* findIoTItem(String name) { return nullptr; } // поиск плюс получение значения -String getItemValue(String name) { +String getItemValue(const String& name) { IoTItem* tmp = findIoTItem(name); if (tmp) return tmp->getValue(); @@ -198,7 +193,7 @@ String getItemValue(String name) { } // существует ли айтем -bool isItemExist(String name) { +bool isItemExist(const String& name) { IoTItem* tmp = findIoTItem(name); if (tmp) return true; diff --git a/src/modules/exec/ButtonIn/ButtonIn.cpp b/src/modules/exec/ButtonIn/ButtonIn.cpp index e968eb18..700edce7 100644 --- a/src/modules/exec/ButtonIn/ButtonIn.cpp +++ b/src/modules/exec/ButtonIn/ButtonIn.cpp @@ -68,7 +68,7 @@ class ButtonIn : public IoTItem { _lastButtonState = _reading; } - void setValue(IoTValue Value, bool generateEvent = true) { + void setValue(const IoTValue& Value, bool generateEvent = true) { value = Value; if (generateEvent) regEvent((String)(int)value.valD, "ButtonIn"); } diff --git a/src/modules/exec/ButtonOut/ButtonOut.cpp b/src/modules/exec/ButtonOut/ButtonOut.cpp index d041f748..2f3005d1 100644 --- a/src/modules/exec/ButtonOut/ButtonOut.cpp +++ b/src/modules/exec/ButtonOut/ButtonOut.cpp @@ -37,7 +37,7 @@ class ButtonOut : public IoTItem { return {}; // команда поддерживает возвращаемое значения. Т.е. по итогу выполнения команды или общения с внешней системой, можно вернуть значение в сценарий для дальнейшей обработки } - void setValue(IoTValue Value, bool generateEvent = true) { + void setValue(const IoTValue& Value, bool generateEvent = true) { value = Value; IoTgpio.digitalWrite(_pin, _inv?!value.valD:value.valD); if (generateEvent) regEvent((String)(int)value.valD, "ButtonOut"); diff --git a/src/modules/exec/IoTServo/IoTServo.cpp b/src/modules/exec/IoTServo/IoTServo.cpp index d995918b..b2340558 100644 --- a/src/modules/exec/IoTServo/IoTServo.cpp +++ b/src/modules/exec/IoTServo/IoTServo.cpp @@ -52,7 +52,7 @@ class IoTServo : public IoTItem { return {}; } - void setValue(IoTValue Value, bool generateEvent = true) { + void setValue(const IoTValue& Value, bool generateEvent = true) { value = Value; if (value.isDecimal & (_oldValue != value.valD)) { _oldValue = value.valD; diff --git a/src/modules/exec/Pwm32/Pwm32.cpp b/src/modules/exec/Pwm32/Pwm32.cpp index 6ad209e8..a1d3cb99 100644 --- a/src/modules/exec/Pwm32/Pwm32.cpp +++ b/src/modules/exec/Pwm32/Pwm32.cpp @@ -54,7 +54,7 @@ class Pwm32 : public IoTItem { } } - void setValue(IoTValue Value, bool generateEvent = true) { + void setValue(const IoTValue& Value, bool generateEvent = true) { value = Value; ledcWrite(_ledChannel, value.valD); if (generateEvent) regEvent(value.valD, "Pwm32"); diff --git a/src/modules/exec/Pwm8266/Pwm8266.cpp b/src/modules/exec/Pwm8266/Pwm8266.cpp index 73c4493d..10cc1b01 100644 --- a/src/modules/exec/Pwm8266/Pwm8266.cpp +++ b/src/modules/exec/Pwm8266/Pwm8266.cpp @@ -44,7 +44,7 @@ class Pwm8266 : public IoTItem { } } - void setValue(IoTValue Value, bool generateEvent = true) { + void setValue(const IoTValue& Value, bool generateEvent = true) { value = Value; IoTgpio.analogWrite(_pin, value.valD); if (generateEvent) regEvent(value.valD, "Pwm8266"); diff --git a/src/modules/virtual/Loging/Loging.cpp b/src/modules/virtual/Loging/Loging.cpp index d9f5fdde..117afead 100644 --- a/src/modules/virtual/Loging/Loging.cpp +++ b/src/modules/virtual/Loging/Loging.cpp @@ -263,7 +263,7 @@ class Loging : public IoTItem { } } - void regEvent(String value, String consoleInfo, bool error = false) { + void regEvent(const String& value, const String& consoleInfo, bool error = false) { String userDate = getItemValue(id + "-date"); String currentDate = getTodayDateDotFormated(); //отправляем в график данные только когда выбран сегодняшний день @@ -306,12 +306,12 @@ class Date : public IoTItem { value.isDecimal = false; } - void setValue(String valStr) { + void setValue(const String& valStr) { value.valS = valStr; setValue(value); } - void setValue(IoTValue Value, bool generateEvent = true) { + void setValue(const IoTValue& Value, bool generateEvent = true) { value = Value; if (generateEvent) regEvent(value.valS, ""); //отправка данных при изменении даты diff --git a/src/modules/virtual/VButton/VButton.cpp b/src/modules/virtual/VButton/VButton.cpp index 44f846ad..b5411af0 100644 --- a/src/modules/virtual/VButton/VButton.cpp +++ b/src/modules/virtual/VButton/VButton.cpp @@ -6,7 +6,7 @@ class VButton : public IoTItem { public: VButton(String parameters): IoTItem(parameters) { } - void setValue(IoTValue Value, bool generateEvent = true) { + void setValue(const IoTValue& Value, bool generateEvent = true) { value = Value; if (generateEvent) regEvent((String)(int)value.valD, "VButton"); } diff --git a/src/modules/virtual/Variable/Variable.cpp b/src/modules/virtual/Variable/Variable.cpp index 0ecd533e..28d495ed 100644 --- a/src/modules/virtual/Variable/Variable.cpp +++ b/src/modules/virtual/Variable/Variable.cpp @@ -9,7 +9,7 @@ class Variable : public IoTItem { } // особенность данного модуля - просто хранение значения для сценария, нет событий - // void setValue(IoTValue Value, bool generateEvent = true) { + // void setValue(const IoTValue& Value, bool generateEvent = true) { // value = Value; // } diff --git a/src/utils/JsonUtils.cpp b/src/utils/JsonUtils.cpp index 141bd8e6..d35eb7d2 100644 --- a/src/utils/JsonUtils.cpp +++ b/src/utils/JsonUtils.cpp @@ -11,7 +11,7 @@ void jsonWriteStrDoc(DynamicJsonDocument& doc, String name, String value) { } // new============================================================================== -bool jsonRead(String& json, String key, unsigned long& value, bool e) { +bool jsonRead(const String& json, String key, unsigned long& value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -32,7 +32,7 @@ bool jsonRead(String& json, String key, unsigned long& value, bool e) { return ret; } -bool jsonRead(String& json, String key, float& value, bool e) { +bool jsonRead(const String& json, String key, float& value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -53,7 +53,7 @@ bool jsonRead(String& json, String key, float& value, bool e) { return ret; } -bool jsonRead(String& json, String key, String& value, bool e) { +bool jsonRead(const String& json, String key, String& value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -74,7 +74,7 @@ bool jsonRead(String& json, String key, String& value, bool e) { return ret; } -bool jsonRead(String& json, String key, bool& value, bool e) { +bool jsonRead(const String& json, String key, bool& value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -95,7 +95,7 @@ bool jsonRead(String& json, String key, bool& value, bool e) { return ret; } -bool jsonRead(String& json, String key, int& value, bool e) { +bool jsonRead(const String& json, String key, int& value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -117,7 +117,7 @@ bool jsonRead(String& json, String key, int& value, bool e) { } // new============================================================================== -bool jsonWriteStr_(String& json, String key, String value, bool e) { +bool jsonWriteStr_(String& json, const String& key, const String& value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -134,7 +134,7 @@ bool jsonWriteStr_(String& json, String key, String value, bool e) { return ret; } -bool jsonWriteBool_(String& json, String key, bool value, bool e) { +bool jsonWriteBool_(String& json, const String& key, bool value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -151,7 +151,7 @@ bool jsonWriteBool_(String& json, String key, bool value, bool e) { return ret; } -bool jsonWriteInt_(String& json, String key, int value, bool e) { +bool jsonWriteInt_(String& json, const String& key, int value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -168,7 +168,7 @@ bool jsonWriteInt_(String& json, String key, int value, bool e) { return ret; } -bool jsonWriteFloat_(String& json, String key, float value, bool e) { +bool jsonWriteFloat_(String& json, const String &key, float value, bool e) { bool ret = true; DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); @@ -220,7 +220,7 @@ void jsonMergeDocs(JsonObject dest, JsonObjectConst src) { } // depricated====================================================================== -String jsonReadStr(String& json, String name, bool e) { +String jsonReadStr(const String& json, String name, bool e) { DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); if (error) { @@ -232,7 +232,7 @@ String jsonReadStr(String& json, String name, bool e) { return doc[name].as(); } -boolean jsonReadBool(String& json, String name, bool e) { +boolean jsonReadBool(const String& json, String name, bool e) { DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); if (error) { @@ -244,7 +244,7 @@ boolean jsonReadBool(String& json, String name, bool e) { return doc[name].as(); } -int jsonReadInt(String& json, String name, bool e) { +int jsonReadInt(const String& json, String name, bool e) { DynamicJsonDocument doc(JSON_BUFFER_SIZE); DeserializationError error = deserializeJson(doc, json); if (error) {