Mestniy2496
Member
Спасибо вам большое - именно это я и имел ввиду. Не смею больше вас задерживать. Дальше я точно сам попробую доработать - стыдно перед вами.
Код:
#include <Arduino.h>
#include <ArduinoJson.h>
#ifdef ARDUINO_ARCH_ESP8266
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#define WebServerImpl ESP8266WebServer
#elif ARDUINO_ARCH_ESP32
#include <WiFi.h>
#include <WebServer.h>
#define WebServerImpl WebServer
#else
#error Unsupported architecture, use ARDUINO_ARCH_ESP8266 or ARDUINO_ARCH_ESP32
#endif
// Это ip адрес по которому будет доступен веб-сервер
IPAddress local_ip(192, 168, 4, 22);
// Это ip адрес шлюза, этот шлюз будут использовать wifi клиенты подключившиеся к точке доступа
IPAddress gateway (192, 168, 4, 9);
// Это маска подсети
IPAddress subnet (255, 255, 255, 0);
// Экземпляр веб-сервера
WebServerImpl server(80);
// Статические переменные, отправляемые на каждом get запросе в котором присутствует нужная url
int volume_value = 0;
boolean on_value = false;
long time_value = 0;
int value_time = 0;
int device_state = 0;
// Это обработчик для всех запросов GET POST и т.д.
void handle_not_found() {
// Предварительно установим код ответа
int response_code = 404;
// Обрабатываем только GET запросы, на все остальные отвечаем 404-м кодом
if (server.method() == HTTP_GET) {
if (server.uri().indexOf("/volume_increase") >= 0) {
// TODO Вот тут что то делаем, был запрошен /volume_increase
// Устанавливаем значение volume_value, чтоб как-то проинформировать
// что обрабатывался запрос /volume_increase
volume_value = valume_sound + 1 ;
// Устанавливаем код ответа
response_code = 200;
} else if (server.uri().indexOf("/volume_decrease") >= 0) {
// TODO
volume_value = valume_sound - 1 ;
response_code = 200;
} else if (server.uri().indexOf("/device_on") >= 0) {
// TODO
int device_state = 1
on_value = true;
response_code = 200;
} else if (server.uri().indexOf("/device_off") >= 0) {
int device_state = 0
on_value = false;
// TODO
response_code = 200;
} else if (server.uri().indexOf("/timer_increase") >= 0) {
// TODO
value_time = value_time + 10;
time_value = time_value + 10;
response_code = 200;
} else if (server.uri().indexOf("/timer_decrease") >= 0) {
// TODO
value_time = value_time - 10;
time_value = time_value - 10;
response_code = 200;
} else if (server.uri().indexOf("/state") >= 0) {
response_code = 200;
}
}
// Код ответа ответа был установлен отличным от 404, значит нужно ответить статусом
if (response_code != 404) {
// Строим json документ
StaticJsonDocument<256> doc;
// Устанавливаем значение "volume"
doc["volume"] = volume_value;
// Устанавливаем значение "on"
doc["on"] = on_value;
// Устанавливаем значение "time"
doc["time"] = time_value;
// Серилизуем json документ в строку
String output;
serializeJson(doc, output);
// Отправляем ответ
server.send(response_code, "application/json", output);
} else {
// Отправляем ответ
server.send(response_code, "text/plain", "File Not Found\n\n");
}
}
void setup() {
Serial.begin(115200);
// Инициализируем wifi
// Отключаем сохранение параметров во флеш
WiFi.persistent(false);
// Выключаем wifi совсем
WiFi.mode(WIFI_OFF);
// Устанавливаем параметры ip для интерфейса AP
WiFi.softAPConfig(local_ip, gateway, subnet);
// Выбираем режим работы wifi
WiFi.mode(WIFI_AP);
// Задаем идентификатор SSID
WiFi.softAP("MY-ESP");
// Настраиваем веб-сервер
// Устанавливаем обработчик для всех запросов, определять методы и запрошенные url будем в нем
server.onNotFound(handle_not_found);
// Запускаем сервер
server.begin();
}
void loop() {
// Даем серверу обрабатывать запросы
server.handleClient();
Serial.println("sound"+volume_value);
Serial.println("state"+device_state);
Serial.println("time"+value_time);
delay (1);
if (Serial.available() > 0) //если есть доступные данные
{
incomingByte = Serial.read();
}
}