From 15aa8c8539b6bb5f6025273e876030ff629056dd Mon Sep 17 00:00:00 2001 From: Yuri Trikoz Date: Fri, 19 Jun 2020 07:27:06 +0300 Subject: [PATCH] Utils --- include/JsonUtils.h | 43 +++++++++++++ include/StringUtils.h | 64 ++++++++++++++++++++ src/Global.cpp | 2 + src/Sensors.cpp | 1 + src/main.cpp | 138 ++++-------------------------------------- 5 files changed, 122 insertions(+), 126 deletions(-) create mode 100644 include/JsonUtils.h create mode 100644 include/StringUtils.h diff --git a/include/JsonUtils.h b/include/JsonUtils.h new file mode 100644 index 00000000..41f0cd0a --- /dev/null +++ b/include/JsonUtils.h @@ -0,0 +1,43 @@ +#pragma once + +#include +#include + +String jsonReadStr(String& json, String name) { + DynamicJsonBuffer jsonBuffer; + JsonObject& root = jsonBuffer.parseObject(json); + return root[name].as(); +} + +int jsonReadInt(String& json, String name) { + DynamicJsonBuffer jsonBuffer; + JsonObject& root = jsonBuffer.parseObject(json); + return root[name]; +} + +String jsonWriteStr(String& json, String name, String volume) { + DynamicJsonBuffer jsonBuffer; + JsonObject& root = jsonBuffer.parseObject(json); + root[name] = volume; + json = ""; + root.printTo(json); + return json; +} + +String jsonWriteInt(String& json, String name, int volume) { + DynamicJsonBuffer jsonBuffer; + JsonObject& root = jsonBuffer.parseObject(json); + root[name] = volume; + json = ""; + root.printTo(json); + return json; +} + +String jsonWriteFloat(String& json, String name, float volume) { + DynamicJsonBuffer jsonBuffer; + JsonObject& root = jsonBuffer.parseObject(json); + root[name] = volume; + json = ""; + root.printTo(json); + return json; +} \ No newline at end of file diff --git a/include/StringUtils.h b/include/StringUtils.h new file mode 100644 index 00000000..5693520e --- /dev/null +++ b/include/StringUtils.h @@ -0,0 +1,64 @@ +#pragma once + +#include "Arduino.h" + +String selectToMarkerLast(String str, String found) { + int p = str.lastIndexOf(found); + return str.substring(p + found.length()); +} + +String selectToMarker(String str, String found) { + int p = str.indexOf(found); + return str.substring(0, p); +} + +String deleteAfterDelimiter(String str, String found) { + int p = str.indexOf(found); + return str.substring(0, p); +} + +String deleteBeforeDelimiter(String str, String found) { + int p = str.indexOf(found) + found.length(); + return str.substring(p); +} + +String deleteBeforeDelimiterTo(String str, String found) { + int p = str.indexOf(found); + return str.substring(p); +} + +String deleteToMarkerLast(String str, String found) { + int p = str.lastIndexOf(found); + return str.substring(0, p); +} + +String selectToMarkerPlus(String str, String found, int plus) { + int p = str.indexOf(found); + return str.substring(0, p + plus); +} + +String selectFromMarkerToMarker(String str, String found, int number) { + if (str.indexOf(found) == -1) return "not found"; // если строки поиск нет сразу выход + str += found; // добавим для корректного поиска + uint8_t i = 0; // Индекс перебора + do { + if (i == number) return selectToMarker(str, found); // если индекс совпал с позицией законцим вернем резултат + str = deleteBeforeDelimiter(str, found); // отбросим проверенный блок до разделителя + i++; // увеличим индекс + } while (str.length() != 0); // повторим пока строка не пустая + return "not found"; // Достигли пустой строки и ничего не нашли +} + +inline uint8_t hexStringToUint8(String hex) { + uint8_t tmp = strtol(hex.c_str(), NULL, 0); + if (tmp >= 0x00 && tmp <= 0xFF) { + return tmp; + } +} + +inline uint16_t hexStringToUint16(String hex) { + uint16_t tmp = strtol(hex.c_str(), NULL, 0); + if (tmp >= 0x0000 && tmp <= 0xFFFF) { + return tmp; + } +} diff --git a/src/Global.cpp b/src/Global.cpp index 49f9f05d..ff0f1245 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -1,5 +1,7 @@ #include "Global.h" +#include "JsonUtils.h" + TickerScheduler ts(TEST + 1); WiFiClient espClient; diff --git a/src/Sensors.cpp b/src/Sensors.cpp index d9703a65..256c956d 100644 --- a/src/Sensors.cpp +++ b/src/Sensors.cpp @@ -1,4 +1,5 @@ #include "Global.h" +#include "StringUtils.h" String perception(byte value); void bmp280T_reading(); diff --git a/src/main.cpp b/src/main.cpp index 8b6d24f2..369a670a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,113 +1,9 @@ #include "Global.h" -String jsonReadStr(String& json, String name) { - DynamicJsonBuffer jsonBuffer; - JsonObject& root = jsonBuffer.parseObject(json); - return root[name].as(); -} - -int jsonReadInt(String& json, String name) { - DynamicJsonBuffer jsonBuffer; - JsonObject& root = jsonBuffer.parseObject(json); - return root[name]; -} - -String jsonWriteStr(String& json, String name, String volume) { - DynamicJsonBuffer jsonBuffer; - JsonObject& root = jsonBuffer.parseObject(json); - root[name] = volume; - json = ""; - root.printTo(json); - return json; -} - -String jsonWriteInt(String& json, String name, int volume) { - DynamicJsonBuffer jsonBuffer; - JsonObject& root = jsonBuffer.parseObject(json); - root[name] = volume; - json = ""; - root.printTo(json); - return json; -} - -String jsonWriteFloat(String& json, String name, float volume) { - DynamicJsonBuffer jsonBuffer; - JsonObject& root = jsonBuffer.parseObject(json); - root[name] = volume; - json = ""; - root.printTo(json); - return json; -} - -uint8_t hexStringToUint8(String hex) { - uint8_t tmp = strtol(hex.c_str(), NULL, 0); - if (tmp >= 0x00 && tmp <= 0xFF) { - return tmp; - } -} - -uint16_t hexStringToUint16(String hex) { - uint16_t tmp = strtol(hex.c_str(), NULL, 0); - if (tmp >= 0x0000 && tmp <= 0xFFFF) { - return tmp; - } -} - void saveConfig() { writeFile("config.json", configSetup); } -//============================================================================================================ -//=============================================STRING=================================================== - -// --------Выделяем строку от конца строки до маркера----------------------------------------------------------- -String selectToMarkerLast(String str, String found) { - int p = str.lastIndexOf(found); - return str.substring(p + found.length()); -} - -String selectToMarker(String str, String found) { - int p = str.indexOf(found); - return str.substring(0, p); -} - -String deleteAfterDelimiter(String str, String found) { - int p = str.indexOf(found); - return str.substring(0, p); -} - -String deleteBeforeDelimiter(String str, String found) { - int p = str.indexOf(found) + found.length(); - return str.substring(p); -} - -String deleteBeforeDelimiterTo(String str, String found) { - int p = str.indexOf(found); - return str.substring(p); -} - -// -------------------Выделяем строку от конца строки до маркера ------------------------------------------------ -String deleteToMarkerLast(String str, String found) { - int p = str.lastIndexOf(found); - return str.substring(0, p); -} -// -------------------Выделяем строку от конца строки до маркера + ---------------------------------------------- -String selectToMarkerPlus(String str, String found, int plus) { - int p = str.indexOf(found); - return str.substring(0, p + plus); -} -//--------------------Выделяем строку от маркера до маркера ----------------------------------------------------- -String selectFromMarkerToMarker(String str, String found, int number) { - if (str.indexOf(found) == -1) return "not found"; // если строки поиск нет сразу выход - str += found; // добавим для корректного поиска - uint8_t i = 0; // Индекс перебора - do { - if (i == number) return selectToMarker(str, found); // если индекс совпал с позицией законцим вернем резултат - str = deleteBeforeDelimiter(str, found); // отбросим проверенный блок до разделителя - i++; // увеличим индекс - } while (str.length() != 0); // повторим пока строка не пустая - return "not found"; // Достигли пустой строки и ничего не нашли -} //--------------------Посчитать ----------------------------------------------------------------------------------- int count(String str, String found) { if (str.indexOf(found) == -1) return 0; // если строки поиск нет сразу выход @@ -120,40 +16,29 @@ int count(String str, String found) { return i; // Достигли пустой строки и ничего не нашли } - boolean isDigitStr(String str) { - for (int i = 0; i < str.length(); i++) { - if (!isDigit(str.charAt(i))) { + for (int i = 0; i < str.length(); i++) { + if (!isDigit(str.charAt(i))) { return false; } } return str.length(); } -// boolean digit(String str) { -// if (str == "0" || str == "1" || str == "2" || str == "3" || str == "4" || str == "5" || str == "6" || str == "7" || str == "8" || str == "9") { -// return true; -// } else { -// return false; -// } -// } - String getURL(String urls) { - String answer = ""; + String res = ""; HTTPClient http; - http.begin(urls); //HTTP + http.begin(urls); int httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { - answer = http.getString(); + res = http.getString(); } else { - answer = "error"; + res = "error"; } http.end(); - return answer; + return res; } -//=================================================================================================================== -//===========================================FILES=================================================================== -// ------------- Добавление файла ----------------------------------------------------------------------------------- + void safeDataToFile(String data, String Folder) { //String fileName = GetDate(); String fileName; @@ -259,8 +144,7 @@ void led_blink(String satus) { #endif #endif } -//========================================================================================================================= -//=========================================ОСТАВШАЯСЯ ОПЕРАТИВНАЯ ПАМЯТЬ=================================================== + void getMemoryLoad(String text) { #ifdef ESP8266 int all_memory = 52864; @@ -271,7 +155,9 @@ void getMemoryLoad(String text) { int memory_remain = ESP.getFreeHeap(); int memory_used = all_memory - memory_remain; int memory_load = (memory_used * 100) / all_memory; - if (memory_load > 65) Serial.print("Attention!!! too match memory used!!!"); + if (memory_load > 65) { + Serial.println("Memory low!"); + } Serial.print(text + " memory used:"); Serial.print(String(memory_load) + "%; "); Serial.print("memory remain: ");