Всех приветствую!
Я хочу сделать вебсервер на wemos d1 mini, который получает данные от ардуино и передаёт показания с датчиков на этот сайт, если что я уже узнал, что можно было сделать куда всё проще, но в силу обстоятельств эту вещь мне нужно доделать.
Описываю саму проблему: Я всё соединил через преобразователь логических уровней, подключил всё согласно схеме на рисунке, только датчик из неё исключён. Дописал к коду самого гайвера кусок с отправкой по serial нескольких строк, содержащих переменные с показателями датчиков. А дальше интересно, когда смотрю через ide показания с порта, то всё видно корректно, всё отправляется как нужно, но на самом сервере у меня появляются непонятные кракозябры вместо тех самых заветных показателей. я уже пробовал бороться с кодировкой, как только не менял саму веб страницу, но результат один ;(
Я хочу сделать вебсервер на 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("<", "<");
data.replace(">", ">");
return data;
}