перенос библиотеки сокетов в тело проекта

This commit is contained in:
Dmitry Borisenko
2022-10-07 18:30:51 +02:00
parent 7c4f983e51
commit dfa060895e
62 changed files with 8573 additions and 12 deletions

View File

@@ -72,7 +72,6 @@ void setup() {
Wire.setClock(i2cFreq);
#endif
}
//настраиваем микроконтроллер
configure("/config.json");

View File

@@ -220,6 +220,10 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
generateOrder(key, value);
SerialPrint("i", F("=>WS"), "Msg from svelte web, WS No: " + String(num) + ", msg: " + msg);
}
if (headerStr == "/test|") {
//sendBlobToWsStrHeader("/layout.json", "header", num, 1024);
}
} break;
case WStype_BIN: {
@@ -396,6 +400,44 @@ void publishChartToWs(String filename, int num, size_t frameSize, int maxCount,
}
}
// 6 4
// layout|0120|{status:12}|...from file...
// layout|0000|...from file...
// layout|0000|...from file...
void sendBlobToWsStrHeader(const String& filename, const String& header, uint8_t client_id, size_t frameSize) {
// откроем файл
auto path = filepath(filename);
auto file = FileFS.open(path, "r");
if (!file) {
SerialPrint("E", "FS", F("reed file error"));
return;
}
size_t totalSize = file.size();
SerialPrint("I", "FS", "Send file '" + String(filename) + "', file size: " + String(totalSize));
// размер заголовка
auto headerSize = header.length();
// выделим буфер размером с фрейм
auto frameBuf = new uint8_t[frameSize];
// заголовок у нас не меняется, запием его в начало буфера
header.toCharArray((char*)frameBuf, frameSize);
// указатель на начало полезной нагрузки
auto payloadBuf = &frameBuf[headerSize];
// и сколько осталось места для нее
auto maxPayloadSize = frameSize - headerSize;
while (file.available()) {
// прочитаем кусок в буфер
size_t payloadSize = file.read(payloadBuf, maxPayloadSize);
if (payloadSize) {
// отправим фрейм
standWebSocket.sendBIN(client_id, frameBuf, headerSize + payloadSize, true);
}
}
}
// void sendMark(const char* filename, const char* mark, uint8_t num) {
// char outChar[strlen(filename) + strlen(mark) + 1];
// strcpy(outChar, mark);

View File

@@ -102,11 +102,7 @@
},
"defActive": true,
"usedLibs": {
"esp32_4mb": [
"https://github.com/mandulaj/PZEM-004T-v30"
],
"esp8266_4mb": [
"https://github.com/mandulaj/PZEM-004T-v30"
]
"esp32_4mb": [],
"esp8266_4mb": []
}
}

View File

@@ -329,10 +329,10 @@ String createDataBaseSting() {
for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->getSubtype() == "LogingDaily") {
String id = (*it)->getID();
id = "/lgd/" + id + "/" + id + ".txt";
String fileContent = readFile(id, 10000);
String path = "/lgd/" + id + "/" + id + ".txt";
String fileContent = readFile(path, 10000);
if (fileContent == "failed") {
SerialPrint("i", "Export", "file not exist " + id);
SerialPrint("i", "Export", "file not exist " + path);
} else {
out += "=>" + fileContent + "\r\n";
}