добавил новые 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
#include "Global.h"
#ifdef ASYNC_WEB_SERVER
void asyncWebServerInit();
#endif
#ifdef ASYNC_WEB_SOCKETS
extern AsyncWebSocket ws;
extern AsyncEventSource events;
void asyncWebServerInit();
void asyncWebSocketsInit();
void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventType type, void *arg, uint8_t *data, size_t len);
#endif

View File

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

View File

@@ -11,7 +11,6 @@
#include "WiFi.h"
#include <HTTPClient.h>
#include <HTTPUpdate.h>
#endif
#ifdef ESP8266
@@ -76,4 +75,8 @@ extern WebSocketsServer standWebSocket;
**********************************************************************************************************************/
extern String settingsFlashJson;
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
#include "Global.h"
#include "Web.h"
#ifdef STANDARD_WEB_SERVER
extern void standWebServerInit();
extern void standWebServerFiles();
extern bool handleFileRead(String path);
extern String getContentType(String filename);
#ifdef REST_FILE_OPERATIONS
extern void handleFileUpload();
extern void handleFileDelete();

View File

@@ -2,20 +2,23 @@
#include "Global.h"
String jsonReadStr(String& json, String name);
int jsonReadInt(String& json, String name);
boolean jsonReadBool(String& json, String name);
extern String jsonReadStrDoc(DynamicJsonDocument& doc, String name);
extern void jsonWriteStrDoc(DynamicJsonDocument& doc, String name, String value);
String jsonWriteStr(String& json, String name, String value);
String jsonWriteInt(String& json, String name, int value);
String jsonWriteFloat(String& json, String name, float value);
String jsonWriteBool(String& json, String name, boolean value);
extern String jsonWriteStr(String& json, String name, String value);
extern String jsonWriteInt(String& json, String name, int value);
extern String jsonWriteFloat(String& json, String name, float value);
extern String jsonWriteBool(String& json, String name, boolean value);
bool jsonRead(String& json, String key, String& value);
bool jsonRead(String& json, String key, bool& value);
bool jsonRead(String& json, String key, int& value);
extern bool jsonRead(String& json, String key, String& value);
extern bool jsonRead(String& json, String key, bool& value);
extern bool jsonRead(String& json, String key, int& value);
bool jsonWriteStr_(String& json, String name, String value);
bool jsonWriteBool_(String& json, String name, bool value);
bool jsonWriteInt_(String& json, String name, int value);
bool jsonWriteFloat_(String& json, String name, float value);
extern String jsonReadStr(String& json, String name);
extern int jsonReadInt(String& json, String name);
extern boolean jsonReadBool(String& json, String name);
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"
#ifdef ASYNC_WEB_SERVER
AsyncWebSocket ws("/ws");
AsyncEventSource events("/events");
void asyncWebServerInit() {
String login = jsonReadStr(settingsFlashJson, "weblogin");
@@ -70,6 +68,12 @@ void asyncWebServerInit() {
SerialPrint("i", F("WEB"), F("WebServer Init"));
}
#endif
#ifdef ASYNC_WEB_SOCKETS
AsyncWebSocket ws("/ws");
AsyncEventSource events("/events");
void asyncWebSocketsInit() {
ws.onEvent(onWsEvent);

View File

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

View File

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

View File

@@ -2,26 +2,13 @@
#include "Utils/FileUtils.h"
// 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());
//================================================================================
String jsonReadStrDoc(DynamicJsonDocument& doc, String name) {
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>();
void jsonWriteStrDoc(DynamicJsonDocument& doc, String name, String value) {
doc[name] = value;
}
// new==============================================================================
@@ -69,6 +56,29 @@ bool jsonRead(String& json, String key, int& value) {
value = doc[key].as<int>();
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========================================================================
String jsonWriteStr(String& json, String name, String value) {
DynamicJsonDocument doc(JSON_BUFFER_SIZE);