#include <WiFi.h>
#include <WebServer.h>
// Настройки Wi-Fi
const char* ssid = "HOTBOX-149C"; // Имя вашей Wi-Fi сети
const char* password = "b4eeb4a8149c"; // Пароль от вашей Wi-Fi сети
// Создаем объект веб-сервера
WebServer server(80);
// Переменные для генерации данных
int _gtv1;
bool _gen1I = 0;
bool _gen1O = 0;
unsigned long _gen1P = 0UL;
long _strFunrand1 = 0L;
// Предварительное объявление функций
void handleRoot();
void handleData();
// HTML-страница с графиком
const char* htmlPage = R"=====(
<!DOCTYPE html>
<html>
<head>
<title>Real-Time Graph</title>
<script src="
https://cdn.jsdelivr.net/npm/chart.js"></script>
<style>
body {
margin: 0;
background-color: #0000FF; /* Синий фон */
color: #FFFFFF; /* Белый текст */
font-family: Arial, sans-serif;
}
#chartContainer {
width: 100vw;
height: 100vh;
}
</style>
</head>
<body>
<div id="chartContainer">
<canvas id="myChart"></canvas>
</div>
<script>
let ctx = document.getElementById('myChart').getContext('2d');
let chart = new Chart(ctx, {
type: 'line',
data: {
labels: [], // Временные метки
datasets: [{
label: 'Variable _gtv1',
data: [], // Данные
borderColor: '#FFFFFF', // Белая кривая
backgroundColor: 'rgba(255, 255, 255, 0.1)',
borderWidth: 2,
pointRadius: 0
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
x: {
grid: {
color: '#00FF00' // Зеленая сетка
},
ticks: {
color: '#FFFFFF' // Белый текст
}
},
y: {
grid: {
color: '#00FF00' // Зеленая сетка
},
ticks: {
color: '#FFFFFF' // Белый текст
}
}
}
}
});
// Функция для обновления данных
function fetchData() {
fetch('/data')
.then(response => response.json())
.then(data => {
if (chart.data.labels.length > 50) {
chart.data.labels.shift();
chart.data.datasets[0].data.shift();
}
chart.data.labels.push(new Date().toLocaleTimeString());
chart.data.datasets[0].data.push(data.value);
chart.update();
});
}
// Обновление данных каждую секунду
setInterval(fetchData, 1000);
</script>
</body>
</html>
)=====";
void setup() {
// Инициализация Serial для отладки
Serial.begin(115200);
// Подключение к Wi-Fi
WiFi.begin(ssid, password);
Serial.print("Подключение к Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nПодключено!");
// Запуск веб-сервера
server.on("/", handleRoot); // Обработчик для корневой страницы
server.on("/data", handleData); // Обработчик для данных
server.begin();
Serial.println("Веб-сервер запущен");
// Вывод IP-адреса ESP32
Serial.print("IP-адрес: ");
Serial.println(WiFi.localIP());
// Инициализация генератора случайных чисел
randomSeed(analogRead(36));
}
void loop() {
// Генерация данных
if (!(0)) {
if (!_gen1I) {
_gen1I = 1;
_gen1O = 1;
_gen1P = millis();
}
} else {
_gen1I = 0;
_gen1O = 0;
}
if (_gen1I) {
if (millis() - _gen1P >= 500) {
_gen1P = millis();
_gen1O = !_gen1O;
}
}
if (_gen1O) {
_strFunrand1 = random(0, 100);
}
_gtv1 = _strFunrand1;
// Обслуживание клиентов веб-сервера
server.handleClient();
}
// Обработчик корневой страницы
void handleRoot() {
server.send(200, "text/html", htmlPage);
}
// Обработчик для данных
void handleData() {
String json = "{\"value\":" + String(_gtv1) + "}";
server.send(200, "application/json", json);
}