mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 11:59:12 +03:00
Utils
This commit is contained in:
43
include/JsonUtils.h
Normal file
43
include/JsonUtils.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <ArduinoJson.h>
|
||||||
|
|
||||||
|
String jsonReadStr(String& json, String name) {
|
||||||
|
DynamicJsonBuffer jsonBuffer;
|
||||||
|
JsonObject& root = jsonBuffer.parseObject(json);
|
||||||
|
return root[name].as<String>();
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
64
include/StringUtils.h
Normal file
64
include/StringUtils.h
Normal file
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
|
|
||||||
|
#include "JsonUtils.h"
|
||||||
|
|
||||||
TickerScheduler ts(TEST + 1);
|
TickerScheduler ts(TEST + 1);
|
||||||
|
|
||||||
WiFiClient espClient;
|
WiFiClient espClient;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
|
#include "StringUtils.h"
|
||||||
|
|
||||||
String perception(byte value);
|
String perception(byte value);
|
||||||
void bmp280T_reading();
|
void bmp280T_reading();
|
||||||
|
|||||||
138
src/main.cpp
138
src/main.cpp
@@ -1,113 +1,9 @@
|
|||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
|
|
||||||
String jsonReadStr(String& json, String name) {
|
|
||||||
DynamicJsonBuffer jsonBuffer;
|
|
||||||
JsonObject& root = jsonBuffer.parseObject(json);
|
|
||||||
return root[name].as<String>();
|
|
||||||
}
|
|
||||||
|
|
||||||
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() {
|
void saveConfig() {
|
||||||
writeFile("config.json", configSetup);
|
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) {
|
int count(String str, String found) {
|
||||||
if (str.indexOf(found) == -1) return 0; // если строки поиск нет сразу выход
|
if (str.indexOf(found) == -1) return 0; // если строки поиск нет сразу выход
|
||||||
@@ -120,40 +16,29 @@ int count(String str, String found) {
|
|||||||
return i; // Достигли пустой строки и ничего не нашли
|
return i; // Достигли пустой строки и ничего не нашли
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
boolean isDigitStr(String str) {
|
boolean isDigitStr(String str) {
|
||||||
for (int i = 0; i < str.length(); i++) {
|
for (int i = 0; i < str.length(); i++) {
|
||||||
if (!isDigit(str.charAt(i))) {
|
if (!isDigit(str.charAt(i))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return str.length();
|
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 getURL(String urls) {
|
||||||
String answer = "";
|
String res = "";
|
||||||
HTTPClient http;
|
HTTPClient http;
|
||||||
http.begin(urls); //HTTP
|
http.begin(urls);
|
||||||
int httpCode = http.GET();
|
int httpCode = http.GET();
|
||||||
if (httpCode == HTTP_CODE_OK) {
|
if (httpCode == HTTP_CODE_OK) {
|
||||||
answer = http.getString();
|
res = http.getString();
|
||||||
} else {
|
} else {
|
||||||
answer = "error";
|
res = "error";
|
||||||
}
|
}
|
||||||
http.end();
|
http.end();
|
||||||
return answer;
|
return res;
|
||||||
}
|
}
|
||||||
//===================================================================================================================
|
|
||||||
//===========================================FILES===================================================================
|
|
||||||
// ------------- Добавление файла -----------------------------------------------------------------------------------
|
|
||||||
void safeDataToFile(String data, String Folder) {
|
void safeDataToFile(String data, String Folder) {
|
||||||
//String fileName = GetDate();
|
//String fileName = GetDate();
|
||||||
String fileName;
|
String fileName;
|
||||||
@@ -259,8 +144,7 @@ void led_blink(String satus) {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
//=========================================================================================================================
|
|
||||||
//=========================================ОСТАВШАЯСЯ ОПЕРАТИВНАЯ ПАМЯТЬ===================================================
|
|
||||||
void getMemoryLoad(String text) {
|
void getMemoryLoad(String text) {
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
int all_memory = 52864;
|
int all_memory = 52864;
|
||||||
@@ -271,7 +155,9 @@ void getMemoryLoad(String text) {
|
|||||||
int memory_remain = ESP.getFreeHeap();
|
int memory_remain = ESP.getFreeHeap();
|
||||||
int memory_used = all_memory - memory_remain;
|
int memory_used = all_memory - memory_remain;
|
||||||
int memory_load = (memory_used * 100) / all_memory;
|
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(text + " memory used:");
|
||||||
Serial.print(String(memory_load) + "%; ");
|
Serial.print(String(memory_load) + "%; ");
|
||||||
Serial.print("memory remain: ");
|
Serial.print("memory remain: ");
|
||||||
|
|||||||
Reference in New Issue
Block a user