Добавил библиотечные веб сокеты, проверенная версия.

This commit is contained in:
Dmitry Borisenko
2021-12-23 23:47:13 +01:00
parent 401aaa727e
commit a19a12c7d4
14 changed files with 93 additions and 61 deletions

View File

@@ -1,7 +0,0 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
]
}

View File

@@ -1,3 +0,0 @@
{
"C_Cpp.clang_format_sortIncludes": false
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -1,17 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width,initial-scale=1'>
<title>Svelte app</title>
<link rel='icon' type='image/png' href='/favicon.png'>
<link rel='stylesheet' href='/build/bundle.css'>
<script defer src='/build/bundle.js'></script>
</head>
<body>
</body>
</html>

View File

@@ -1,11 +0,0 @@
{
"name": "IoTmanager",
"apssid": "IoTmanager",
"appass": "",
"routerssid": "rise",
"routerpass": "hostel3333",
"timezone": 1,
"ntp": "pool.ntp.org",
"weblogin": "admin",
"webpass": "admin"
}

View File

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

View File

@@ -32,6 +32,11 @@
#endif #endif
#endif #endif
#ifdef STANDARD_WEB_SOCKETS
#include <WebSocketsServer.h>
#include <Hash.h>
#endif
#include <FS.h> #include <FS.h>
//внутренние глобальные директории проекта //внутренние глобальные директории проекта
@@ -39,7 +44,10 @@
#include "Utils/JsonUtils.h" #include "Utils/JsonUtils.h"
#include "Utils/SerialPrint.h" #include "Utils/SerialPrint.h"
//глобальные объекты классов /*********************************************************************************************************************
*****************************************глобальные объекты классов***************************************************
**********************************************************************************************************************/
extern TickerScheduler ts; extern TickerScheduler ts;
#ifdef ASYNC_WEB_SERVER #ifdef ASYNC_WEB_SERVER
extern AsyncWebServer server; extern AsyncWebServer server;
@@ -55,7 +63,13 @@ extern WebServer HTTP;
#endif #endif
#endif #endif
//глобальные переменные #ifdef STANDARD_WEB_SOCKETS
extern WebSocketsServer standWebSocket;
#endif
/*********************************************************************************************************************
***********************************************глобальные переменные**************************************************
**********************************************************************************************************************/
extern String settingsFlashJson; extern String settingsFlashJson;
extern String paramsFlashJson; extern String paramsFlashJson;
extern String paramsHeapJson; extern String paramsHeapJson;

View File

@@ -13,4 +13,9 @@ extern void handleFileDelete();
extern void handleFileCreate(); extern void handleFileCreate();
extern void handleFileList(); extern void handleFileList();
#endif #endif
#endif
#ifdef STANDARD_WEB_SOCKETS
extern void standWebSocketsInit();
extern void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length);
#endif #endif

View File

@@ -10,13 +10,14 @@
[platformio] [platformio]
default_envs = esp32_4mb default_envs = esp8266_4mb
data_dir = data_svelte data_dir = data_svelte
[common_env_data] [common_env_data]
lib_deps_external = lib_deps_external =
bblanchon/ArduinoJson @6.18.0 bblanchon/ArduinoJson @6.18.0
me-no-dev/ESP Async WebServer me-no-dev/ESP Async WebServer
Links2004/WebSockets
;lib_deps_internal = ;lib_deps_internal =

View File

@@ -1,6 +1,9 @@
#include "Global.h" #include "Global.h"
//глобальные объекты классов /*********************************************************************************************************************
*****************************************глобальные объекты классов***************************************************
**********************************************************************************************************************/
TickerScheduler ts(MYTEST + 1); TickerScheduler ts(MYTEST + 1);
#ifdef ASYNC_WEB_SERVER #ifdef ASYNC_WEB_SERVER
AsyncWebServer server(80); AsyncWebServer server(80);
@@ -16,7 +19,14 @@ WebServer HTTP(80);
#endif #endif
#endif #endif
//глобальные переменные #ifdef STANDARD_WEB_SOCKETS
WebSocketsServer standWebSocket = WebSocketsServer(81);
#endif
/*********************************************************************************************************************
***********************************************глобальные переменные**************************************************
**********************************************************************************************************************/
String settingsFlashJson = "{}"; //переменная в которой хранятся все настройки, находится в оперативной памяти и синхронизированна с flash памятью String settingsFlashJson = "{}"; //переменная в которой хранятся все настройки, находится в оперативной памяти и синхронизированна с flash памятью
String paramsFlashJson = "{}"; //переменная в которой хранятся все параметры, находится в оперативной памяти и синхронизированна с flash памятью String paramsFlashJson = "{}"; //переменная в которой хранятся все параметры, находится в оперативной памяти и синхронизированна с flash памятью
String paramsHeapJson = "{}"; //переменная в которой хранятся все параметры, находится в оперативной памяти только String paramsHeapJson = "{}"; //переменная в которой хранятся все параметры, находится в оперативной памяти только

View File

@@ -68,7 +68,7 @@ bool handleFileRead(String path) {
if (FileFS.exists(pathWithGz)) if (FileFS.exists(pathWithGz))
path += ".gz"; path += ".gz";
File file = FileFS.open(path, "r"); File file = FileFS.open(path, "r");
size_t sent = HTTP.streamFile(file, contentType); HTTP.streamFile(file, contentType);
file.close(); file.close();
return true; return true;
} }
@@ -181,3 +181,45 @@ void handleFileList() {
} }
#endif #endif
#endif #endif
#ifdef STANDARD_WEB_SOCKETS
void standWebSocketsInit() {
standWebSocket.begin();
standWebSocket.onEvent(webSocketEvent);
}
void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length) {
switch (type) {
case WStype_DISCONNECTED:
Serial.printf("[%u] Disconnected!\n", num);
break;
case WStype_CONNECTED: {
IPAddress ip = standWebSocket.remoteIP(num);
Serial.printf("[%u] Connected from %d.%d.%d.%d url: %s\n", num, ip[0], ip[1], ip[2], ip[3], payload);
// send message to client
standWebSocket.sendTXT(num, "Connected");
} break;
case WStype_TEXT:
Serial.printf("[%u] get Text: %s\n", num, payload);
// send message to client
// standWebSocket.sendTXT(num, "message here");
// send data to all connected clients
// standWebSocket.broadcastTXT("message here");
break;
case WStype_BIN:
Serial.printf("[%u] get binary length: %u\n", num, length);
hexdump(payload, length);
// send message to client
// standWebSocket.sendBIN(num, payload, length);
break;
}
}
#endif

View File

@@ -24,6 +24,10 @@ void setup() {
standWebServerFiles(); standWebServerFiles();
#endif #endif
#ifdef STANDARD_WEB_SOCKETS
standWebSocketsInit();
#endif
//подключаемся к роутеру //подключаемся к роутеру
routerConnect(); routerConnect();
@@ -48,4 +52,8 @@ void loop() {
#ifdef STANDARD_WEB_SERVER #ifdef STANDARD_WEB_SERVER
HTTP.handleClient(); HTTP.handleClient();
#endif #endif
#ifdef STANDARD_WEB_SOCKETS
standWebSocket.loop();
#endif
} }