ws started

This commit is contained in:
Dmitry Borisenko
2021-12-04 22:19:03 +01:00
parent eae59e3947
commit 2573e73b3a
5 changed files with 29 additions and 39 deletions

View File

@@ -55,7 +55,7 @@
#define DEVICE_SCENARIO_FILE "s.scen.txt" #define DEVICE_SCENARIO_FILE "s.scen.txt"
//#define OTA_UPDATES_ENABLED //#define OTA_UPDATES_ENABLED
//#define MDNS_ENABLED //#define MDNS_ENABLED
//#define WEBSOCKET_ENABLED #define WEBSOCKET_ENABLED
//#define LAYOUT_IN_RAM //#define LAYOUT_IN_RAM
//#define UDP_ENABLED //#define UDP_ENABLED
//#define SSDP_ENABLED //#define SSDP_ENABLED

View File

@@ -1,7 +1,7 @@
#pragma once #pragma once
#ifdef ESP8266 #ifdef ESP8266
#include <ESP8266WebServer.h> //#include <ESP8266WebServer.h>
#include <ESP8266httpUpdate.h> #include <ESP8266httpUpdate.h>
#include "ESPAsyncTCP.h" #include "ESPAsyncTCP.h"
#include "ESPAsyncWebServer.h" #include "ESPAsyncWebServer.h"

View File

@@ -1,8 +1,6 @@
#pragma once #pragma once
//===================Libraries=================================================================================================================================================== //===================Libraries===================================================================================================================================================
#include "Consts.h"
#include <Arduino.h> #include <Arduino.h>
#include "CTBot.h"
#include <ArduinoJson.h> #include <ArduinoJson.h>
#include <ArduinoOTA.h> #include <ArduinoOTA.h>
#include <PubSubClient.h> #include <PubSubClient.h>
@@ -10,13 +8,15 @@
#include <TickerScheduler.h> #include <TickerScheduler.h>
#include <Wire.h> #include <Wire.h>
#include <time.h> #include <time.h>
#include "CTBot.h"
#include "Clock.h" #include "Clock.h"
#include "Consts.h"
#include "ESP32.h" #include "ESP32.h"
#include "ESP8266.h" #include "ESP8266.h"
#include "GyverFilters.h" #include "GyverFilters.h"
#include "MqttClient.h" #include "MqttClient.h"
#include "Upgrade.h" #include "Upgrade.h"
#include "Utils/FileUtils.h" #include "Utils/FileUtils.h"
#include "Utils/JsonUtils.h" #include "Utils/JsonUtils.h"
#include "Utils/SerialPrint.h" #include "Utils/SerialPrint.h"
@@ -26,25 +26,20 @@
#ifdef WEBSOCKET_ENABLED #ifdef WEBSOCKET_ENABLED
extern AsyncWebSocket ws; extern AsyncWebSocket ws;
//extern AsyncEventSource events; extern AsyncEventSource events;
#endif #endif
extern TickerScheduler ts; extern TickerScheduler ts;
extern WiFiClient espClient; extern WiFiClient espClient;
extern PubSubClient mqtt; extern PubSubClient mqtt;
extern StringCommand sCmd; extern StringCommand sCmd;
extern AsyncWebServer server; extern AsyncWebServer server;
// Global vars
//Global vars
extern boolean just_load; extern boolean just_load;
extern boolean telegramInitBeen; extern boolean telegramInitBeen;
extern boolean savedFromWeb; extern boolean savedFromWeb;
// Json // Json
extern String configSetupJson; //все настройки extern String configSetupJson; //все настройки
extern String configLiveJson; //все данные с датчиков (связан с mqtt) extern String configLiveJson; //все данные с датчиков (связан с mqtt)
@@ -70,14 +65,14 @@ extern int mqttConnectAttempts;
extern bool changeBroker; extern bool changeBroker;
extern int currentBroker; extern int currentBroker;
//orders and events // orders and events
extern String orderBuf; extern String orderBuf;
extern String eventBuf; extern String eventBuf;
extern String mysensorBuf; extern String mysensorBuf;
extern String itemsFile; extern String itemsFile;
extern String itemsLine; extern String itemsLine;
//key lists and numbers // key lists and numbers
//========================================= //=========================================
extern String impuls_KeyList; extern String impuls_KeyList;
extern int impuls_EnterCounter; extern int impuls_EnterCounter;
@@ -101,12 +96,9 @@ extern String logging_KeyList;
extern int logging_EnterCounter; extern int logging_EnterCounter;
//========================================= //=========================================
extern String itemName; extern String itemName;
extern String presetName; extern String presetName;
extern int scenario_line_status[40]; extern int scenario_line_status[40];
extern int lastVersion; extern int lastVersion;
@@ -122,11 +114,11 @@ extern void servo_();
extern void setLedStatus(LedStatus_t); extern void setLedStatus(LedStatus_t);
//Scenario // Scenario
extern void eventGen2(String eventName, String eventValue); extern void eventGen2(String eventName, String eventValue);
extern String add_set(String param_name); extern String add_set(String param_name);
//Timers // Timers
extern void Timer_countdown_init(); extern void Timer_countdown_init();
extern void timerStart_(); extern void timerStart_();
extern void addTimer(String number, String time); extern void addTimer(String number, String time);
@@ -146,9 +138,9 @@ extern void createChart(String widget_name, String page_name, String page_number
extern void pushControl(); extern void pushControl();
// UDP // UDP
//extern void udpInit(); // extern void udpInit();
//extern void do_udp_data_parse(); // extern void do_udp_data_parse();
//extern void do_mqtt_send_settings_to_udp(); // extern void do_mqtt_send_settings_to_udp();
extern void do_update(); extern void do_update();

View File

@@ -1,12 +1,12 @@
#include "HttpServer.h"
#include "BufferExecute.h" #include "BufferExecute.h"
#include "FSEditor.h"
#include "HttpServer.h"
#include "Utils/FileUtils.h" #include "Utils/FileUtils.h"
#include "Utils/WebUtils.h" #include "Utils/WebUtils.h"
#include "FSEditor.h" AsyncWebSocket ws("/ws");
AsyncEventSource events("/events");
namespace HttpServer { namespace HttpServer {
/* Forward declaration */ /* Forward declaration */
void initOta(); void initOta();
void initMDNS(); void initMDNS();
@@ -34,17 +34,17 @@ void init() {
#endif #endif
server.onNotFound([](AsyncWebServerRequest *request) { server.onNotFound([](AsyncWebServerRequest *request) {
SerialPrint("[E]","WebServer","not found:\n" + getRequestInfo(request)); SerialPrint("[E]", "WebServer", "not found:\n" + getRequestInfo(request));
request->send(404); request->send(404);
}); });
server.onFileUpload([](AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final) { server.onFileUpload([](AsyncWebServerRequest *request, const String &filename, size_t index, uint8_t *data, size_t len, bool final) {
// TODO // TODO
if (!index) { if (!index) {
SerialPrint("I","WebServer","start upload " + filename); SerialPrint("I", "WebServer", "start upload " + filename);
} }
if (final) { if (final) {
SerialPrint("I","WebServer","finish upload: " + prettyBytes(index + len)); SerialPrint("I", "WebServer", "finish upload: " + prettyBytes(index + len));
} }
}); });
@@ -69,13 +69,11 @@ void init() {
server.on("/cmd", HTTP_GET, [](AsyncWebServerRequest *request) { server.on("/cmd", HTTP_GET, [](AsyncWebServerRequest *request) {
String cmdStr = request->getParam("command")->value(); String cmdStr = request->getParam("command")->value();
SerialPrint("I","WebServer","do: " + cmdStr); SerialPrint("I", "WebServer", "do: " + cmdStr);
loopCmdAdd(cmdStr); loopCmdAdd(cmdStr);
request->send(200, "text/html", "OK"); request->send(200, "text/html", "OK");
}); });
server.begin(); server.begin();
initOta(); initOta();
@@ -90,7 +88,7 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
if (type == WS_EVT_CONNECT) { if (type == WS_EVT_CONNECT) {
Serial.printf("ws[%s][%u] connect\n", server->url(), client->id()); Serial.printf("ws[%s][%u] connect\n", server->url(), client->id());
client->printf(json.c_str(), client->id()); client->printf(json.c_str(), client->id());
//client->ping(); // client->ping();
} else if (type == WS_EVT_DISCONNECT) { } else if (type == WS_EVT_DISCONNECT) {
Serial.printf("ws[%s][%u] disconnect\n", server->url(), client->id()); Serial.printf("ws[%s][%u] disconnect\n", server->url(), client->id());
} else if (type == WS_EVT_ERROR) { } else if (type == WS_EVT_ERROR) {
@@ -101,7 +99,7 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
AwsFrameInfo *info = (AwsFrameInfo *)arg; AwsFrameInfo *info = (AwsFrameInfo *)arg;
String msg = ""; String msg = "";
if (info->final && info->index == 0 && info->len == len) { if (info->final && info->index == 0 && info->len == len) {
//the whole message is in a single frame and we got all of it's data // the whole message is in a single frame and we got all of it's data
Serial.printf("ws[%s][%u] %s-message[%llu]: ", server->url(), client->id(), (info->opcode == WS_TEXT) ? "text" : "binary", info->len); Serial.printf("ws[%s][%u] %s-message[%llu]: ", server->url(), client->id(), (info->opcode == WS_TEXT) ? "text" : "binary", info->len);
if (info->opcode == WS_TEXT) { if (info->opcode == WS_TEXT) {
@@ -122,7 +120,7 @@ void onWsEvent(AsyncWebSocket *server, AsyncWebSocketClient *client, AwsEventTyp
else else
client->binary("{}"); client->binary("{}");
} else { } else {
//message is comprised of multiple frames or the frame is split into multiple packets // message is comprised of multiple frames or the frame is split into multiple packets
if (info->index == 0) { if (info->index == 0) {
if (info->num == 0) if (info->num == 0)
Serial.printf("ws[%s][%u] %s-message start\n", server->url(), client->id(), (info->message_opcode == WS_TEXT) ? "text" : "binary"); Serial.printf("ws[%s][%u] %s-message start\n", server->url(), client->id(), (info->message_opcode == WS_TEXT) ? "text" : "binary");

View File

@@ -79,13 +79,13 @@ void setup() {
getFSInfo(); getFSInfo();
//testsPerform(); // testsPerform();
just_load = false; just_load = false;
initialized = true; initialized = true;
const int capacity = JSON_OBJECT_SIZE(35); // const int capacity = JSON_OBJECT_SIZE(35);
SerialPrint("I", F("Test"), String(capacity)); // SerialPrint("I", F("Test"), String(capacity));
ts.add( ts.add(
MYTEST, 5000, [&](void*) { MYTEST, 5000, [&](void*) {