добавил новые json утилиты

This commit is contained in:
Dmitry Borisenko
2021-12-24 22:49:06 +01:00
parent dbe11162e5
commit 875f5009c2
10 changed files with 79 additions and 59 deletions

View File

@@ -1,9 +1,12 @@
#pragma once #pragma once
#include "Global.h" #include "Global.h"
#ifdef ASYNC_WEB_SERVER #ifdef ASYNC_WEB_SERVER
void asyncWebServerInit();
#endif
#ifdef ASYNC_WEB_SOCKETS
extern AsyncWebSocket ws; extern AsyncWebSocket ws;
extern AsyncEventSource events; extern AsyncEventSource events;
void asyncWebServerInit();
void asyncWebSocketsInit(); void asyncWebSocketsInit();
void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len); void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len);
#endif #endif

View File

@@ -4,17 +4,13 @@
#define FIRMWARE_VERSION 400 #define FIRMWARE_VERSION 400
//Размер буфера json //Размер буфера json
#define JSON_BUFFER_SIZE 4096 #define JSON_BUFFER_SIZE 1024
//выбор сервера (или асинхронный, или обычный) //выбор сервера
//#define ASYNC_WEB_SERVER //#define ASYNC_WEB_SERVER
//#define ASYNC_WEB_SOCKETS
#define STANDARD_WEB_SERVER #define STANDARD_WEB_SERVER
//если мы используем стандартный веб сервер то нужна библиотека веб сокетов
//если асинхронный то плагин сокетов включен в него
#ifdef STANDARD_WEB_SERVER
#define STANDARD_WEB_SOCKETS #define STANDARD_WEB_SOCKETS
#endif
#ifdef esp8266_4mb #ifdef esp8266_4mb
#define USE_LITTLEFS true #define USE_LITTLEFS true

View File

@@ -11,7 +11,6 @@
#include "WiFi.h" #include "WiFi.h"
#include <HTTPClient.h> #include <HTTPClient.h>
#include <HTTPUpdate.h> #include <HTTPUpdate.h>
#endif #endif
#ifdef ESP8266 #ifdef ESP8266
@@ -76,4 +75,8 @@ extern WebSocketsServer standWebSocket;
**********************************************************************************************************************/ **********************************************************************************************************************/
extern String settingsFlashJson; extern String settingsFlashJson;
extern String paramsFlashJson; extern String paramsFlashJson;
extern String paramsHeapJson; extern String paramsHeapJson;
extern DynamicJsonDocument settingsFlashJsonDoc;
extern DynamicJsonDocument paramsFlashJsonDoc;
extern DynamicJsonDocument paramsHeapJsonDoc;

View File

@@ -1,13 +1,11 @@
#pragma once #pragma once
#include "Global.h" #include "Global.h"
#include "Web.h" #include "Web.h"
#ifdef STANDARD_WEB_SERVER #ifdef STANDARD_WEB_SERVER
extern void standWebServerInit(); extern void standWebServerInit();
extern void standWebServerFiles();
extern bool handleFileRead(String path); extern bool handleFileRead(String path);
extern String getContentType(String filename); extern String getContentType(String filename);
#ifdef REST_FILE_OPERATIONS #ifdef REST_FILE_OPERATIONS
extern void handleFileUpload(); extern void handleFileUpload();
extern void handleFileDelete(); extern void handleFileDelete();

View File

@@ -2,20 +2,23 @@
#include "Global.h" #include "Global.h"
String jsonReadStr(String& json, String name); extern String jsonReadStrDoc(DynamicJsonDocument& doc, String name);
int jsonReadInt(String& json, String name); extern void jsonWriteStrDoc(DynamicJsonDocument& doc, String name, String value);
boolean jsonReadBool(String& json, String name);
String jsonWriteStr(String& json, String name, String value); extern String jsonWriteStr(String& json, String name, String value);
String jsonWriteInt(String& json, String name, int value); extern String jsonWriteInt(String& json, String name, int value);
String jsonWriteFloat(String& json, String name, float value); extern String jsonWriteFloat(String& json, String name, float value);
String jsonWriteBool(String& json, String name, boolean value); extern String jsonWriteBool(String& json, String name, boolean value);
bool jsonRead(String& json, String key, String& value); extern bool jsonRead(String& json, String key, String& value);
bool jsonRead(String& json, String key, bool& value); extern bool jsonRead(String& json, String key, bool& value);
bool jsonRead(String& json, String key, int& value); extern bool jsonRead(String& json, String key, int& value);
bool jsonWriteStr_(String& json, String name, String value); extern String jsonReadStr(String& json, String name);
bool jsonWriteBool_(String& json, String name, bool value); extern int jsonReadInt(String& json, String name);
bool jsonWriteInt_(String& json, String name, int value); extern boolean jsonReadBool(String& json, String name);
bool jsonWriteFloat_(String& json, String name, float value);
extern bool jsonWriteStr_(String& json, String name, String value);
extern bool jsonWriteBool_(String& json, String name, bool value);
extern bool jsonWriteInt_(String& json, String name, int value);
extern bool jsonWriteFloat_(String& json, String name, float value);

View File

@@ -1,7 +1,5 @@
#include "AsyncWebServer.h" #include "AsyncWebServer.h"
#ifdef ASYNC_WEB_SERVER #ifdef ASYNC_WEB_SERVER
AsyncWebSocket ws("/ws");
AsyncEventSource events("/events");
void asyncWebServerInit() { void asyncWebServerInit() {
String login = jsonReadStr(settingsFlashJson, "weblogin"); String login = jsonReadStr(settingsFlashJson, "weblogin");
@@ -70,6 +68,12 @@ void asyncWebServerInit() {
SerialPrint("i", F("WEB"), F("WebServer Init")); SerialPrint("i", F("WEB"), F("WebServer Init"));
} }
#endif
#ifdef ASYNC_WEB_SOCKETS
AsyncWebSocket ws("/ws");
AsyncEventSource events("/events");
void asyncWebSocketsInit() { void asyncWebSocketsInit() {
ws.onEvent(onWsEvent); ws.onEvent(onWsEvent);

View File

@@ -30,4 +30,8 @@ WebSocketsServer standWebSocket = WebSocketsServer(81);
String settingsFlashJson = "{}"; //переменная в которой хранятся все настройки, находится в оперативной памяти и синхронизированна с flash памятью String settingsFlashJson = "{}"; //переменная в которой хранятся все настройки, находится в оперативной памяти и синхронизированна с flash памятью
String paramsFlashJson = "{}"; //переменная в которой хранятся все параметры, находится в оперативной памяти и синхронизированна с flash памятью String paramsFlashJson = "{}"; //переменная в которой хранятся все параметры, находится в оперативной памяти и синхронизированна с flash памятью
String paramsHeapJson = "{}"; //переменная в которой хранятся все параметры, находится в оперативной памяти только String paramsHeapJson = "{}"; //переменная в которой хранятся все параметры, находится в оперативной памяти только
DynamicJsonDocument settingsFlashJsonDoc(JSON_BUFFER_SIZE);
DynamicJsonDocument paramsFlashJsonDoc(JSON_BUFFER_SIZE);
DynamicJsonDocument paramsHeapJsonDoc(JSON_BUFFER_SIZE);

View File

@@ -1,5 +1,8 @@
#include "StandWebServer.h" #include "StandWebServer.h"
#ifdef STANDARD_WEB_SERVER #ifdef STANDARD_WEB_SERVER
File fsUploadFile;
void standWebServerInit() { void standWebServerInit() {
// Кэшировать файлы для быстрой работы // Кэшировать файлы для быстрой работы
HTTP.serveStatic("/css/", FileFS, "/css/", "max-age=31536000"); // кеширование на 1 год HTTP.serveStatic("/css/", FileFS, "/css/", "max-age=31536000"); // кеширование на 1 год
@@ -19,11 +22,7 @@ void standWebServerInit() {
// httpUpdater.setup(&HTTP); // httpUpdater.setup(&HTTP);
// Запускаем HTTP сервер // Запускаем HTTP сервер
HTTP.begin(); HTTP.begin();
}
File fsUploadFile;
void standWebServerFiles() {
#ifdef REST_FILE_OPERATIONS #ifdef REST_FILE_OPERATIONS
SPIFFS.begin(); SPIFFS.begin();
{ {
@@ -224,7 +223,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
case WStype_BIN: { case WStype_BIN: {
Serial.printf("[%u] get binary length: %u\n", num, length); Serial.printf("[%u] get binary length: %u\n", num, length);
//hexdump(payload, length); // hexdump(payload, length);
// send message to client // send message to client
// standWebSocket.sendBIN(num, payload, length); // standWebSocket.sendBIN(num, payload, length);
@@ -246,5 +245,4 @@ void hexdump(const void* mem, uint32_t len, uint8_t cols = 16) {
Serial.printf("\n"); Serial.printf("\n");
} }
#endif #endif
#endif #endif

View File

@@ -12,25 +12,26 @@ void setup() {
//синхронизация глобальных переменных с flash //синхронизация глобальных переменных с flash
globalVarsSync(); globalVarsSync();
//подключаемся к роутеру
routerConnect();
//инициализация асинхронного веб сервера и веб сокетов //инициализация асинхронного веб сервера и веб сокетов
#ifdef ASYNC_WEB_SERVER #ifdef ASYNC_WEB_SERVER
asyncWebServerInit(); asyncWebServerInit();
#endif
#ifdef ASYNC_WEB_SOCKETS
asyncWebSocketsInit(); asyncWebSocketsInit();
#endif #endif
//инициализация стандартного веб сервера //инициализация стандартного веб сервера и веб сокетов
#ifdef STANDARD_WEB_SERVER #ifdef STANDARD_WEB_SERVER
standWebServerInit(); standWebServerInit();
standWebServerFiles();
#endif #endif
#ifdef STANDARD_WEB_SOCKETS #ifdef STANDARD_WEB_SOCKETS
standWebSocketsInit(); standWebSocketsInit();
#endif #endif
//подключаемся к роутеру //создаем объект класса выгружающего json массив из файла
routerConnect();
myStreamJsonArray = new StreamJsonArray; myStreamJsonArray = new StreamJsonArray;
//выводим остаток оперативной памяти после старта //выводим остаток оперативной памяти после старта

View File

@@ -2,26 +2,13 @@
#include "Utils/FileUtils.h" #include "Utils/FileUtils.h"
// depricated====================================================================== //================================================================================
String jsonReadStr(String& json, String name) { String jsonReadStrDoc(DynamicJsonDocument& doc, String name) {
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
DeserializationError error = deserializeJson(doc, json);
if (error) SerialPrint("EE", F("jsonRead"), error.f_str());
return doc[name].as<String>(); return doc[name].as<String>();
} }
boolean jsonReadBool(String& json, String name) { void jsonWriteStrDoc(DynamicJsonDocument& doc, String name, String value) {
DynamicJsonDocument doc(JSON_BUFFER_SIZE); doc[name] = value;
DeserializationError error = deserializeJson(doc, json);
if (error) SerialPrint("EE", F("jsonRead"), error.f_str());
return doc[name].as<bool>();
}
int jsonReadInt(String& json, String name) {
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
DeserializationError error = deserializeJson(doc, json);
if (error) SerialPrint("EE", F("jsonRead"), error.f_str());
return doc[name].as<int>();
} }
// new============================================================================== // new==============================================================================
@@ -69,6 +56,29 @@ bool jsonRead(String& json, String key, int& value) {
value = doc[key].as<int>(); value = doc[key].as<int>();
return ret; return ret;
} }
// depricated======================================================================
String jsonReadStr(String& json, String name) {
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
DeserializationError error = deserializeJson(doc, json);
if (error) SerialPrint("EE", F("jsonRead"), error.f_str());
return doc[name].as<String>();
}
boolean jsonReadBool(String& json, String name) {
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
DeserializationError error = deserializeJson(doc, json);
if (error) SerialPrint("EE", F("jsonRead"), error.f_str());
return doc[name].as<bool>();
}
int jsonReadInt(String& json, String name) {
DynamicJsonDocument doc(JSON_BUFFER_SIZE);
DeserializationError error = deserializeJson(doc, json);
if (error) SerialPrint("EE", F("jsonRead"), error.f_str());
return doc[name].as<int>();
}
// depricated======================================================================== // depricated========================================================================
String jsonWriteStr(String& json, String name, String value) { String jsonWriteStr(String& json, String name, String value) {
DynamicJsonDocument doc(JSON_BUFFER_SIZE); DynamicJsonDocument doc(JSON_BUFFER_SIZE);