Проблемы с кодировкой(?)

golubev41

✩✩✩✩✩✩✩
3 Мар 2023
4
0
Всех приветствую!
Я хочу сделать вебсервер на wemos d1 mini, который получает данные от ардуино и передаёт показания с датчиков на этот сайт, если что я уже узнал, что можно было сделать куда всё проще, но в силу обстоятельств эту вещь мне нужно доделать.
Описываю саму проблему: Я всё соединил через преобразователь логических уровней, подключил всё согласно схеме на рисунке, только датчик из неё исключён. Дописал к коду самого гайвера кусок с отправкой по serial нескольких строк, содержащих переменные с показателями датчиков. А дальше интересно, когда смотрю через ide показания с порта, то всё видно корректно, всё отправляется как нужно, но на самом сервере у меня появляются непонятные кракозябры вместо тех самых заветных показателей. я уже пробовал бороться с кодировкой, как только не менял саму веб страницу, но результат один ;(
Код сервера на вемос:
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>

const char* ssid = "Jeembo";
const char* password = "14882280";

AsyncWebServer server(8080);

String receivedData = "";

void setup() {
  Serial.begin(9600);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
 
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
 [ICODE][ICODE]ззззввввв[/ICODE][/ICODE]
  Serial.println("Connected to WiFi");

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    String html = "<!DOCTYPE html> <html>\n";
    html +="<head>";
    html += "<meta charset=\"UTF-8\">";
    html +="<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
    html +="<title>lolin Temperature Monitor</title>\n";
  html +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
  html +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
  html +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
  html +="</style>\n";
  html +="</head>\n";
  html += "<body>";
    html += "<h1>Received Data:</h1>";
    html += "<p>" + formatData(receivedData) + "</p>";
    html += "<button onclick=\"location.reload();\">Refresh</button>";
    html += "</body></html>";
    request->send(200, "text/html; charset=UTF-8", html);
  });
 
  server.begin();
}

void loop() {
  if (Serial.available()) {
    char c = Serial.read();
    if (c == '*') {
      // Если символ '*' получен, добавляем новую строку перед следующим текстом
      receivedData += "</br>";
    } else {
      // Иначе добавляем символ в полученные данные
      receivedData += c;
    }
  }
}

String formatData(String data) {
  // Функция форматирования данных для отображения в HTML
  // Заменяет символы '<' и '>' на их HTML-коды
  data.replace("<", "&lt;");
  data.replace(">", "&gt;");
  return data;
}






1684841459816.png1684841512694.png